Imported Upstream version 3.3.1 98/138298/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 11 Jul 2017 23:46:30 +0000 (08:46 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Tue, 11 Jul 2017 23:46:33 +0000 (08:46 +0900)
Change-Id: I7e59d7cf82217b545ec40115122a83ebf79763cb
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
255 files changed:
AUTHORS
ChangeLog
ChangeLog.pre-2.18 [new file with mode: 0644]
INSTALL
Makefile.am
Makefile.in
NEWS
PKG-INFO
PKG-INFO.in
README
aclocal.m4
autogen.sh [deleted file]
compile
config.guess
config.h.in
config.sub
configure
configure.ac
depcomp
examples/Makefile.am
examples/Makefile.in
examples/cairo-demo.py
examples/option.py
examples/properties.py
examples/signal.py
gi/Makefile.am
gi/Makefile.in
gi/__init__.py
gi/_constants.py [deleted file]
gi/_error.py [deleted file]
gi/_glib/Makefile.am [new file with mode: 0644]
gi/_glib/Makefile.in [new file with mode: 0644]
gi/_glib/__init__.py [new file with mode: 0644]
gi/_glib/glibmodule.c [new file with mode: 0644]
gi/_glib/option.py [moved from gi/_option.py with 75% similarity]
gi/_glib/pygiochannel.c [new file with mode: 0644]
gi/_glib/pygiochannel.h [new file with mode: 0644]
gi/_glib/pyglib-private.h [new file with mode: 0644]
gi/_glib/pyglib-python-compat.h [moved from gi/pyglib-python-compat.h with 68% similarity]
gi/_glib/pyglib.c [new file with mode: 0644]
gi/_glib/pyglib.h [moved from gi/pyglib.h with 52% similarity]
gi/_glib/pygmaincontext.c [new file with mode: 0644]
gi/_glib/pygmaincontext.h [new file with mode: 0644]
gi/_glib/pygmainloop.c [new file with mode: 0644]
gi/_glib/pygmainloop.h [new file with mode: 0644]
gi/_glib/pygoptioncontext.c [moved from gi/pygoptioncontext.c with 95% similarity]
gi/_glib/pygoptioncontext.h [moved from gi/pygoptioncontext.h with 88% similarity]
gi/_glib/pygoptiongroup.c [moved from gi/pygoptiongroup.c with 93% similarity]
gi/_glib/pygoptiongroup.h [moved from gi/pygoptiongroup.h with 89% similarity]
gi/_glib/pygsource.c [new file with mode: 0644]
gi/_glib/pygsource.h [new file with mode: 0644]
gi/_glib/pygspawn.c [moved from gi/pygspawn.c with 86% similarity]
gi/_glib/pygspawn.h [moved from gi/pygspawn.h with 86% similarity]
gi/_gobject/Makefile.am [new file with mode: 0644]
gi/_gobject/Makefile.in [new file with mode: 0644]
gi/_gobject/__init__.py [new file with mode: 0644]
gi/_gobject/constants.py [new file with mode: 0644]
gi/_gobject/gobjectmodule.c [moved from gi/gobjectmodule.c with 64% similarity]
gi/_gobject/propertyhelper.py [new file with mode: 0644]
gi/_gobject/pygboxed.c [moved from gi/pygboxed.c with 71% similarity]
gi/_gobject/pygboxed.h [moved from gi/pygboxed.h with 63% similarity]
gi/_gobject/pygenum.c [moved from gi/pygenum.c with 78% similarity]
gi/_gobject/pygenum.h [new file with mode: 0644]
gi/_gobject/pygflags.c [moved from gi/pygflags.c with 79% similarity]
gi/_gobject/pygflags.h [new file with mode: 0644]
gi/_gobject/pyginterface.c [moved from gi/pyginterface.c with 94% similarity]
gi/_gobject/pyginterface.h [moved from gi/pyginterface.h with 89% similarity]
gi/_gobject/pygobject-private.h [new file with mode: 0644]
gi/_gobject/pygobject.c [moved from gi/pygobject-object.c with 75% similarity]
gi/_gobject/pygobject.h [moved from gi/pygobject.h with 92% similarity]
gi/_gobject/pygparamspec.c [moved from gi/pygparamspec.c with 59% similarity]
gi/_gobject/pygparamspec.h [moved from gi/pygparamspec.h with 87% similarity]
gi/_gobject/pygpointer.c [moved from gi/pygpointer.c with 86% similarity]
gi/_gobject/pygpointer.h [moved from gi/pygpointer.h with 71% similarity]
gi/_gobject/pygtype.c [moved from gi/pygtype.c with 62% similarity]
gi/_gobject/pygtype.h [new file with mode: 0644]
gi/_propertyhelper.py [deleted file]
gi/_signalhelper.py [deleted file]
gi/docstring.py [deleted file]
gi/gimodule.c
gi/gobjectmodule.h [deleted file]
gi/importer.py
gi/module.py
gi/overrides/GIMarshallingTests.py
gi/overrides/GLib.py
gi/overrides/GObject.py [deleted file]
gi/overrides/Gdk.py
gi/overrides/Gio.py
gi/overrides/Gtk.py
gi/overrides/Makefile.am
gi/overrides/Makefile.in
gi/overrides/Pango.py
gi/overrides/__init__.py
gi/overrides/keysyms.py
gi/pygenum.h [deleted file]
gi/pygflags.h [deleted file]
gi/pygi-argument.c
gi/pygi-argument.h
gi/pygi-array.c [deleted file]
gi/pygi-array.h [deleted file]
gi/pygi-basictype.c [deleted file]
gi/pygi-basictype.h [deleted file]
gi/pygi-boxed.c
gi/pygi-boxed.h
gi/pygi-cache.c
gi/pygi-cache.h
gi/pygi-callbacks.c [new file with mode: 0644]
gi/pygi-callbacks.h [new file with mode: 0644]
gi/pygi-ccallback.c
gi/pygi-ccallback.h
gi/pygi-closure.c
gi/pygi-closure.h
gi/pygi-enum-marshal.c [deleted file]
gi/pygi-enum-marshal.h [deleted file]
gi/pygi-error.c [deleted file]
gi/pygi-error.h [deleted file]
gi/pygi-foreign-api.h [deleted file]
gi/pygi-foreign-cairo.c
gi/pygi-foreign-gvariant.c [new file with mode: 0644]
gi/pygi-foreign-gvariant.h [moved from gi/pygi-source.h with 64% similarity]
gi/pygi-foreign.c
gi/pygi-foreign.h
gi/pygi-hashtable.c [deleted file]
gi/pygi-hashtable.h [deleted file]
gi/pygi-info.c
gi/pygi-info.h
gi/pygi-invoke-state-struct.h
gi/pygi-invoke.c
gi/pygi-invoke.h
gi/pygi-list.c [deleted file]
gi/pygi-list.h [deleted file]
gi/pygi-marshal-cleanup.c
gi/pygi-marshal-cleanup.h
gi/pygi-marshal-from-py.c [new file with mode: 0644]
gi/pygi-marshal-from-py.h [new file with mode: 0644]
gi/pygi-marshal-to-py.c [new file with mode: 0644]
gi/pygi-marshal-to-py.h [new file with mode: 0644]
gi/pygi-object.c [deleted file]
gi/pygi-object.h [deleted file]
gi/pygi-private.h [moved from gi/pygi-util.h with 60% similarity]
gi/pygi-property.c
gi/pygi-property.h
gi/pygi-repository.c
gi/pygi-repository.h
gi/pygi-resulttuple.c [deleted file]
gi/pygi-resulttuple.h [deleted file]
gi/pygi-signal-closure.c
gi/pygi-signal-closure.h
gi/pygi-source.c [deleted file]
gi/pygi-struct-marshal.c [deleted file]
gi/pygi-struct-marshal.h [deleted file]
gi/pygi-struct.c
gi/pygi-struct.h
gi/pygi-type.c
gi/pygi-type.h
gi/pygi-util.c [deleted file]
gi/pygi-value.c [deleted file]
gi/pygi-value.h [deleted file]
gi/pygi.h [new file with mode: 0644]
gi/pyglib.c [deleted file]
gi/pygobject-external.h [new file with mode: 0644]
gi/pygobject-internal.h [deleted file]
gi/pygobject-object.h [deleted file]
gi/pygtkcompat.py
gi/pygtype.h [deleted file]
gi/repository/Makefile.am
gi/repository/Makefile.in
gi/types.py
install-sh
ltmain.sh
m4/as-ac-expand.m4 [new file with mode: 0644]
m4/ax_append_compile_flags.m4 [deleted file]
m4/ax_append_flag.m4 [deleted file]
m4/ax_append_link_flags.m4 [deleted file]
m4/ax_check_compile_flag.m4 [deleted file]
m4/ax_check_link_flag.m4 [deleted file]
m4/ax_code_coverage.m4 [deleted file]
m4/ax_compiler_flags.m4 [deleted file]
m4/ax_compiler_flags_cflags.m4 [deleted file]
m4/ax_compiler_flags_gir.m4 [deleted file]
m4/ax_compiler_flags_ldflags.m4 [deleted file]
m4/ax_is_release.m4 [deleted file]
m4/ax_require_defined.m4 [deleted file]
m4/glib-2.0.m4 [deleted file]
m4/introspection.m4 [deleted file]
m4/jhflags.m4 [new file with mode: 0644]
m4/libtool.m4
m4/ltoptions.m4
m4/ltsugar.m4
m4/ltversion.m4
m4/lt~obsolete.m4
m4/pkg.m4 [deleted file]
m4/python.m4
missing
py-compile
pygi-convert.sh [deleted file]
pygobject-3.0-uninstalled.pc.in
pygobject.doap [deleted file]
pygtkcompat/Makefile.am [deleted file]
pygtkcompat/Makefile.in [deleted file]
pygtkcompat/__init__.py [deleted file]
pygtkcompat/generictreemodel.py [deleted file]
pygtkcompat/pygtkcompat.py [deleted file]
setup.py [deleted file]
tests/Makefile.am
tests/Makefile.in
tests/compat_test_pygtk.py [deleted file]
tests/compathelper.py
tests/gi/__init__.py [deleted file]
tests/gi/overrides/Regress.py [deleted file]
tests/gi/overrides/__init__.py [deleted file]
tests/gimarshallingtestsextra.c [deleted file]
tests/gimarshallingtestsextra.h [deleted file]
tests/helper.py [deleted file]
tests/org.gnome.test.gschema.xml
tests/runtests-windows.py [new file with mode: 0644]
tests/runtests.py
tests/test-thread.c
tests/test-unknown.c
tests/test_atoms.py
tests/test_cairo.py [deleted file]
tests/test_docstring.py [deleted file]
tests/test_error.py [deleted file]
tests/test_everything.py
tests/test_fields.py [deleted file]
tests/test_gdbus.py
tests/test_generictreemodel.py [deleted file]
tests/test_gi.py
tests/test_gio.py [deleted file]
tests/test_glib.py [deleted file]
tests/test_gobject.py
tests/test_gtype.py [deleted file]
tests/test_import_machinery.py [deleted file]
tests/test_interface.py
tests/test_internal_api.py [deleted file]
tests/test_iochannel.py [deleted file]
tests/test_mainloop.py
tests/test_object_marshaling.py [deleted file]
tests/test_option.py
tests/test_overrides.py [moved from tests/test_overrides_gtk.py with 53% similarity]
tests/test_overrides_gdk.py [deleted file]
tests/test_overrides_glib.py [deleted file]
tests/test_overrides_pango.py [deleted file]
tests/test_properties.py
tests/test_pygtkcompat.py [new file with mode: 0644]
tests/test_repository.py [deleted file]
tests/test_resulttuple.py [deleted file]
tests/test_signal.py
tests/test_source.py
tests/test_subprocess.py
tests/test_thread.py
tests/test_typeclass.py [deleted file]
tests/test_uris.py [new file with mode: 0644]
tests/testhelpermodule.c
tests/testmodule.py

diff --git a/AUTHORS b/AUTHORS
index 76b1091..4a37fe3 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,11 +1,8 @@
-Original Authors:
+Original Authors
 James Henstridge <james@daa.com.au>
 Johan Dahlin <johan@gnome.org>
 
-Current Maintainers:
-Ignacio Casal Quinteiro <icq@gnome.org>
-Martin Pitt <martinpitt@gnome.org>
-Paolo Borelli <pborelli@gnome.org>
-Sebastian Pölsterl <sebp@k-d-w.org>
-Simon Feltman <s.feltman@gmail.com>
-Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Current Maintainers
+Gustavo J A M Carneiro <gjc@gnome.org>
+Paul Pogonyshev <pogonyshev@gmx.net>
+Gian Mario Tagliaretti <gianmt@gnome.org>
index d228364..4e634c7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
-commit fc451f235754a98c647972f0a03e11eaefca4cef
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Wed Apr 19 15:04:30 2017 +0200
-
-    Bump pycairo requirement to 1.11.1
-
-    This requires pycairo from https://pycairo.readthedocs.io/en/latest/
-    (already updated/included in JHBuild)
-
-    For more info on the upstream change see:
-        https://lists.cairographics.org/archives/cairo/2017-April/027919.html
-        https://mail.gnome.org/archives/desktop-devel-list/2017-April/msg00065.html
-
-    This will enable cairo.Region support for all setups and Python
-    versions as well
-    as make moving to Python 3 easier for applications since all APIs
-    provided
-    under Python 2 are available there as well now.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707196
-
- configure.ac | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-commit 36e786e1a2305c001c8c067adfee9d731c2ec0fb
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Apr 20 09:43:50 2017 +0200
-
-    configure.ac: Always disable -Werror
-
-    Instead of disabling it for release builds do it always.
-    While JHBuild uses --disable-Werror by default, gnome-continuous
-    does not.
-
-    See
-    https://mail.gnome.org/archives/desktop-devel-list/2017-April/msg00009.html
-
- configure.ac | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit a2cb674334267e3eaeac5b2ce849c4a38cc1b428
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 9 18:48:33 2017 +0200
-
-    foreign-cairo: Enable cairo.Region support also on Python 2 if
-    available
-
-    The next pycairo version might add support for cairo_region_t.
-    This enables the converter functions also on Python 2 and makes
-    sure that the test suite does not crash in case it does.
-
- gi/pygi-foreign-cairo.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 3460081ed20b33b3a08c4fce5de135f1171f2ff0
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 15:51:25 2017 +0200
-
-    configure.ac: remove unused PLATFORM variable
-
-    This was added in 93e7d047e
-
- configure.ac | 3 ---
- 1 file changed, 3 deletions(-)
-
-commit 810392173ce20f8a7935966b46df483742e73f23
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 15:25:56 2017 +0200
-
-    configure.ac: Remove unused PySignal_SetWakeupFd check
-
-    HAVE_PYSIGNAL_SETWAKEUPFD isn't used anywhere
-
- configure.ac | 12 ------------
- 1 file changed, 12 deletions(-)
-
-commit 52693463749f045355a7ddeace033d369fe2e786
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 14:13:08 2017 +0200
-
-    tests: remove python 2.5/3.2 compat code
-
-    2.7/3.3 support the u/b prefixes and both have callable()
-
- gi/overrides/Gtk.py         |  4 +---
- tests/compathelper.py       | 40 ----------------------------------------
- tests/helper.py             |  2 +-
- tests/test_fields.py        |  6 ++----
- tests/test_gi.py            | 26 +++++++++-----------------
- tests/test_glib.py          | 12 +++++-------
- tests/test_iochannel.py     | 21 +++++++++------------
- tests/test_mainloop.py      |  4 +---
- tests/test_overrides_gtk.py | 13 ++++++-------
- tests/test_properties.py    | 29 ++++++++++++-----------------
- 10 files changed, 46 insertions(+), 111 deletions(-)
-
-commit 1039e9a512d1df35e9c4656b0b41c1e4a25aafad
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 14:04:39 2017 +0200
-
-    configure.ac: Require Python 3.3
-
-    At the time of the next release nothing will support 3.2 anymore.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e98558a6843b68115d68d3bc92dad271b74ef6d0
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 13:22:32 2017 +0200
-
-    tests: Make test suite run with GTK+ 4
-
-    Skip various tests which test things that are no longer available
-    with gtk4.
-    Does not remove any deprecated overrides.
-
-    Disable gtk4 support in pygtkcompat. The porting path over gtk3
-    should be enough.
-
- gi/overrides/Gdk.py         |   3 ++
- pygtkcompat/pygtkcompat.py  |   3 ++
- tests/compat_test_pygtk.py  |   4 +-
- tests/test_atoms.py         |   1 +
- tests/test_overrides_gdk.py |   7 +++
- tests/test_overrides_gtk.py | 107
- +++++++++++++++++++++++++++++++++-----------
- 6 files changed, 98 insertions(+), 27 deletions(-)
-
-commit c3159accf3faa2bd804ac22ec7ac93e62b158a3e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 13:17:36 2017 +0200
-
-    tests: always call require_version; add TEST_GTK_VERSION env var
-
-    Set the versions in runtests.py instead of repeating it in every
-    test module.
-
-    Add a new TEST_GTK_VERSION env var which defaults to "3.0".
-    Allows to run tests with gtk4 using "make check TEST_GTK_VERSION=4.0"
-
- tests/compat_test_pygtk.py    |  6 ------
- tests/runtests.py             | 26 ++++++++++++++++++++++++++
- tests/test_atoms.py           |  7 +++----
- tests/test_overrides_gtk.py   |  8 +++-----
- tests/test_overrides_pango.py |  7 +------
- tests/test_properties.py      |  6 +-----
- tests/test_repository.py      |  4 ----
- 7 files changed, 34 insertions(+), 30 deletions(-)
-
-commit c89fa35814103a4ceefece8e305af4f9e0dd6a37
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 10:57:34 2017 +0200
-
-    tests: Fix make check.valgrind
-
-    Got broken when we changed to use dbus-run-session. Move
-    valgrind related env vars before the dbus launcher helper.
-
-    This also tries to improve the lookup of the suppression file.
-    Instead of relying on the basename of the python binary use the python
-    major version to select one of two suppression files in the repo.
-
-    Add PYTHONMALLOC=malloc when running under valgrind, which makes
-    Python
-    use malloc instead of its own allocator. Only works with Python 3.6+.
-
- configure.ac                           |   5 +-
- tests/Makefile.am                      |  22 +-
- tests/{python2.7.supp => python2.supp} |   0
- tests/python3.3dm.supp                 | 471
- ---------------------------------
- tests/{python3.3.supp => python3.supp} |   0
- 5 files changed, 14 insertions(+), 484 deletions(-)
-
-commit 7c774ce5ce9ec5cda61e10a704b28f0b82df1b03
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 10:54:48 2017 +0200
-
-    tests: Don't skip Regress tests when cairo is missing
-
-    Since
-    https://git.gnome.org/browse/pygobject/commit/?id=a731db5908b79b97277be4f5138b46010c2dd616
-    we build libregress even if cairo is missing.
-
-    Instead of skipping regress tests when cairo is missing only skip
-    cairo relate
-    tests now.
-
- tests/test_cairo.py            |  3 +--
- tests/test_docstring.py        | 10 +++-------
- tests/test_everything.py       | 17 +----------------
- tests/test_import_machinery.py |  7 +------
- tests/test_properties.py       | 32 +++++++++++---------------------
- tests/test_repository.py       | 10 ----------
- tests/test_signal.py           | 15 +--------------
- 7 files changed, 18 insertions(+), 76 deletions(-)
-
-commit c2be3cbefbbacb52758b49338be61d093a896d09
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Apr 2 10:52:41 2017 +0200
-
-    tests: fix invalid regex escaping
-
-    Python 3.6 got stricter here and raises warnings/errors for invalid
-    escape
-    sequences.
-
- tests/helper.py  |  4 ++--
- tests/test_gi.py | 24 ++++++++++++------------
- 2 files changed, 14 insertions(+), 14 deletions(-)
-
-commit b7d504c3ef689a79448c9f6597ae59153a77104f
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 18:11:46 2017 +0200
-
-    tests: avoid mapping a GtkWindow
-
-    This let to a window being shown when running the test suite.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780812
-
- tests/test_overrides_gdk.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit a2b3d846fab3a4b660eefbe3555933afe6d9c90a
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 18:06:47 2017 +0200
-
-    tests: silence some glib deprecation warnings
-
-    These functions were deprecated in the last few cycles.
-    This hides the warnings when running the test suite.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780812
-
- tests/test_atoms.py         | 7 +++++--
- tests/test_overrides_gtk.py | 6 ++++--
- 2 files changed, 9 insertions(+), 4 deletions(-)
-
-commit ed488be1f0bcd2d2ec1acf98f27585d8577ddc5f
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 18:05:13 2017 +0200
-
-    tests: avoid deprecation warnings for
-    assertRegexpMatches/assertRaisesRegexp
-
-    Replace them with the renamed variants. We can't switch because
-    there is
-    no non-deprecated variant available under both Python 2 and 3.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780812
-
- tests/runtests.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit c39bf20cca3d1c6bcf89f93759772117d087b042
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 17:49:01 2017 +0200
-
-    pygi-source: clear exceptions in finalize handler
-
-    This was executed in the context of Source.__del__ and while Python
-    ignores errors there it started to warn with Python 3.
-
-    This fixes the warnings visible when running test_source under
-    Python 3.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780812
-
- gi/pygi-source.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit d806a120998e9b38e96d02ab05d28051a441db61
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 17:48:38 2017 +0200
-
-    Fix pep8 errors
-
- gi/_option.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b2529624b3925adbef2671025e08cbf747f162e8
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 10:14:22 2017 +0200
-
-    Remove gi._gi._gobject and gi._gobject modules
-
-    Expose everything from _gi._gobject in _gi instead.
-    This does not move any code around, just removes the module.
-
-    Also removes the gi._gobject package and replaces it
-    with a small dummy module in gi.__init__.py
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735206
-
- configure.ac            |  1 -
- gi/Makefile.am          |  3 +-
- gi/__init__.py          |  9 ++++--
- gi/_constants.py        | 52 +++++++++++++++----------------
- gi/_gobject/Makefile.am | 16 ----------
- gi/_gobject/__init__.py | 23 --------------
- gi/_propertyhelper.py   | 47 ++++++++++++++--------------
- gi/_signalhelper.py     |  6 ++--
- gi/gimodule.c           | 48 ++++++++++++++++++++++-------
- gi/gobjectmodule.c      | 82
- +++++++++++--------------------------------------
- gi/gobjectmodule.h      | 21 +++++++++++++
- gi/module.py            |  6 ++--
- gi/overrides/GLib.py    |  3 +-
- gi/overrides/GObject.py | 82
- ++++++++++++++++++++++++-------------------------
- gi/pygi-value.c         |  2 +-
- gi/pygobject-object.c   | 12 ++++----
- gi/types.py             | 13 ++++----
- tests/helper.py         |  4 +--
- tests/test_gi.py        |  2 +-
- tests/test_gobject.py   |  8 ++---
- 20 files changed, 199 insertions(+), 241 deletions(-)
-
-commit bdfafd2bdc84d961bd2df43d8dee690177c77a56
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 07:39:22 2017 +0200
-
-    Remove gi._gi._glib module
-
-    Move the code into gi._gi (gimodule)
-    The module was a leftover from
-    https://bugzilla.gnome.org/show_bug.cgi?id=712197
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735206
-
- gi/Makefile.am        |  1 -
- gi/_option.py         | 12 +++++------
- gi/gimodule.c         | 31 +++++++++++++++-------------
- gi/glibmodule.c       | 56
- ---------------------------------------------------
- gi/overrides/GLib.py  | 10 ++++-----
- gi/pygoptioncontext.c |  4 ++--
- gi/pygoptiongroup.c   |  4 ++--
- gi/pygspawn.c         | 14 ++++++-------
- 8 files changed, 39 insertions(+), 93 deletions(-)
-
-commit 4ad6899bdca6fbd0fb7e88cd16b49367f7f41267
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 06:41:19 2017 +0200
-
-    GValue: add overflow checking for py -> gint; forward marshaling
-    exceptions
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=769789
-
- gi/pygi-struct-marshal.c |  3 +--
- gi/pygi-value.c          | 11 ++++++++++-
- tests/test_gi.py         |  7 ++++++-
- 3 files changed, 17 insertions(+), 4 deletions(-)
-
-commit 052cea9e2b6e599e52435df3155d8de22500e0f4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Mar 26 19:34:00 2017 +0200
-
-    pygobject_lookup_class: clear exceptions between calls and don't
-    return with one set
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=773394
-
- gi/pygobject-object.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit 271e94b4e4cc9a9619015ef76880346ad7962ac4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Apr 1 10:15:00 2017 +0200
-
-    Avoid some new deprecation warnings
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780768
-
- gi/gobjectmodule.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit 81625ce4c0164dcb3409471fc38168147af4026a
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Mar 26 16:23:25 2017 +0200
-
-    Raise RuntimeError in case an uninitilialized GObject.Object is
-    marshaled
-
-    One common case where this can happen is when subclassing a
-    GObject.Object
-    without chaining up __init__ and then calling a method.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=730908
-
- gi/pygi-object.c      | 6 ++++++
- tests/test_gobject.py | 6 ++++++
- 2 files changed, 12 insertions(+)
-
-commit b23dea0981ab5718cb26d3a9f4f7bf8f593ac343
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Mar 26 19:11:33 2017 +0200
-
-    closure: support unichar args
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=759276
-
- gi/pygi-closure.c           |  3 +++
- tests/test_overrides_gtk.py | 14 ++++++++++++++
- 2 files changed, 17 insertions(+)
-
-commit d6e46f778ea2bfede89f4fe2422b80998ed7fec8
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Jun 3 15:51:37 2016 +0200
-
-    Add support for bytes and non-utf-8 file names.
-
-    Py2+Unix: Convert unicode to bytes using the fsencoding. Pass bytes
-    as is.
-    Returns path as bytes as is.
-
-    Py2+Windows: Convert unicode to wtf-8. Pass bytes as is.
-    Returns path as bytes as is.
-
-    Py3+Unix: Convert str using os.fsencode so that the surrogateescape
-    handler
-    can restore the real path if the source was a Python API such as
-    os.listdir
-    sys.argv etc. Pass bytes as is. Return str decoded using os.fsdecode
-    so that
-    it can be passed to Python API such as open, os.listdir etc.
-
-    Py3+Windows: Convert str to wtf-8. Decode bytes using the fsencoding
-    first.
-    Returns str + surrogates.
-
-    This change makes anyting taking filenames on Python 3 behave the same
-    as Python functions like listdir() or open(). Compared to Python
-    3 builtin
-    functions which return the same type that was passed in we always
-    return str.
-
-    One remaining problem is that glib assumes that Windows paths
-    are utf-16,
-    while they are just 16bit arrays and as a result utf-8 is not
-    enough to
-    represent all possible paths. We use wtf-8 here instead (utf-8 with
-    lone surrogates),
-    which allows us to convert all paths, but glib functions accessing
-    the fs
-    will fail with them.
-
-    PyUnicode_EncodeFSDefault was added in CPython 3.2 so bump the
-    requirement.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=746564
-
- configure.ac                    |   2 +-
- gi/pygi-basictype.c             | 186
- ++++++++++++++++++++++++++++++++--------
- gi/pyglib-python-compat.h       |   2 +
- tests/compathelper.py           |   4 +
- tests/gimarshallingtestsextra.c |  14 +++
- tests/gimarshallingtestsextra.h |   1 +
- tests/test_gi.py                | 152 +++++++++++++++++++++++++++++++-
- 7 files changed, 320 insertions(+), 41 deletions(-)
-
-commit 33a44c7653030da0a1de76ff8241e40e66d04701
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 15:53:13 2017 +0200
-
-    test_gi: use correct min/max constants for gsize/gssize
-
-    This made these tests on 64bit Windows fail because sizeof(gsize)
-    != sizeof(glong)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780591
-
- tests/test_gi.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit b993e4dc73af976e8140661d2b6e9f745206808e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 14:55:22 2017 +0200
-
-    Don't use long format string for formatting pointers
-
-    long is too small on 64bit Windows
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780591
-
- gi/pygpointer.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-commit d031e1700816836366989ece0eda486c77543c3b
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 14:48:08 2017 +0200
-
-    Fix conversion from pointers to hashfunc return values.
-
-    Fixes comiler warnings on 64bit Windows.
-
-    Python 3 now uses Py_hash_t as return value for hashfunc. Use
-    a compat define so we can use the right type depending on the
-    Python version.
-
-    On Python 2 + 64bit Windows the pointer doesn't fit the long
-    return type. Add a macro which handles the casting for that case
-    to prevent compiler warnings.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780591
-
- gi/pygboxed.c             | 4 ++--
- gi/pyglib-python-compat.h | 6 ++++++
- gi/pygobject-object.c     | 4 ++--
- gi/pygparamspec.c         | 4 ++--
- gi/pygpointer.c           | 4 ++--
- 5 files changed, 14 insertions(+), 8 deletions(-)
-
-commit d2a7e9a7b29e74fd97592fcc8462d718d0b7af17
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 14:47:22 2017 +0200
-
-    Fix PyLong <-> GPid conversion on 64bit Windows
-
-    GPid on Windows is a pointer and not int, and pointers don't fit long
-    on 64bit so use PyLong_AsVoidPtr/PyLong_FromVoidPtr there instead.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780591
-
- gi/pygspawn.c | 26 +++++++++++++++++++++-----
- 1 file changed, 21 insertions(+), 5 deletions(-)
-
-commit cfeeaaf69f6d6f777e5f3a17493ff9dcc2bda900
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 28 17:58:54 2017 +0200
-
-    property: support setting flags
-
-    This also adds some tests for setting flags and enum properties
-    which depend on some properties being added in g-i's
-    gimarshallingtests:
-        https://bugzilla.gnome.org/show_bug.cgi?id=780652
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726484
-
- gi/pygi-property.c       |  3 +++
- tests/test_properties.py | 34 ++++++++++++++++++++++++++++++++++
- 2 files changed, 37 insertions(+)
-
-commit 44a51ddd6418f8fa85df5803b8288974bcf20bc2
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Mar 23 15:49:18 2017 +0100
-
-    overrides: warn on instantiation of Gio.VolumeMonitor
-
-    Gio.VolumeMonitor.get() should be used instead
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=744690
-
- gi/overrides/Gio.py | 19 +++++++++++++++++++
- tests/test_gio.py   | 11 +++++++++++
- 2 files changed, 30 insertions(+)
-
-commit 275a92cb7fe530efe83349b3c7da557f22096fc0
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 19:19:33 2017 +0100
-
-    Remove gi.overrides.overridefunc
-
-    Move the code into override()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686835
-
- gi/overrides/__init__.py | 32 ++++++++++++++++----------------
- 1 file changed, 16 insertions(+), 16 deletions(-)
-
-commit f47027d6abde392fff03ce9b49e42a0c6f7d83cd
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 12:48:27 2017 +0100
-
-    tests: Reduce usage of timeout_add() and sleep()
-
-    * Instead of waiting for a fixed time, use a timeout and stop the main
-      loop right after the test has succeeded.
-    * Replace time.sleep to sync processes with os.pipe communication
-    * Chain idle sources instead of using multiple timeout sources
-    * Replace sleeps with unbufferd communication
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698548
-
- tests/test_glib.py          | 37 ++++++++++++-------
- tests/test_iochannel.py     | 86
- +++++++++++++++++++++++++++++++++------------
- tests/test_mainloop.py      | 13 +++++--
- tests/test_overrides_gtk.py |  4 +--
- tests/test_source.py        | 10 +++---
- tests/test_thread.py        |  6 +++-
- 6 files changed, 111 insertions(+), 45 deletions(-)
-
-commit ab574b6c40b6e58f396c9522be864a78478617c1
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 12:43:33 2017 +0100
-
-    tests: Remove TestMainLoop.test_concurrency
-
-    The code containing the bug no longer exists and the test doesn't do
-    what it says. The thread never gets terminated and it doesn't
-    assert anything. And I'm not sure what it should assert.
-
-    For the corresponding bug see
-        https://bugzilla.gnome.org/show_bug.cgi?id=663068
-
-    While the test doesn't hurt, it adds half a second wait time
-    to the test suite.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698548
-
- tests/test_mainloop.py | 27 ---------------------------
- 1 file changed, 27 deletions(-)
-
-commit 4da4a1d5c55a5db060bf3f67b708da0a00e3e957
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 27 16:22:12 2017 +0200
-
-    Update .gitignore: add *.dll, *.dylib, .DS_STORE
-
- .gitignore | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 30228a98299eeb540fd014b9519a9efd4a434d4b
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Thu Mar 23 17:59:55 2017 +0100
-
-    tests: Make test suite run on Windows
-
-    (in a msys2 environment)
-
-    * Replace LD_LIBRARY_PATH with gir code in runtests.py
-    * Remove unneeded runtests-windows.py
-    * Unset MSYSTEM to disable path separator hacks by msys2
-    * Set sys.path in runtests.py
-    * Skip various tests failing/hanging/crashing on Windows
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780396
-
- tests/Makefile.am           |  9 +++-----
- tests/compat_test_pygtk.py  |  4 +++-
- tests/runtests-windows.py   | 52
- ---------------------------------------------
- tests/runtests.py           | 13 ++++++++++--
- tests/test_atoms.py         |  4 +++-
- tests/test_everything.py    |  2 +-
- tests/test_gi.py            |  7 +++---
- tests/test_gio.py           |  3 +++
- tests/test_glib.py          | 15 +++++++++----
- tests/test_iochannel.py     | 17 ++++++++++++++-
- tests/test_mainloop.py      |  4 ++++
- tests/test_overrides_gdk.py |  3 ++-
- tests/test_properties.py    |  9 +++++---
- tests/test_subprocess.py    |  1 +
- 14 files changed, 68 insertions(+), 75 deletions(-)
-
-commit 23deef70102657e75e07e54b4378c20214c867f3
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Wed Mar 22 14:07:49 2017 +0100
-
-    tests: Make test suite run on macOS
-
-    * Skip all tests which fail, crash or hang.
-    * Disable D-Bus in case dbus-run-session is not available.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780396
-
- tests/Makefile.am           | 10 +++++++---
- tests/runtests.py           |  3 +++
- tests/test_atoms.py         |  3 +++
- tests/test_gdbus.py         |  9 +++++++++
- tests/test_gi.py            |  4 ++++
- tests/test_glib.py          |  2 ++
- tests/test_overrides_gdk.py |  3 +++
- tests/test_overrides_gtk.py |  2 ++
- tests/test_source.py        |  3 +++
- 9 files changed, 36 insertions(+), 3 deletions(-)
-
-commit 5399bb785e625c36025d6bc1e5cf2b5519759d0d
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Wed Mar 22 19:24:22 2017 +0100
-
-    Fix various compiler warnings for 32bit builds
-
-    Due to the switch to AX_COMPILER_FLAGS which adds some more
-    warning flags. I didn't notice these as they only get triggered
-    on 32bit builds. Tested with gcc 6.3 and clang 3.9.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=780409
-
- gi/gimodule.c             | 1 +
- gi/pygboxed.c             | 1 +
- gi/pygenum.c              | 2 +-
- gi/pygi-argument.c        | 2 ++
- gi/pygi-array.c           | 4 ++--
- gi/pygi-cache.c           | 6 +++---
- gi/pygi-closure.c         | 4 ++--
- gi/pygi-foreign-cairo.c   | 2 +-
- gi/pygi-invoke.c          | 8 ++++----
- gi/pygi-marshal-cleanup.c | 4 ++--
- gi/pygi-signal-closure.h  | 1 +
- gi/pygi-util.h            | 1 +
- gi/pygi-value.h           | 2 +-
- gi/pygobject-object.c     | 4 ++--
- gi/pygtype.h              | 2 +-
- 15 files changed, 25 insertions(+), 19 deletions(-)
-
-commit 29d07d6e659a518f4e0a7f53eba3dc1d9ba33c3a
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Mar 24 08:25:48 2017 +0100
-
-    pep8 fix
-
- gi/overrides/Gdk.py | 1 -
- 1 file changed, 1 deletion(-)
-
-commit b0476e2db4577e12b52caa3163ccb69575221d6c
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Mar 23 22:32:23 2017 +0100
-
-    testhelper: only link against libpython on Windows
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=773803
-
- configure.ac      |  6 +++---
- tests/Makefile.am | 11 ++++++++++-
- 2 files changed, 13 insertions(+), 4 deletions(-)
-
-commit e8c071f518a0e1c3e1877705291d24f056bed77e
-Author: Garrett Regier <garrettregier@gmail.com>
-Date:   Thu Oct 13 15:00:52 2016 -0700
-
-    overrides: Fix Gtk.TextBuffer.insert_with_tags_by_name() with no tags
-
-    The text was not inserted when no tags were provided.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=772896
-
- gi/overrides/Gtk.py         |  3 ---
- tests/test_overrides_gtk.py | 12 ++++++++++++
- 2 files changed, 12 insertions(+), 3 deletions(-)
-
-commit fb0404c0bf08dedf657ce1384b283223b7192df1
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 14:03:47 2017 +0100
-
-    Make use of instance-argument annotations
-
-    Use g_callable_info_get_instance_ownership_transfer() instead
-    of hardcoding the transfer for instances.
-
-    get_instance_ownership_transfer() is available since 1.42.0, so no
-    version dependency bump is required.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735076
-
- gi/pygi-cache.c          | 4 +++-
- tests/test_everything.py | 9 +++++++++
- 2 files changed, 12 insertions(+), 1 deletion(-)
-
-commit c1ad1129b42c7938662422bb33990026572866d0
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 20:23:13 2017 +0100
-
-    Remove pyglib_gil_state_ensure/pyglib_gil_state_release
-
-    Use PyGILState_Ensure/PyGILState_Release instead.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699440
-
- gi/gobjectmodule.c       | 40 ++++++++++++++++++++--------------------
- gi/pygboxed.c            | 14 +++++++-------
- gi/pygenum.c             |  6 +++---
- gi/pygflags.c            |  6 +++---
- gi/pygi-error.c          |  8 ++++----
- gi/pygi-source.c         | 16 ++++++++--------
- gi/pyglib.c              |  8 ++++----
- gi/pyglib.h              |  3 ---
- gi/pygobject-object.c    | 36 ++++++++++++++++++------------------
- gi/pygoptiongroup.c      |  9 ++++-----
- gi/pygpointer.c          |  6 +++---
- gi/pygspawn.c            |  4 ++--
- gi/pygtype.c             | 18 +++++++++---------
- tests/testhelpermodule.c | 12 ++++++------
- 14 files changed, 91 insertions(+), 95 deletions(-)
-
-commit 16e187636d186d4c128288efb032c5ddd69569b3
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 20:05:08 2017 +0100
-
-    Remove support for building without threads
-
-    This removes the --disable-thread configure option.
-
-    * glib removed disable-threads in 2011
-    * We use PyEval_InitThreads() for some time now which means we
-      build against a Python with threads. And nobody complained.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699440
-
- configure.ac       | 24 ------------------------
- gi/gobjectmodule.c |  7 +------
- gi/pyglib.h        |  9 ++-------
- gi/pygobject.h     | 19 +++++--------------
- 4 files changed, 8 insertions(+), 51 deletions(-)
-
-commit 20220d5eac510e3445a96e4e9061fd1bc6ec37c7
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Mar 21 14:46:00 2017 +0100
-
-    pygtkcompat: Allow multiple calls to enable(), enable_gtk() as long
-    as the version matches
-
-    enable_gtk() isn't idempotent and was breaking the API when called
-    multiple times.
-    This ignores the call in case the version passed is the same as for
-    previous calls.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=759009
-
- pygtkcompat/pygtkcompat.py | 42
- ++++++++++++++++++++++++++++++++++++++++++
- tests/compat_test_pygtk.py | 21 +++++++++++++++++++++
- 2 files changed, 63 insertions(+)
-
-commit 4af42e85a1959cbae06a1bbb7268c76890b60db9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 22 23:02:22 2016 -0800
-
-    tests: Update Makefile for building tests on OS X
-
-    Pull LDFLAGS into variables for command and Python extension specific.
-    Use -shext .so for the Python extension on both Linux and OS X. The
-    .so is
-    is needed by Python on OS X (not dylib).
-    Remove "all" target and explicit .la targets as these are handled
-    by automake
-    and the "check" target on demand.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=762176
-
- tests/Makefile.am | 56
- +++++++++++++++++++++++++++++--------------------------
- 1 file changed, 30 insertions(+), 26 deletions(-)
-
-commit 3fe9213a3886ffa7a380dc08c5d636cda5865462
-Author: Mikhail Fludkov <misha@pexip.com>
-Date:   Fri Feb 19 16:27:53 2016 +0100
-
-    testhelper: propagate exception if _gobject could not be imported
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=772949
-
- tests/testhelpermodule.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-commit 399939b55860211e0ab64bdfbfada2c86be8bf64
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 20 18:11:21 2017 +0100
-
-    pygi-info: initialize GIArgument before passing it to
-    g_constant_info_get_value
-
-    Co-Authored-By: Mikhail Fludkov <misha@pexip.com>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=772949
-
- gi/pygi-info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a731db5908b79b97277be4f5138b46010c2dd616
-Author: Mikhail Fludkov <misha@pexip.com>
-Date:   Fri Oct 14 18:41:48 2016 +0200
-
-    tests: build libregress with disabled cairo
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=772949
-
- tests/Makefile.am | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-commit 2c329edb870787be1db4d5ecafdf221bead8b271
-Author: Mikhail Fludkov <misha@pexip.com>
-Date:   Fri Oct 14 18:36:21 2016 +0200
-
-    tests: use g-ir utils found by pkg-config
-
-    Use g-ir utils found by pkg-config to not fail if
-    gobject-introspection is not installed systemwide
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=772949
-
- tests/Makefile.am | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 7a3e4c005a6677ed7bf3ef807cd1a8487b0465de
-Author: Shyouzou Sugitani <shy@users.sourceforge.jp>
-Date:   Mon Jun 6 12:26:44 2016 +0200
-
-    Add a foreign type for cairo_region_t.
-
-    Based on the patch at
-        https://bugzilla.gnome.org/show_bug.cgi?id=667959#c7
-
-    * Rebased on master
-    * Fixes the cairo_region_from_arg signature
-    * Add check for pycairo region support (only in pycairo master)
-    * Add some tests
-
-    Co-Authored-By: Martin Pitt <martin.pitt@ubuntu.com>
-    Co-Authored-By: Christoph Reiter <creiter@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=667959
-
- gi/pygi-foreign-cairo.c | 51
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_cairo.py     | 28 +++++++++++++++++++++++++--
- 2 files changed, 77 insertions(+), 2 deletions(-)
-
-commit bb5aa249f1ab6be81f88fdcfb56cee8b3ae2465d
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Jan 24 21:17:07 2017 +0100
-
-    aclocal: make local file discover by reading AC_CONFIG_MACRO_DIR work
-
-    aclocal needs to know where the local macros are for including
-    them and
-    for having a place to put the required system ones in.
-
-    Since 1.13 it can parse configure.ac and get the path from
-    AC_CONFIG_MACRO_DIR.
-    This didn't work because for some reasons it complains if the
-    local macros
-    start with "AM_" even if they are there (I guess it assumes they
-    can't be local).
-
-    To work around that, change the AM prefix to PYG, bump the automake
-    version so
-    we can asume aclocal finds it and remove the hardcoded paths from both
-    autogen.sh and Makefile.am.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777713
-
- Makefile.am  |  2 --
- autogen.sh   |  2 +-
- configure.ac | 12 +++++-------
- m4/python.m4 | 12 ++++++------
- 4 files changed, 12 insertions(+), 16 deletions(-)
-
-commit 8578ed7e9fd0486fd10e71d24f2e9f969793af8d
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Jan 24 18:58:48 2017 +0100
-
-    Port from gnome-common to autoconf-archive
-
-    See https://wiki.gnome.org/Projects/GnomeCommon/Migration
-
-    Visible changes:
-
-    * --enable-compile-warnings is now [no/auto/yes] instead of
-      [no/minimum/yes/maximum/error]
-    * warnings are errors by default except for releases or if
-      --disable-Werror is passed (which is the default in jhbuild)
-
-    AX_APPEND_COMPILE_FLAGS() gets used to disable some warnings
-    enabled by
-    AX_COMPILER_FLAGS() because they trigger with pycairo/python headers.
-
-    Tested with gcc 6.3, clang 3.8.1
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777713
-
- .gitignore              |  3 +++
- Makefile.am             |  8 +++-----
- autogen.sh              | 44 ++++++++++++++++++++++++++++++--------------
- configure.ac            | 44 +++++++++++++-------------------------------
- gi/Makefile.am          | 10 ++++++++++
- gi/_gobject/Makefile.am |  3 ---
- m4/as-ac-expand.m4      | 40 ----------------------------------------
- m4/jhflags.m4           | 21 ---------------------
- tests/Makefile.am       |  9 ++++++---
- 9 files changed, 65 insertions(+), 117 deletions(-)
-
-commit f939a71167bd94c9e7777312af444183f7b20441
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Jan 24 18:13:56 2017 +0100
-
-    Fix various potential compiler warnings
-
-    This is useful for a the next commit which switches away from
-    gnome-common and uses AX_COMPILER_FLAGS adding some new compiler
-    warning flags.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777713
-
- gi/gimodule.c            |  7 ++++---
- gi/gobjectmodule.c       | 22 +++++++++++-----------
- gi/pygenum.c             |  2 +-
- gi/pygflags.c            |  8 ++++----
- gi/pygi-argument.c       |  2 ++
- gi/pygi-array.c          | 16 ++++++++--------
- gi/pygi-cache.c          |  2 ++
- gi/pygi-closure.c        |  2 +-
- gi/pygi-foreign.c        |  2 +-
- gi/pygi-info.c           | 13 ++++++++++---
- gi/pygi-invoke.c         |  3 +++
- gi/pygi-property.c       |  2 +-
- gi/pygi-signal-closure.c |  3 ++-
- gi/pygi-value.c          | 11 +++++++----
- gi/pygobject-object.c    | 20 ++++++++++----------
- 15 files changed, 67 insertions(+), 48 deletions(-)
-
-commit b3fb2ecbb98bd6e40fe49a5b16e5174645886710
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 20 16:39:35 2017 +0100
-
-    configure.ac: post-release version bump to 3.25.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 49cc3643819dad0d065d3c86327cd60d2f022dad
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Jan 24 22:11:23 2017 +0100
-
-    Remove egg make target
-
-    eggs are deprecated and the command was referencing long
-    gone files and failing, so nobody was using it.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777719
-
- Makefile.am | 27 ---------------------------
- 1 file changed, 27 deletions(-)
-
-commit 3aa5c80213194a8a3a993e937bae0f6b3d992547
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue Jan 24 22:05:48 2017 +0100
-
-    Remove legacy docs
-
-    They aren't shipped, can't be build and describe the old
-    pygobject 2 interface.
-
-    There also was a doc-dist make target, but it was broken.
-
-    If someone wants to look things up they are in git or still
-    online for 2.28: https://developer.gnome.org/pygobject/stable/
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777719
-
- Makefile.am                               |   9 -
- docs/Makefile.am                          | 112 ----
- docs/reference/ChangeLog                  | 114 ----
- docs/reference/entities.docbook.in        |   1 -
- docs/reference/pyglib-classes.xml         |  13 -
- docs/reference/pyglib-functions.xml       | 293 ---------
- docs/reference/pygobject-classes.xml      |  17 -
- docs/reference/pygobject-constants.xml    | 304 ----------
- docs/reference/pygobject-functions.xml    | 864
- ---------------------------
- docs/reference/pygobject-gboxed.xml       |  68 ---
- docs/reference/pygobject-ginterface.xml   |  38 --
- docs/reference/pygobject-gpointer.xml     |  42 --
- docs/reference/pygobject-introduction.xml | 222 -------
- docs/reference/pygobject-ref.xml          |  34 --
- docs/reference/pygobject.xml              | 953
- ------------------------------
- docs/style.css                            |  10 -
- docs/xsl/common.xsl                       |  19 -
- docs/xsl/devhelp.xsl                      | 154 -----
- docs/xsl/fixxref.py.in                    |  67 ---
- docs/xsl/html.xsl                         | 285 ---------
- docs/xsl/pdf-style.xsl                    |  11 -
- docs/xsl/pdf.xsl                          | 259 --------
- docs/xsl/ref-html-style.xsl               |  54 --
- 23 files changed, 3943 deletions(-)
-
-commit 9d76190bc7a256764b1af5ec4bd05ce4a7b6e1d2
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 20 14:28:51 2017 +0100
-
-    release 3.24.0
-
- NEWS | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit bffbb4b1f823de5035e51e013dc6da5a973045aa
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 20 14:23:59 2017 +0100
-
-    configure.ac: pre-release version bump to 3.24.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 78defd2ab5f1935a6226336eaa08727e7516fb02
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 13 20:14:37 2017 +0100
-
-    release 3.23.92
-
- NEWS | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 4ccabfec0cececba935339ea8449ec51b4aeef5e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 13 20:13:13 2017 +0100
-
-    Version bump to 3.23.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ebc245c477c36fa1f65f80d2e75792b82d837611
-Author: Fabian Orccon <cfoch.fabian@gmail.com>
-Date:   Tue Jan 24 00:00:12 2017 -0500
-
-    overrides: Update for Gdk-4.0 and Gtk+-4.0
-
-    Override Gdk.Color and Gdk.RGBA according version.
-    Use properly Gtk.init_check in Gtk+-4.0
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777680
-
- gi/overrides/Gdk.py | 74
- ++++++++++++++++++++++++++++-------------------------
- gi/overrides/Gtk.py |  7 +++--
- 2 files changed, 44 insertions(+), 37 deletions(-)
-
-commit d005df9645fd5fb2f19bd09384355f45591f1e58
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jan 23 21:26:05 2017 +0100
-
-    Disable -Werror=missing-prototypes
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=760056
-    added some code triggering "missing-prototype" which we by default
-    treat as an error. This disables that specific error by default.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=777534
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6695931a0dfb7d9db9ea14a128108342c3d0be89
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jan 9 20:44:11 2017 +0100
-
-    Fix new PEP8 errors
-
-    Two new errors popped up:
-
-    * E305 expected 2 blank lines after class or function definition
-    * E741 ambiguous variable name
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=776009
-
- examples/cairo-demo.py             |  1 +
- examples/properties.py             |  1 +
- gi/_option.py                      |  1 +
- gi/overrides/GIMarshallingTests.py |  2 ++
- gi/overrides/GLib.py               | 19 +++++++++++++++++++
- gi/overrides/GObject.py            | 12 ++++++++++++
- gi/overrides/Gdk.py                |  3 +++
- gi/overrides/Gio.py                |  2 ++
- gi/overrides/Gtk.py                | 35
- +++++++++++++++++++++++++++++++++++
- gi/overrides/Pango.py              |  2 ++
- gi/types.py                        |  1 +
- pygtkcompat/pygtkcompat.py         |  1 +
- tests/test_generictreemodel.py     |  1 +
- tests/test_interface.py            |  4 ++++
- tests/test_iochannel.py            |  1 +
- tests/test_overrides_gtk.py        | 10 +++++-----
- tests/test_properties.py           | 12 ++++++------
- tests/test_signal.py               |  1 +
- 18 files changed, 98 insertions(+), 11 deletions(-)
-
-commit 3f68e0a352abc12e1990e82e3134c48f0be2b3c9
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Wed Mar 23 17:07:53 2016 +0100
-
-    Move pep8/pyflakes tests from 'make check' to 'make check.quality'
-
-    The current behaviour is problematic because new versions of
-    pep8/pyflakes
-    add new warnings or get more picky. This makes testing
-    hard in case newly added code is developed on an older version
-    or when testing old branches/releases.
-
-    This moves the pep8/pyflakes tests to a new "make check.quality"
-    command.
-
-    This also removes the SKIP_PEP8 flag which was added in
-    25d12afd06863ce
-    to speed up make check.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=764087
-
- HACKING     |  2 +-
- Makefile.am | 12 +++++-------
- 2 files changed, 6 insertions(+), 8 deletions(-)
-
-commit 222f5581c38551bdd5c6c9ca4e895d1f44397ad1
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Oct 21 13:59:54 2016 +0200
-
-    overrides: Update for Gtk-4.0
-
-    Skip things which are gone since 4.0.
-    This only fixes importing and doesn't add any tests for now.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=773315
-
- gi/overrides/Gtk.py | 482
- ++++++++++++++++++++++++++--------------------------
- 1 file changed, 242 insertions(+), 240 deletions(-)
-
-commit 8694e4dd42565f07b6f9ba1221fb03146be333a0
-Author: Dan Nicholson <nicholson@endlessm.com>
-Date:   Wed Dec 21 12:02:14 2016 -0600
-
-    Handle exception unreffing Variant at exit
-
-    Calling unref will cause gi and gi.repository.GLib to be imported.
-    However, if the program is exiting, then these modules have likely
-    been
-    removed from sys.modules and will raise an exception. Assume
-    that's the
-    case for ImportError and ignore the exception since everything will be
-    cleaned up, anyways.
-
-    This can be triggered with the following trivial program:
-
-    $ python3 -c 'from gi.repository import GLib; v = GLib.Variant("s",
-    "foo")'
-    Exception ignored in:
-
-    Adding some debug code to show the full exception revealed this:
-
-    Traceback (most recent call last):
-      File "/home/dan/src/pygobject/build3/gi/overrides/GLib.py", line
-      265, in __del__
-        self.unref()
-    ImportError: import of 'gi.repository.GLib' halted; None in
-    sys.modules
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=776092
-
- gi/overrides/GLib.py | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-commit 54c623ba639654716ca475f75c92cc8ed673d9f5
-Author: Dan Nicholson <nicholson@endlessm.com>
-Date:   Wed Dec 21 11:50:08 2016 -0600
-
-    Handle multiple deinit of callable cache
-
-    In python3, it seems that the callable cache deinit can be called
-    multiple times when the program is exiting. Make that safer by
-    clearing
-    the various pointers in the structure using g_clear_pointer and
-    Py_CLEAR. A subsequent call will skip all the deinit by seeing NULL
-    pointers for the members.
-
-    This was causing a critical warning when destroying the arg name hash
-    table multiple times with the following trivial program:
-
-    $ python3 -c 'from gi.repository import GLib; v = GLib.Variant("s",
-    "foo")'
-
-    (process:32378): GLib-CRITICAL **: g_hash_table_destroy: assertion
-    'hash_table != NULL' failed
-
-    (process:32378): GLib-CRITICAL **: g_hash_table_destroy: assertion
-    'hash_table != NULL' failed
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=776092
-
- gi/pygi-cache.c | 15 +++++++--------
- 1 file changed, 7 insertions(+), 8 deletions(-)
-
-commit 94226b8eb63dd985def8501168572ee16e02acad
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Sep 19 15:31:57 2016 +0200
-
-    configure.ac: post-release version bump to 3.23.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit fb1b8fa8a67f2c7ea7ad4b53076496a8f2b4afdb
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Sep 19 15:27:35 2016 +0200
-
-    release 3.22.0
-
- NEWS | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit b93523fcdb6bc04b42709ecd30b8cd11de80f0c5
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Sep 19 15:24:35 2016 +0200
-
-    configure.ac: pre-release version bump to 3.22.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 3ec19401dc57263508ee3aa16f5293419c222f5b
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Sep 11 11:45:59 2016 +0200
-
-    release 3.21.92
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 7ccc164b6da6d87c0a200ea50314d213470a1f18
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Sep 3 20:02:13 2016 +0200
-
-    Handle nullable filename parameters
-
-    Make _pygi_marshal_from_py_filename handle None input
-    values. This allows one to pass None to parameters
-    annotated as nullable filenames.
-
-    This fixes a test suite error in test_spawn_async_with_pipes
-    triggered by an annotation change in glib.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=770821
-
- gi/pygi-basictype.c             |  5 +++++
- tests/gimarshallingtestsextra.c | 22 ++++++++++++++++++++++
- tests/gimarshallingtestsextra.h |  3 +++
- tests/test_gi.py                |  4 ++++
- 4 files changed, 34 insertions(+)
-
-commit f4d858c069f06e7060a0bb067c29f5bffb7869ee
-Author: Aurelien Jarno <aurelien@aurel32.net>
-Date:   Wed Aug 31 22:16:06 2016 +0200
-
-    Fix list/hashtable enum <-> hash conversion on 64-bit big endian
-
-    glist and ghashtable objects both store pointers. Complex objects are
-    stored as pointers to the objects, but simpler objects like an integer
-    value are stored directly as a pointer, using for example the
-    GINT_TO_POINTER and GPOINTER_TO_INT macros.
-
-    This is done in pygobject with the _pygi_hash_pointer_to_arg and
-    _pygi_arg_to_hash_pointer functions. These functions handle the
-    various
-    type of objects. However they consider that an enum, represented
-    with the
-    GI_TYPE_TAG_INTERFACE type (extended interface object), are always a
-    pointer. This is wrong as it is often a 32-bit value. Therefore
-    on 64-bit
-    big endian machines, the value is handle with the 2 32-bit parts
-    swapped.
-
-    This patches fixes that by changing the second argument of both
-    functions
-    from GITypeTag to GITypeInfo. This way the interface can be
-    determined,
-    and the underlying storage type can also be determined. This currently
-    only handles enum and flags, leaving other types as pointers. The
-    patch
-    also adds two tests in the testsuite, one for each direction.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=770608
-
- gi/pygi-argument.c              | 33 +++++++++++++++++++++++++++++----
- gi/pygi-argument.h              |  4 ++--
- gi/pygi-hashtable.c             |  8 ++++----
- gi/pygi-list.c                  |  8 ++++----
- tests/gimarshallingtestsextra.c | 33 +++++++++++++++++++++++++++++++++
- tests/gimarshallingtestsextra.h | 10 ++++++++++
- tests/test_gi.py                | 11 +++++++++++
- 7 files changed, 93 insertions(+), 14 deletions(-)
-
-commit 1cb6c470e9d297afda21b73efaccb0b95e519b5d
-Author: Lukas K <lu@0x83.eu>
-Date:   Fri May 13 21:30:47 2016 +0200
-
-    Allow passing sockets to io_add_watch on win32
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=766396
-
- gi/overrides/GLib.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 4617c39ca212f0da82af1a9989c912bcdfe1158b
-Author: Michael Biebl <biebl@debian.org>
-Date:   Sat Sep 3 16:46:40 2016 +0200
-
-    tests: use dbus-run-session instead of dbus-launch to run tests
-
-    The use of dbus-launch is deprecated by dbus upstream.
-    See https://lists.debian.org/debian-devel/2016/08/msg00554.html
-    for more
-    details.
-
-    So use dbus-run-session instead, which was specifically designed to be
-    used for such cases, like running test-suites.
-
-    See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=836049.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=770798
-
- tests/Makefile.am | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-commit 4b9185250d73c38231d90b53974d0d2912a02972
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Aug 25 16:57:11 2016 +0200
-
-    configure.ac: post-release version bump to 3.21.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2f98ecc4df9e0feaab78ba289956f469e36c7d76
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Aug 25 16:51:39 2016 +0200
-
-    release 3.21.91
-
- NEWS | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-commit 91abec259ed0c387ab69762ff92142b08327d00a
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Aug 25 16:50:56 2016 +0200
-
-    configure.ac: version bump to 3.21.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f65bb1fc8f7f6172970545412fe56ab75f57904b
-Author: Mathieu Bridon <bochecha@daitauha.fr>
-Date:   Thu Jun 23 22:35:42 2016 +0200
-
-    Allow installing with pip
-
-    This commit adds a setup.py file which just calls the autotools to
-    configure/make/make install.
-
-    It is heavily inspired by the similar work from Simon McVittie on
-    dbus-python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=767988
-
- .gitignore  |   3 ++
- Makefile.am |   3 +-
- setup.py    | 105
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 110 insertions(+), 1 deletion(-)
-
-commit 14626ee5dcf380ae94680626607742a8cc048351
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jun 6 20:08:18 2016 +0200
-
-    Skip a test with older glib
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=740301
-
- tests/test_docstring.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit a12f7027adeb57fe1c0142c86d34d5ec8f6b6d9e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jun 6 20:13:29 2016 +0200
-
-    Fix a test with Python 3.1/3.2
-
-    Fix Python version check in
-    TestImporter.test_invalid_repository_module_name()
-    to avoid failure with Python 3.1 and 3.2.
-
-    Fix provided by Arfrever Frehtes Taifersar Arahesis at
-       https://bugzilla.gnome.org/show_bug.cgi?id=740324#c1
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=740324
-
- tests/test_import_machinery.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit f5cf74f3b8d285de3591d89c6f3b4b8d59bde35e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jun 6 20:45:22 2016 +0200
-
-    tests: Use places kwarg for assertAlmostEqual
-
-    Always pass 'places' argument of TestCase.assertAlmostEqual
-    as keyword argument.
-
-    Fix by Arfrever Frehtes Taifersar Arahesis
-        https://bugzilla.gnome.org/show_bug.cgi?id=740337#c1
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=740337
-
- tests/test_properties.py | 6 +++---
- tests/test_signal.py     | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-commit e0b40099283a31ea23433f9d36dc9beebd4370c9
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jun 6 11:34:47 2016 +0200
-
-    Print exception if marshalling a signal argument fails
-
-    For example if cairo support is missing a Gtk.Widget::draw call
-    will result in
-    "TypeError: Couldn't find foreign struct converter for
-    'cairo.Context'"
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=748198
-
- gi/pygi-signal-closure.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 76e2e30bc586016eba8bcfdd753dc1f4672dced7
-Author: Marinus Schraal <mschraal@src.gnome.org>
-Date:   Fri May 20 01:26:27 2016 +0200
-
-    overrides: allow treemodel sequence shorthands
-
-    Add get_ and set_ overrides for sequences of GtkTreeModel
-    indices. This
-    allows an arbitray list of indices to be retrieved or written in
-    one go
-    from or to a GtkTreeModel row:
-
-    model[0][0, 1] = [True, "Hello"]
-    [foo, bar] = model[0][2, 7]
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=766580
-
- gi/overrides/Gtk.py         | 15 +++++++++++++--
- tests/test_overrides_gtk.py | 46
- +++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 59 insertions(+), 2 deletions(-)
-
-commit ff1a6f0f00e042c5addfa42231ec8927ebf1a1a6
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue May 31 19:26:00 2016 +0200
-
-    Remove pygobject-external.h
-
-    It's not used any more
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=767084
-
- gi/Makefile.am          |  1 -
- gi/pygobject-external.h | 73
- -------------------------------------------------
- 2 files changed, 74 deletions(-)
-
-commit f5dd1551371308d33df9627bc8cc0e34fa68a2a8
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue May 31 18:47:54 2016 +0200
-
-    Remove pygobject-private.h and rename pygobject.c to
-    pygobject-object.c
-
-    Move all the random declarations in pygobject-private.h to their
-    respective header files. Rename pygobject.c to pygobject-object.c
-    so it's clearer that it's not the implementation of pygobject.h.
-    Add a new pygobject-internal.h which includes pygobject.h
-    with _INSIDE_PYGOBJECT_ defined like pygobject-private.h did.
-
-    In case you are looking at the git log and end up here due to the
-    rename try:
-
-      git log --follow pygobject-object.c
-
-    or on the web interface go to the history of the old file name:
-
-    https://git.gnome.org/browse/pygobject/log/gi/pygobject.c?id=6b702c052e9f26e809cff494f0c896d17a514c64
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=767084
-
- gi/Makefile.am                         |   7 +-
- gi/gimodule.c                          |  10 +-
- gi/gobjectmodule.c                     |  56 +---------
- gi/gobjectmodule.h                     |  11 ++
- gi/pygboxed.c                          |   4 +-
- gi/pygboxed.h                          |  11 ++
- gi/pygenum.c                           |   4 +-
- gi/pygenum.h                           |  22 ++++
- gi/pygflags.c                          |   4 +-
- gi/pygflags.h                          |  21 ++++
- gi/pygi-argument.c                     |   4 +-
- gi/pygi-basictype.c                    |   2 +-
- gi/pygi-boxed.c                        |   3 +-
- gi/pygi-boxed.h                        |   2 +-
- gi/pygi-cache.c                        |   1 +
- gi/pygi-ccallback.c                    |   1 -
- gi/pygi-enum-marshal.c                 |   3 +-
- gi/pygi-foreign.c                      |   2 +-
- gi/pygi-info.c                         |   2 +-
- gi/pygi-object.c                       |   2 +-
- gi/pygi-property.c                     |   1 +
- gi/pygi-property.h                     |   2 +-
- gi/pygi-signal-closure.h               |   2 +-
- gi/pygi-source.c                       |   3 +-
- gi/pygi-struct-marshal.c               |   3 +
- gi/pygi-struct.c                       |   3 +-
- gi/pygi-struct.h                       |   2 +-
- gi/pygi-type.c                         |   2 +-
- gi/pygi-util.c                         |  42 ++++++++
- gi/pygi-util.h                         |   6 ++
- gi/pygi-value.c                        |   6 +-
- gi/pyginterface.c                      |   3 +-
- gi/pygobject-internal.h                |   7 ++
- gi/{pygobject.c => pygobject-object.c} |  27 ++++-
- gi/pygobject-object.h                  |  56 ++++++++++
- gi/pygobject-private.h                 | 186
- ---------------------------------
- gi/pygparamspec.c                      |   5 +-
- gi/pygpointer.c                        |   3 +-
- gi/pygpointer.h                        |   8 ++
- gi/pygtype.c                           |  27 ++---
- gi/pygtype.h                           |  25 +++++
- 41 files changed, 305 insertions(+), 286 deletions(-)
-
-commit ef7a6dad8cea6a3b9547cfae00bf15ebb9eb756e
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue May 31 15:44:36 2016 +0200
-
-    Merge pyglib-private.h into pyglib.h
-
-    No need for another header
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=767084
-
- gi/Makefile.am        |  1 -
- gi/gimodule.c         |  2 +-
- gi/glibmodule.c       |  1 -
- gi/pygi-resulttuple.c |  2 +-
- gi/pygi-source.c      |  1 -
- gi/pyglib-private.h   | 40 ----------------------------------------
- gi/pyglib.c           |  1 -
- gi/pyglib.h           |  6 ++++++
- gi/pygoptioncontext.c |  1 -
- gi/pygoptiongroup.c   |  1 -
- gi/pygspawn.c         |  1 -
- 11 files changed, 8 insertions(+), 49 deletions(-)
-
-commit e1e05fb027c328ef41be0ba6d99883d2d7983f70
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Tue May 31 15:31:38 2016 +0200
-
-    Remove pygi.h and pygi-private.h
-
-    Instead include things where needed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=767084
-
- gi/Makefile.am                     |  3 +-
- gi/gimodule.c                      | 11 ++++-
- gi/pygboxed.c                      |  1 -
- gi/pygenum.c                       |  2 +-
- gi/pygflags.c                      |  4 +-
- gi/pygi-argument.c                 | 17 ++++++--
- gi/pygi-array.c                    |  3 +-
- gi/pygi-basictype.c                |  2 +-
- gi/pygi-boxed.c                    |  3 +-
- gi/pygi-boxed.h                    |  8 ++++
- gi/pygi-cache.c                    |  2 +
- gi/pygi-ccallback.c                |  2 +-
- gi/pygi-ccallback.h                | 11 +++++
- gi/pygi-closure.c                  |  5 ++-
- gi/pygi-enum-marshal.c             |  3 +-
- gi/pygi-error.c                    |  2 +-
- gi/pygi-hashtable.c                |  2 +-
- gi/pygi-info.c                     |  6 ++-
- gi/pygi-info.h                     | 22 ++++++++++
- gi/pygi-invoke.c                   |  5 +++
- gi/pygi-invoke.h                   |  2 +-
- gi/pygi-list.c                     |  2 +-
- gi/pygi-marshal-cleanup.c          |  8 ++--
- gi/pygi-marshal-cleanup.h          |  4 +-
- gi/pygi-object.c                   |  2 +-
- gi/pygi-property.c                 |  3 +-
- gi/pygi-property.h                 |  2 +-
- gi/pygi-repository.c               |  3 +-
- gi/pygi-repository.h               |  6 +++
- gi/pygi-signal-closure.c           |  4 +-
- gi/pygi-signal-closure.h           |  3 +-
- gi/pygi-source.c                   |  4 +-
- gi/pygi-struct-marshal.c           |  6 ++-
- gi/pygi-struct.c                   |  5 ++-
- gi/pygi-struct.h                   |  6 +++
- gi/pygi-type.c                     |  3 +-
- gi/{pygi-private.h => pygi-util.h} | 47 ++--------------------
- gi/pygi.h                          | 82
- --------------------------------------
- gi/pygobject.c                     |  3 +-
- gi/pygpointer.c                    |  1 -
- 40 files changed, 146 insertions(+), 164 deletions(-)
-
-commit c86424c73725610ac2ef832c1fa41a777f9a5efa
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Apr 24 21:27:59 2016 -0700
-
-    configure.ac: post-release version bump to 3.21.1
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit febd211b6628a8f63d92ae011d68b845e9fe6ec8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Apr 24 21:19:39 2016 -0700
-
-    release 3.21.0
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 1bb267f1755b2ec314c751b27931cbe7032f3c36
-Author: Dustin Falgout <dustin@falgout.us>
-Date:   Sun Mar 20 03:21:02 2016 -0500
-
-    gi: Add require_versions() function
-
-    Adds a new function that accepts a dict of one or more namespace,
-    version
-    pairs through which it iterates and calls `gi.require_version()`
-    for each pair. Also adds a test for the new function.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=761141
-
- gi/__init__.py                 | 33 +++++++++++++++++++++++++++++++++
- tests/test_import_machinery.py |  6 ++++++
- 2 files changed, 39 insertions(+)
-
-commit b3f897b98c5a2c59ea34a8afcce0448b1ffb0731
-Author: Iain Lane <iain@orangesquash.org.uk>
-Date:   Thu Mar 24 18:04:40 2016 +0000
-
-    test_gerror_novalue: Don't assign the error to a variable
-
-    Otherwise the build fails with:
-
-      CHECK  Pyflakes examples gi tests pygtkcompat
-      tests/test_gobject.py:689: local variable 'error' is assigned to
-      but never used
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=764165
-
- tests/test_gobject.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6ff29c91dfdbcc3203405da0aca8dbfa318d8b32
-Author: Emmanuele Bassi <ebassi@gnome.org>
-Date:   Wed Mar 23 13:59:53 2016 +0000
-
-    build: Do not enable code coverage based on lcov
-
-    Code coverage turns on various slow paths and disables
-    optimizations. It
-    should be, and it usually is, an opt in configuration flag.
-
-    Enabling it should not be conditional on the existence of the lcov
-    binary on the system, otherwise anybody building PyGObject from Git on
-    any moderately complete development environment will automatically
-    enable code coverage even when not wanted.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=764075
-
- autogen.sh | 10 +---------
- 1 file changed, 1 insertion(+), 9 deletions(-)
-
-commit c2a66daf3ac62e3e97f8d7fe16afccf37f413305
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 21 21:00:37 2016 -0700
-
-    configure.ac: post-release version bump to 3.21.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ce3034544f126f196cad57485f126f1246cd1acf
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 21 20:34:50 2016 -0700
-
-    release 3.20.0
-
- NEWS | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit eee366401383f92a2b2b233b2cd0db2ad50b6cb2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 21 20:33:13 2016 -0700
-
-    configure.ac: pre-release version bump to 3.20.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit f4401234cdc9be784eea9347fec349e7cba0a153
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Mar 15 22:56:10 2016 -0700
-
-    release 3.19.92
-
- NEWS | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 3d8860c2d0a95cff38f7eaa65c38521654a162ae
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Mar 1 22:10:21 2016 -0800
-
-    post-release version bump to 3.19.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a4865ef2f8c70b93f84f93236786c65ad5f973af
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Mar 1 21:46:21 2016 -0800
-
-    release 3.19.91
-
- NEWS | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-commit cc75f994a07639b9ffcc6afef757768780a076de
-Author: Thibault Saunier <tsaunier@gnome.org>
-Date:   Fri Feb 5 15:00:10 2016 +0100
-
-    tests: check passing Boxed type in GValue as function parameters
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=761592
-
- tests/Makefile.am               | 13 +++++++++++--
- tests/gimarshallingtestsextra.c | 37
- +++++++++++++++++++++++++++++++++++++
- tests/gimarshallingtestsextra.h | 26 ++++++++++++++++++++++++++
- tests/test_error.py             |  6 ++++++
- 4 files changed, 80 insertions(+), 2 deletions(-)
-
-commit 5f4b08f4e8a98046eab71537c7827edde2ca8742
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 29 22:50:32 2016 -0800
-
-    gerror: Add special case marshaling for boxing GErrors
-
-    Transfer gtype from introspection GError class to Python GError
-    implementation.
-    Expose the PyGError pointer as an extern so other C files can pick
-    this up.
-    Add custom to/from GValue marshalers for GError.
-    Add tests for both complete and incomplete (no boxed pointer held).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=761592
-
- gi/overrides/GLib.py  |  1 +
- gi/pygi-error.c       | 32 +++++++++++++++++++++++++++++++-
- gi/pygi-error.h       |  2 ++
- gi/pygi-value.c       |  1 +
- tests/test_gobject.py | 17 +++++++++++++++++
- 5 files changed, 52 insertions(+), 1 deletion(-)
-
-commit cfca1457c39e3c4c7ef97e7b46a73c19e5adf305
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Feb 28 01:39:31 2016 -0800
-
-    gerror: Add support for marshaling GError from Python to C
-
-    Refactor pygi_gerror_exception_check() to use a new broken out
-    function
-    pygi_error_marshal_from_py(). This allows re-use for argument
-    marshaling
-    of a Python GError to a C GError.
-    Remove PYGI_META_ARG_TYPE_CHILD setting for GError out argument
-    marshaling.
-    This was incorrect since GError exception arguments are not specified
-    explicitly and instead uses the "throws" option.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685197
-
- gi/pygi-error.c              | 132
- +++++++++++++++++++++++++++++--------------
- gi/pygi-error.h              |   3 +
- tests/test_overrides_glib.py |  30 ++++++++++
- 3 files changed, 123 insertions(+), 42 deletions(-)
-
-commit 2fc1a689a81614649d042965997f4546b0a58ada
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 27 17:21:53 2016 -0800
-
-    gerror: Add "_to_py" suffix to pygi_error_marshal
-
-    This will allow for the a pygi_error_marshal_from_py function.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685197
-
- gi/pygi-error.c | 8 ++++----
- gi/pygi-error.h | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-commit 7e29227b6f58cfcc96118a4af83658ca1a6fa1f4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Jul 4 22:09:46 2015 +0200
-
-    Some error handling/reporting fixes.
-
-    * Check in pyg_boxed_new() if the passed type is an actual subclass
-    * Don't replace existing exceptions in pyg_value_as_pyobject()
-    * Print an error in pyg_closure_marshal() in case marshalling
-      an argument failed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=751956
-
- gi/pygboxed.c   |  8 +++++++-
- gi/pygi-value.c | 15 ++++++++++-----
- gi/pygtype.c    | 11 ++++++++++-
- 3 files changed, 27 insertions(+), 7 deletions(-)
-
-commit 49880800b35029de3731523eede1b3174f10c1db
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Jul 4 21:40:04 2015 +0200
-
-    GVariant: Don't use pyg_boxed_new as GVariant isn't a PyGBoxed but
-    a PyGIStruct.
-
-    This only worked because they share the same struct layout.
-    This adds a new constructor for creating a new PyGIStruct instance
-    from GType.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=751956
-
- gi/pygi-struct.c | 32 ++++++++++++++++++++++++++++++++
- gi/pygi-struct.h |  5 +++++
- gi/pygi-value.c  |  3 ++-
- 3 files changed, 39 insertions(+), 1 deletion(-)
-
-commit f27b1976ea325fcd55359888401dd08ac8fb074a
-Author: Mikhail Fludkov <misha@pexip.com>
-Date:   Tue Sep 1 17:54:17 2015 +0200
-
-    pygi-value: special case for NULL GValueArray
-
-    Don't segfault when dealing with GValue of GValueArray type containing
-    NULL. Return empty list in this case.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=754359
-
- gi/pygi-value.c       | 5 +++--
- tests/test_gobject.py | 6 ++++++
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-commit c8176dfabea694ce738ff4633e7522b0d1fc1c51
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 20 20:42:40 2016 -0800
-
-    post-release version bump to 3.19.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d16ae38f0a12653557bdeba17eb155144d91bff4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 20 19:56:24 2016 -0800
-
-    release 3.19.90
-
- NEWS | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 0190fb84fc1f88ba4c0623bf1b29fe3ca4f80932
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 20 19:49:31 2016 -0800
-
-    pre-release version bump to 3.19.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 0467808b97f89c5a36c01f5b7cba013acaef6851
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 20 19:40:45 2016 -0800
-
-    tests: Set the active style context state before retrieving values
-
-    compat_test_pygtk.TestGTKCompat.test_style() was giving a warning due
-    to set/get state mismatch. Set the current state before getting values
-    from the context.
-
- tests/compat_test_pygtk.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 8145fa69c8ace9772687f26f782acb5e461776be
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 20 17:32:01 2016 -0800
-
-    tests: Fix crash with empty drag source icon names
-
-    Add "_About" argument when testing call to
-    drag_source_set_icon_name().
-    Add Gtk.STOCK_ABOUT argument when testing call to
-    drag_source_set_icon_stock().
-    This avoids crashes due to GTK+ drag source attempting to unref a
-    NULL pointer.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=762392
-
- tests/test_overrides_gtk.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 6a26d3f2b25b3fbbd87def14f1df17b96ed23a0d
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 4 11:18:04 2015 +0200
-
-    Try to import GdkX11 in Gdk overrides
-
-    pygobject will not provide GdkX11 instances until the namespace
-    is loaded so try to load it in the overrides.
-
-    This makes Gdk.Display.get_default() return a GdkX11.X11Display
-    instead of a dummy Gdk.Display subclass instance.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=673396
-
- gi/overrides/Gdk.py | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-commit 12022437d663f49ba3a2a2f884da30dd5ca08ff6
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Oct 30 13:07:57 2015 +0100
-
-    Fix import warnings pointing to the wrong code with CPython 3.3/3.5
-
-    For making warnings point to the code doing the import, the stack
-    frames
-    of the import system need to be skipped. The frame count number
-    varries
-    between CPython versions and in 3.5 all frames of the import
-    system are
-    skipped for warnings (https://bugs.python.org/issue24305).
-
-    This hardcodes the frame counts for all supported CPython versions
-    which fixes the import warning output for CPython 3.3 and 3.5.
-
-    This also fixes/works around a bug in CPython 3 where if a too
-    large stacklevel value was passed to warn(), CPython would try to
-    interpret a file called "sys" in the same directory of the
-    executed script (https://bugs.python.org/issue25493
-    and https://bugzilla.gnome.org/show_bug.cgi?id=757184).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=757184
-
- gi/importer.py                 | 28 +++++++++++++++++++++++-----
- tests/test_import_machinery.py |  4 ++++
- 2 files changed, 27 insertions(+), 5 deletions(-)
-
-commit 72ab17963e81fb63f7238123c359be8d83a529f4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 25 11:39:22 2015 +0100
-
-    Bump automake version to 1.12.6
-
-    Required to a get a new enough py-compile which supports
-    the __pycache__ directories for newer Python 3 versions.
-    See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=8847
-
-    Also remove m4/py-compile which doesn't seem to get used in
-    either 1.11 or 1.15 here.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=757086
-
- configure.ac  |   4 +-
- m4/py-compile | 161
- ----------------------------------------------------------
- 2 files changed, 3 insertions(+), 162 deletions(-)
-
-commit b71f76af163c1d43b9f11e6a6362e7510d84c231
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 31 14:55:46 2015 -0700
-
-    post-release version bump to 3.19.3
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit bedc7b883febceb3470f1b8e909cfab696d1fc5f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 31 14:47:07 2015 -0700
-
-    release 3.19.2
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 4164e7088be446fcab65cef642c6853aad3b6a69
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 31 14:06:40 2015 -0700
-
-    tests: Fix failure due to new GTK+ warning regarding size_allocate()
-
-    Call get_preferred_size() to avoid size_allocated() warning in
-    size-allocated signal handler test.
-
- tests/test_overrides_gtk.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit a8293f411234180d70e9ff979954b28381842e1f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 31 14:03:21 2015 -0700
-
-    Fix build warnings regarding _POSIX_C_SOURCE redefinition
-
-    Move Python.h includes above glib includes to avoid build
-    warnings with Python 2 as noted here:
-    https://docs.python.org/2/c-api/intro.html#include-files
-
- gi/gobjectmodule.c       | 1 +
- gi/pygi-array.c          | 2 +-
- gi/pygi-cache.c          | 2 +-
- gi/pygi-enum-marshal.c   | 2 +-
- gi/pygi-hashtable.c      | 1 +
- gi/pygi-hashtable.h      | 2 +-
- gi/pygi-list.c           | 1 +
- gi/pygi-object.c         | 2 +-
- gi/pygi-struct-marshal.c | 2 +-
- gi/pygi-value.c          | 1 +
- 10 files changed, 10 insertions(+), 6 deletions(-)
-
-commit 3b1d130174951f7648beceac270daa8ac65939c7
-Author: Matthias Clasen <mclasen@redhat.com>
-Date:   Fri Oct 30 12:15:26 2015 -0400
-
-    Drop -std=c90 for now
-
-    glib headers have a problem with it, and sorting it out on the
-    glib side will take a while, so drop this for now.
-
- configure.ac | 9 ---------
- 1 file changed, 9 deletions(-)
-
-commit ef219cc74a7c6803795692664fc3b2c8ebbb4fe4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Oct 30 16:23:11 2015 +0100
-
-    configure.ac: post release version bump to 3.19.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 98a4bfe4606bd2c7534533633a20a998f732e248
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Fri Oct 30 16:13:46 2015 +0100
-
-    release 3.19.1
-
- NEWS | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-commit 175d10665472e6f4090d707e3b89255814c932b1
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Jun 8 18:14:08 2015 +0200
-
-    Use a named tuple for returning multiple values
-
-    >>> v = Gtk.Button().get_alignment()
-    >>> v
-    (xalign=0.5, yalign=0.5)
-    >>> v.xalign
-    0.5
-
-    For each GICallable a new gi._gi.ResultTuple subclass
-    is created which knows the return value names of that
-    callable and displays them in __repr__, __dir__ and
-    allows to access tuple items by name.
-
-    The subclass is cached in PyGICallableCache.
-
-    To reduce the number of small tuple allocations use a free list
-    similar to the one used for pure tuples in CPython.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727374
-
- gi/Makefile.am            |   2 +
- gi/gimodule.c             |   1 +
- gi/pygi-cache.c           |  34 +++++
- gi/pygi-cache.h           |   6 +
- gi/pygi-invoke.c          |  35 ++---
- gi/pygi-private.h         |   1 +
- gi/pygi-resulttuple.c     | 354
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-resulttuple.h     |  34 +++++
- gi/pyglib-python-compat.h |   5 +
- tests/Makefile.am         |   1 +
- tests/test_resulttuple.py |  87 ++++++++++++
- 11 files changed, 543 insertions(+), 17 deletions(-)
-
-commit b1788c9a445c8a820121c42260bcbdbc3ae8dfba
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Oct 26 11:17:34 2015 +0100
-
-    enum/flags: use gir info for type names and __repr__ instead of the
-    gtype name
-
-    For example __name__ is now SpawnFlags instead of PyGLibSpawnFlags
-    and __repr__ shows GLib.SpawnFlags in stead of PyGLibSpawnFlags.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=657915
-
- gi/gimodule.c               | 35 ++++++++++++++++++++++++----
- gi/pygenum.c                | 57
- +++++++++++++++++++++++++++++++--------------
- gi/pygflags.c               | 31 +++++++++++++++++++-----
- tests/test_gi.py            | 41 ++++++++++++++++++++++++++++++++
- tests/test_overrides_gdk.py |  6 ++---
- 5 files changed, 139 insertions(+), 31 deletions(-)
-
-commit 6b702c052e9f26e809cff494f0c896d17a514c64
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Wed Jun 10 18:24:44 2015 +0200
-
-    Improve and unify __repr__ format for PyGObject, PyGBoxed and
-    PyGIStruct
-
-    Includes the module, Python type name, pointer and wrapper pointer
-    and GType name. e.g.
-    "<Gtk.Border object at 0x7f26bee9e4c8 (GtkBorder at 0x1c72e30)>"
-
-    In case of PyGObjects created from GType set the module to __gi__
-    instead of guessing the old static binding name. Also
-    remove the code that tries to add them to the guessed static bindings
-    module while at it. The __repr__ will now return
-    "<__gi__.X11Keymap ..." instead of "<gtk.gdk.X11Keymap ..."
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=657915
-
- gi/pygboxed.c    | 31 +++++++++++++++++++++----
- gi/pygi-struct.c | 23 ++++++++++++++++++
- gi/pygobject.c   | 71
- +++++++++++++++++++++++++-------------------------------
- tests/test_gi.py | 33 ++++++++++++++++++++++++++
- 4 files changed, 113 insertions(+), 45 deletions(-)
-
-commit 9b821aa0d60857e612cde9dabe9c8f9f9c60214c
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 4 11:13:37 2015 +0200
-
-    Don't leak internal RepositoryError on import.
-
-    In case a dependency of the imported namespace has a version
-    conflict with an already loaded version, import would raise
-    RepositoryError.
-
-    This fixes it to raise an ImportError instead.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=756033
-
- gi/importer.py | 7 +++++--
- gi/module.py   | 4 ++++
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-commit dba1da9b0770c7dec1abd82303b9b4266fe2ce3f
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 4 10:13:35 2015 +0200
-
-    Import dependencies when importing typelibs from gi.repository
-
-    Recursively import a modules dependencies when importing from
-    gi.repository.
-
-    This fixes the case where a library depends on initialization
-    code of dependency overrides. For example libwnck expects
-    gdk_init to be called before using its API and gdk_init
-    gets called in the Gdk overrrides.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=656314
-
- gi/importer.py                 | 12 +++++++++++-
- gi/pygi-repository.c           | 35 +++++++++++++++++++++++++++++++++++
- tests/test_import_machinery.py | 13 +++++++++++++
- tests/test_repository.py       | 10 ++++++++++
- 4 files changed, 69 insertions(+), 1 deletion(-)
-
-commit dfa3a85290dd97ecd7cbe8f12fbc1ff2db5a1155
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 11 01:28:48 2015 +0200
-
-    Fix Gdk.rectangle_intersect/rectangle_union missing with GTK+ 3.18
-
-    3.18 added a Gdk.Rectangle type which changed these functions
-    to methods in the gir.
-
-    Fix by providing aliases in the Gdk overrides.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=756364
-
- gi/overrides/Gdk.py         | 8 ++++++++
- tests/test_overrides_gdk.py | 9 +++++++++
- 2 files changed, 17 insertions(+)
-
-commit 98726caff183491cde1e145861adfcff0c243d9b
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Oct 4 09:53:27 2015 +0200
-
-    Don't import inspect at module level
-
-    Move it to the only user instead as importing inspect
-    takes 10msec here.
-
- gi/_signalhelper.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit e1921b7224ca1e909d9fe5483a09414742d0baf4
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Sep 26 21:29:54 2015 +0200
-
-    invoke state: add a free memory cache for PyGIInvokeArgState
-
-    Keep one free allocation per argument count around
-    to reduce g_slice_alloc/free usage.
-
-    Reduces CPU time for simple functions by 10% and 5% for closures.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=750658
-
- gi/pygi-closure.c |  6 ++----
- gi/pygi-invoke.c  | 61
- +++++++++++++++++++++++++++++++++++++++++++++++++------
- gi/pygi-invoke.h  |  4 ++++
- 3 files changed, 61 insertions(+), 10 deletions(-)
-
-commit f72b6434de82ffa1950ff45a4daf80c84f58eca6
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat Sep 26 21:25:38 2015 +0200
-
-    invoke/closure: reduce g_slice_alloc usage
-
-    Instead of allocating multiple arrays, combine argument
-    data in a new PyGIInvokeArgState and allocate it in one go.
-
-    This reduces CPU time by 20% for simple functions and by 15%
-    for closures.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=750658
-
- gi/pygi-array.c               |  6 +--
- gi/pygi-closure.c             | 99
- +++++++++++++++++++------------------------
- gi/pygi-invoke-state-struct.h | 34 +++++++++------
- gi/pygi-invoke.c              | 50 +++++++---------------
- gi/pygi-marshal-cleanup.c     | 10 ++---
- 5 files changed, 86 insertions(+), 113 deletions(-)
-
-commit 640221c099031a55cbc32f5cdac3e6e018256fff
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Sep 27 11:19:14 2015 +0200
-
-    pep8: ignore new errors reported by pep8 1.6
-
-    Makes sure we get the same result for older and newer pep8.
-    Once 1.6 is more common, the ignored errors could be added back
-    and fixed (E402 might be impossible, see bug 755620)
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5fcc0b49e5988bfb6893bd56dd25a6257cd9720d
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Tue Sep 22 14:57:13 2015 -0700
-
-    Bump g-i dependency to latest stable
-
-    This is required for throwing exceptions in closures.
-
- README       | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 0acbf6ad543a928ce75fc6d6839d3e6aa2e9a3d3
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Tue Jun 9 07:11:51 2015 -0700
-
-    Avoid calling g_slist_length() during invoke
-
-    We already know the number of Python args.
-
- gi/pygi-invoke.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 216e94cff0bbe5436efe423b197c9cfc4a00a02d
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Wed Jun 3 08:14:08 2015 -0700
-
-    Simplify closure_convert_arguments()
-
-    This chunk of work should really be done
-    in convert_ffi_arguments().
-
- gi/pygi-closure.c | 65
- +++++++++++++++++++++++++------------------------------
- 1 file changed, 29 insertions(+), 36 deletions(-)
-
-commit 7f7d0c52c9b364ba0ec92c9415298c26b103a077
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Wed Jun 3 08:09:31 2015 -0700
-
-    Remove a level of indentation in convert_ffi_arguments()
-
- gi/pygi-closure.c | 138
- ++++++++++++++++++++++++++----------------------------
- 1 file changed, 67 insertions(+), 71 deletions(-)
-
-commit 3066f3a88103f02c7e22db22efbeb501f4e30d32
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Wed Jun 3 07:50:37 2015 -0700
-
-    Prevent passing the user data multiple times to callbacks
-
-    This can happen when a callback has multiple gpointers.
-    Also, store the closure index as it is hopefully more reliable
-    than guessing.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=750347
-
- gi/pygi-cache.c   | 24 ++++++++++++++++++++++++
- gi/pygi-cache.h   |  3 +++
- gi/pygi-closure.c |  8 ++------
- 3 files changed, 29 insertions(+), 6 deletions(-)
-
-commit 40bba555c835cf53d6aa2645329631e6abe57e6c
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Wed Jun 3 07:06:40 2015 -0700
-
-    Support throwing exceptions in closures
-
-    This allows exceptions raised in vfunc implemntations
-    and callbacks to be turned into GErrors.
-
-    NOTE: this requires matchs in
-    https://bugzilla.gnome.org/show_bug.cgi?id=729543
-    thus we must bump the GI req once they are commited.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=710671
-
- gi/pygi-closure.c   | 113
- ++++++++++++++++++++++++++++++----------------------
- tests/test_error.py |  22 ++++++++++
- 2 files changed, 88 insertions(+), 47 deletions(-)
-
-commit ea75a89a7d2bdabc7a29f7f20f792211765f2ac7
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Sep 6 05:35:03 2015 +0200
-
-    Don't emit require_version warning if namespace was loaded previously
-    using g_irepository_require
-
-    Instead of tracking loaded dependencies ourself to hide warnings
-    if they
-    were loaded by a previous import just look if the namespace was loaded
-    before the import. This (a) makes the implementation much simpler and
-    (b) also takes into account namespaces loaded outside of
-    Python/PyGObject
-    using the libgirepository C API (as is common in applications using
-    libpeas with Python plugins)
-
-    This also introduces a new Python wrapper for
-    g_irepository_is_registered()
-    to allow checking the loading state of namespaces before imports.
-
-    This fixes unnecessary require_version warnings in gedit,
-    gnome-builder,
-    totem, rhythmbox etc.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=754491
-
- gi/importer.py                 | 93
- +++++++++++-------------------------------
- gi/pygi-repository.c           | 19 +++++++++
- tests/test_import_machinery.py |  9 ----
- tests/test_repository.py       | 11 +++++
- 4 files changed, 54 insertions(+), 78 deletions(-)
-
-commit 65726314de2833ce0364a3f3e23f344d122b342f
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Tue Sep 22 00:17:00 2015 -0700
-
-    configure.ac: post release version bump to 3.19.1
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit ea5ecca4916569b1eca6296ff1a8905e42c3c38a
-Author: Garrett Regier <garrettregier@gmail.com>
-Date:   Tue Sep 22 00:10:35 2015 -0700
-
-    Release 3.18.0
-
- NEWS         | 2 ++
- configure.ac | 4 ++--
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-commit e2b8ba0584d1a3273dfa2fcb23616d1dc68fdb8e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 19 21:04:37 2015 -0700
-
-    configure.ac: post-release version bump to 3.17.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6392b2727e7ed391683bebbf69fbc8b474e99a5f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 19 21:02:44 2015 -0700
-
-    release 3.17.90
-
- NEWS | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit 1da98892cf505b35ce0280db22e1e8ba31c095e0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 19 20:57:37 2015 -0700
-
-    configure.ac: pre-release version bump to 3.17.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 79d23e9accd331d954007dcae6b6b7fa2837cfa7
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Wed Feb 18 19:30:30 2015 +0100
-
-    Allow passing unicode lists to GStrv properties on Python 2
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=744745
-
- gi/pygi-value.c          | 41 ++++++++++++++++++++++++++++++++---------
- tests/test_properties.py |  8 +++++++-
- 2 files changed, 39 insertions(+), 10 deletions(-)
-
-commit 8aa3d5935b4541be6e76e8792e58bb301fa4f7d1
-Author: Rui Matos <tiagomatos@gmail.com>
-Date:   Thu May 21 17:53:17 2015 +0200
-
-    Avoid a silent long to int truncation
-
-    If the python object contains a value bigger than MAXUINT we'd
-    silently truncate it when assigning to 'val' and the if condition
-    would always be true.
-
-    This was caught by a coverity scan.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=749698
-
- gi/pygi-value.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 5af6c722e5b7db90a3ca0832c46efe0c9142a0d1
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Jul 5 11:58:50 2015 +0200
-
-    tests: add a test for test_glist_gtype_container_in()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=749696
-
- tests/test_everything.py | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit f69ce9f5f6cd81b057ed0006d1fe7f71fa294943
-Author: Mathieu Bridon <bochecha@daitauha.fr>
-Date:   Sun Jul 5 11:07:00 2015 +0200
-
-    Handle gtype marshalling
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=749696
-
- gi/pygi-argument.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit 0ee1f562c975df51ce93578d35678ef1e915e202
-Author: Daniel Hahler <git@thequod.de>
-Date:   Wed Mar 25 14:37:29 2015 +0100
-
-    pygi-foreign-cairo.c: fix include for py3cairo.h
-
-    The pkg-config info includes the "pycairo" folder already.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=746742
-
- gi/pygi-foreign-cairo.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit fea15145c2a3e6aac73350241a982a095e16c7d8
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Jun 18 13:36:52 2015 +0200
-
-    tests: Silence various error messages and warnings.
-
-    This silences glib warnings which are due to testing
-    of error handling, deprecation warnings which we ignore
-    since we want to continue testing deprecated code and
-    other error output of code which is supposed to fail.
-
-    To reduce code duplication and make things easier
-    this introduces a shared helper module containing
-    various context managers and decorators which allow
-    testing and silencing of warnings and errors.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=751156
-
- tests/Makefile.am           |   1 +
- tests/compat_test_pygtk.py  |  27 +++------
- tests/compathelper.py       |   8 +++
- tests/helper.py             | 132
- ++++++++++++++++++++++++++++++++++++++++++++
- tests/test_everything.py    |  28 ++++++----
- tests/test_gi.py            |   6 +-
- tests/test_gio.py           |   3 +
- tests/test_iochannel.py     |  20 +++----
- tests/test_overrides_gdk.py |  18 +++---
- tests/test_overrides_gtk.py |  20 +++----
- tests/test_properties.py    |  21 +++----
- tests/test_repository.py    |  13 ++---
- tests/test_signal.py        |  24 +++-----
- tests/test_source.py        |   8 +--
- 14 files changed, 231 insertions(+), 98 deletions(-)
-
-commit 619777730891b42b98da556c3aa9ca5a1b3f617b
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Jun 18 13:30:03 2015 +0200
-
-    Fix gcc warning regarding uninitialized use of variable
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=751156
-
- gi/pygobject.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 1ed8200abefc3e51e4d2083b1372695aaf4163fb
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sun Jun 21 23:55:02 2015 +0200
-
-    Fix test regression when xdg-user-dirs is not installed.
-
-    GLib.get_user_special_dir is only guaranteed to always return
-    a path in case GLib.UserDirectory.DIRECTORY_DESKTOP is passed.
-    This was unintentionally changed to DIRECTORY_MUSIC
-    in 9948a67e677c8a351f2de1708.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=751299
-
- tests/test_glib.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 79cf1f70d247b5a4d33d1e60107e47903ca76055
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Mon May 18 02:32:18 2015 -0700
-
-    Explicitly check if an override exists instead of ImportError
-
-    If an override depended on another module and it did not
-    exist then the raised ImportError was consumed and assumed
-    to mean that the override did not exist. This makes it
-    difficult to diagnose issues with overrides.
-
-    This uses pkgutil.get_loader() as it is the easier way to
-    determine if a module exists in both Python 2 and 3
-    and avoid deprecated functions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=749532
-
- gi/overrides/__init__.py | 17 +++++++++++++++--
- 1 file changed, 15 insertions(+), 2 deletions(-)
-
-commit d2faa619f5e204b75315a42fec99dd48fe7fb31c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jun 15 01:24:16 2015 -0700
-
-    configure.ac: post-release version bump to 3.17.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6fa54fe868d0e2a9a9d4dc300a61cbfa079681a8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jun 15 01:20:47 2015 -0700
-
-    release 3.17.1
-
- NEWS | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-commit 2048dc8d1d708abce7037f96483c6d776567d6b5
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Mon Mar 2 20:58:04 2015 +0100
-
-    Add gi.PyGIWarning and use it instead of PyGIDeprecationWarning in
-    case the version to import wasn't specified.
-
-    This makes the warning visible by default.
-    See commit ef3bff4e570363e4f383d4cdae9cecd4073b03d8 for more info
-    on the warning.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727379
-
- gi/__init__.py   |  2 ++
- gi/gimodule.c    |  6 ++++++
- gi/importer.py   |  3 ++-
- tests/test_gi.py | 15 +++++++++++++++
- 4 files changed, 25 insertions(+), 1 deletion(-)
-
-commit 7a3bb6971f22accd25e987496d377e1879f6e1ba
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Sat May 30 17:46:54 2015 +0200
-
-    Remove Gdk.Rectangle alias with newer gobject-introspection and GTK+
-
-    The new GdkRectangle in the typelib confuses the marshalling code
-    as PyGObject uses the Python class from the overrides for marshalling
-    to Python but uses the gtype from the typelib to do
-    type checking when marshalling from Python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=749625
-
- gi/overrides/Gdk.py | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-commit 64be2069d39b4d2767eb1efd47bb3f268ad7fb0d
-Author: Christoph Reiter <creiter@src.gnome.org>
-Date:   Thu Apr 23 22:03:54 2015 +0200
-
-    overrides: Provide _overrides_module attribute to make gst-python
-    overrides work again.
-
-    gi_gst_fraction_from_value () in gst-python's gstmodule.c tries
-    to access
-    the Gst.Fraction class through
-    gi.repository.Gst._overrides_module.Fraction
-    and failed since _overrides_module was removed in revision
-    149c31beced944c.
-
-    This adds it back pointing to the proxy itself which also contains
-    Gst.Fraction.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736678#c6
-
- gi/overrides/__init__.py | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 6772e990ad889af817b9224e88ea9d79a04caef7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Apr 13 19:33:40 2015 -0700
-
-    overrides: Conditionalize touch override support in Gdk
-
-    Conditionalize Gdk.EventTouch union discrimination. This fixes the
-    Gdk overrides to continue working with versions of Gdk less than 3.4.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=747717
-
- gi/overrides/Gdk.py | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
-
-commit 26c015b177ddcc0f35c97bcd7a4f2114fb2e8e2a
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sun Mar 29 23:23:09 2015 +0200
-
-    Field setters: Remove unneeded type/range checks and resulting
-    unused code.
-
-    These checks are performed in the actual marshalling code
-    paths as well, no need to do them twice.
-
-    Also move _pygi_g_registered_type_info_check_object() to pygi-info.c
-    as it's the only place where it is still used.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=746985
-
- gi/pygi-argument.c   | 626
- ---------------------------------------------------
- gi/pygi-argument.h   |  12 -
- gi/pygi-info.c       |  90 ++++++--
- tests/test_fields.py |  14 +-
- 4 files changed, 83 insertions(+), 659 deletions(-)
-
-commit dbb0b199268ece884e19eb99093fc26bd7bf92af
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sun Mar 29 21:51:42 2015 +0200
-
-    pygi-argument: Remove unused imports/includes
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=746985
-
- gi/gimodule.c      | 1 -
- gi/pygi-argument.c | 7 -------
- gi/pygi-argument.h | 2 --
- 3 files changed, 10 deletions(-)
-
-commit 7dee04efff418677eead36ee9ed497cc3eadf8f7
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sun Mar 29 21:47:47 2015 +0200
-
-    Improve test coverage for field setters/getters.
-
-    Field setters are the sole users of the GIArgument value validation
-    code and the error handling is hardly tested. This tries to improve
-    the coverage for the field types available in
-    GLib/Regress/GIMarshallingTests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=746985
-
- tests/Makefile.am    |   1 +
- tests/test_fields.py | 186
- +++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 187 insertions(+)
-
-commit b0170220fabbf878a36e0c14b0a3024973b7355f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 29 16:35:47 2015 -0700
-
-    configure.ac: post release version bump to 3.17.1
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 46f463a3a3ff45eb8eba67fbb59ecc861b1e1d73
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Mar 24 01:25:25 2015 -0700
-
-    release 3.16.0
-
- NEWS         | 2 ++
- configure.ac | 4 ++--
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-commit bf802599f5d0d13cc4b69f1716400561a16a2443
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 5 01:09:12 2015 -0800
-
-    configure.ac: post release version bump to 3.15.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a86f309066f007f9787a6d1ac679dc041740d8dc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 5 01:08:03 2015 -0800
-
-    release 3.15.91
-
- NEWS         | 14 ++++++++++++++
- configure.ac |  2 +-
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-commit 9948a67e677c8a351f2de17080d7a671882570f3
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Jan 27 17:47:49 2015 +0100
-
-    tests: Don't use deprecated override attributes
-
-    In case the test explicitly tests the deprecated attribute
-    silence the resulting warnings.
-
-    Instead of replacing GObject.PARAM_READWRITE with
-    GObject.ParamFlags.READWRITE use (READABLE | WRITABLE)
-    to not depend on a newer glib version.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743514
-
- tests/test_everything.py    | 168
- ++++++++++++++++++++++----------------------
- tests/test_gi.py            |  66 ++++++++---------
- tests/test_glib.py          |  33 +++++----
- tests/test_gobject.py       |  21 +++---
- tests/test_internal_api.py  |   4 +-
- tests/test_iochannel.py     |  11 +--
- tests/test_overrides_gtk.py |  20 +++---
- tests/test_properties.py    | 100 ++++++++++++++------------
- tests/test_signal.py        | 111 ++++++++++++++---------------
- tests/test_source.py        |   8 +--
- tests/test_subprocess.py    |   7 +-
- tests/testmodule.py         |   3 +-
- 12 files changed, 292 insertions(+), 260 deletions(-)
-
-commit 9285b23cd1b253baaf06ddd49e2f000716bbf7f3
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Jan 27 16:36:02 2015 +0100
-
-    Add GLib.MINFLOAT etc. and mark GObject.G_MINFLOAT etc. deprecated.
-
-    They are defined in glib, not gobject and not included in the gir;
-    Similar constants like G_MAXINT64 are defined in GLib gir and marked
-    deprecated in the GObject overrides already.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743514
-
- gi/overrides/GLib.py         | 12 ++++++++++++
- gi/overrides/GObject.py      |  4 +++-
- tests/test_overrides_glib.py |  7 +++++++
- 3 files changed, 22 insertions(+), 1 deletion(-)
-
-commit f74acb38f1410982f3419acb134adf173600e497
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Jan 27 16:06:03 2015 +0100
-
-    Emit PyGIDeprecationWarning when accessing deprecated override
-    attributes.
-
-    Adds a new helper function for overrides to mark a module level
-    attribute
-    as deprecated. A warning will be emitted every time the attribute gets
-    accessed.
-
-    e.g. when marking GObject.STATUS_FOO as deprecated using
-
-       STATUS_FOO = GLib.Status.FOO
-       deprecated_attr("GObject", "STATUS_FOO", "GLib.Status.FOO")
-       __all__.append("STATUS_FOO")
-
-    accessing it will emit
-
-      "GObject.STATUS_FOO is deprecated; use GLib.Status.FOO instead"
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743514
-
- gi/overrides/GLib.py     | 44 ++++++++++++++++-------
- gi/overrides/GObject.py  | 90
- +++++++++++++++++++++++++-----------------------
- gi/overrides/__init__.py | 74 ++++++++++++++++++++++++++++++++++++++-
- tests/test_gi.py         | 70 +++++++++++++++++++++++++++++++++++++
- 4 files changed, 221 insertions(+), 57 deletions(-)
-
-commit a10df7d28c01d70ee33d8e4e9ddaa23f1990ca60
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Jan 27 19:13:54 2015 +0100
-
-    Add namespace and container name to callable cache and include them
-    in all warnings/error messages.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743468
-
- gi/pygi-cache.c          | 39 ++++++++++++++++++++++++++++++++++-----
- gi/pygi-cache.h          |  5 +++++
- gi/pygi-closure.c        |  4 +++-
- gi/pygi-invoke.c         | 41 +++++++++++++++++++++++++++++------------
- tests/test_everything.py |  2 +-
- tests/test_gi.py         | 28 ++++++++++++++++++----------
- 6 files changed, 90 insertions(+), 29 deletions(-)
-
-commit 747fc3754c296ad5481d354bbf35521f886c5c61
-Author: Garrett Regier <garrettregier@gmail.com>
-Date:   Sun Mar 1 03:30:46 2015 -0800
-
-    tests: Add test for GIRepository.UnionInfo.get_size()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=745362
-
- tests/test_repository.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 2dcce92b4fab95403b9bbedffa8a91453c947927
-Author: Garrett Regier <garrettregier@gmail.com>
-Date:   Fri Jan 23 01:37:35 2015 -0800
-
-    Avoid duping filenames when marshalling from Python to C
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=744719
-
- gi/pygi-basictype.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-commit 26fe8dafb933fa76afd41e45b10a3163a7380c1e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 20 22:06:24 2015 -0800
-
-    configure.ac: post release version bump to 3.15.1
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e8aef305d273ce551da41e74a54c5d03de5a0c2a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 20 22:04:43 2015 -0800
-
-    release 3.15.0
-
- NEWS | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 5dc113283c0a721c4027026bb8de7243585f1289
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 20 21:59:10 2015 -0800
-
-    Ignore deprecation warning for g_option_group_free()
-
- gi/pygoptiongroup.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit d8961622ea748c42171bdb4703e70022035ec3cc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 20 21:52:58 2015 -0800
-
-    tests: Make get_all_dependendencies() test more robust
-
-    Replace array comparison with checking if individual items are in
-    the array.
-    This solves a problem where the returned array might be in a
-    different order
-    as well as future proofs the test in case more dependencies are added.
-
- tests/test_import_machinery.py | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-commit b10ab49afb97655507e2d3b92f621387287a2928
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 20 20:16:35 2015 -0800
-
-    tests: Fix PEP8 error with commented code in test
-
- tests/test_gi.py | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 60de632153a693fb2b0f2ce26208c6ff668bdf4d
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Tue Jan 27 10:39:53 2015 -0800
-
-    Avoid copying bytearrays from Python to C when transfer nothing
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743278
-
- gi/pygi-array.c  | 23 +++++++++++++++++++----
- tests/test_gi.py | 14 +++++++++++++-
- 2 files changed, 32 insertions(+), 5 deletions(-)
-
-commit a4160892dd28ab1d656cef4d4059f3b3f95caf4a
-Author: Garrett Regier <garrett.regier@riftio.com>
-Date:   Mon Jan 19 14:53:53 2015 -0800
-
-    Allows passing arguments to opaque Boxed types
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=743214
-
- gi/pygi-info.c           |  7 +++++++
- gi/types.py              | 10 +++++++++-
- tests/test_everything.py |  9 +++++++++
- tests/test_glib.py       |  6 +++---
- 4 files changed, 28 insertions(+), 4 deletions(-)
-
-commit ef3bff4e570363e4f383d4cdae9cecd4073b03d8
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sat Jan 24 20:01:00 2015 +0100
-
-    Emit ImportWarning when gi.require_version() is not used
-
-    gi tries to import the latest version of typelibs which can cause
-    existing code to break when a newer typelib is released.
-    Emit an ImportWarning when gi.require_version() is not used to give
-    developers this awareness so they can future proof their code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727379
-
- gi/importer.py                 | 99
- +++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-repository.c           | 35 +++++++++++++++
- tests/compat_test_pygtk.py     |  7 ++-
- tests/test_atoms.py            |  6 ++-
- tests/test_import_machinery.py | 22 ++++++++++
- tests/test_overrides_gtk.py    |  7 ++-
- tests/test_overrides_pango.py  |  5 ++-
- tests/test_properties.py       |  5 ++-
- tests/test_repository.py       | 10 +++++
- 9 files changed, 187 insertions(+), 9 deletions(-)
-
-commit 149c31beced944c72fba6ca6e096c81c1100ea2b
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Dec 2 15:38:57 2014 +0100
-
-    Refactor overrides import/modules
-
-    Removes Registry and DynamicModule in favor of a simple module
-    wrapper that
-    contains only overrides and falls back to the introspection module.
-    Moves all the overrides logic into gi.overrides; Speeds up module
-    attribute access
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736678
-
- gi/importer.py                 |  11 ++--
- gi/module.py                   |  68 ---------------------
- gi/overrides/__init__.py       | 131
- ++++++++++++++++++++++++++++++-----------
- tests/test_gi.py               |   4 --
- tests/test_import_machinery.py |  32 +++++++---
- 5 files changed, 126 insertions(+), 120 deletions(-)
-
-commit 4d0ab13a8461f781986accc637fada3909cfb91a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 21 15:11:39 2014 -0700
-
-    Replace statically bound GLib.Variant.new_tuple() with GI
-
-    Remove the static implementation of _wrap_pyg_variant_new_tuple with
-    usage of the dynamic version coming from GI. Array marshalling has
-    drastically improved in recent years making the dynamic version usable
-    with a small compatibility shim for the arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735199
-
- gi/gimodule.c        | 39 ---------------------------------------
- gi/overrides/GLib.py | 12 +++++-------
- 2 files changed, 5 insertions(+), 46 deletions(-)
-
-commit 17ec0d39069b7a4cc19691ea1284f821caf84d24
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Sep 10 13:30:48 2014 -0700
-
-    overrides: Add Gdk.EventTouch union discrimination
-
-    Add EventTouch to get/setattr pass-through to support BEGIN,
-    UPDATE, END,
-    and CANCEL touch event types. Ensure Gdk.Event methods get_state(),
-    get_axis(), get_coords(), and get_root_coords() are patched onto
-    Gdk.EventTouch.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736380
-
- gi/overrides/Gdk.py         |  5 +++++
- tests/test_overrides_gdk.py | 12 ++++++++++++
- 2 files changed, 17 insertions(+)
-
-commit 16408a81713157cdf1e3b6bd74bd53e816e9dfda
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jan 3 17:20:14 2015 -0800
-
-    tests: Update pixbuf loader test to not raise exception when closing
-
-    GdkPixbuf commit:
-    https://git.gnome.org/browse/gdk-pixbuf/commit/?id=447bd32650af
-    changed the close() method to raise if the a loader is prematurely
-    closed.
-    Update the test to write a 1x1 PNG stream to ensure close() will
-    succeed.
-
- tests/compat_test_pygtk.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit fd3935541ab4baddb504e000ec659b80923afa13
-Author: Murray Cumming <murrayc@murrayc.com>
-Date:   Tue Dec 2 19:55:51 2014 +0100
-
-    PyGObjectFlags: Remove a trailing comma on the enum.
-
-    Because this produces a g++ pedantic warning.
-
- gi/pygobject.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3b70f5bc8e59e49795fcaa7b285aeff0c4565a04
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Oct 27 20:19:23 2014 -0700
-
-    Remove redefinitions of function and vfunc cache typedefs
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=737874
-
- gi/pygi-cache.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit cec9c2b253bdbc1e6493630c533acf6bb4509114
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 22 13:26:24 2014 -0700
-
-    configure.ac: post release version bump to 3.15.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f20df385f480b65a8128986ce3df4022b324ade0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 22 12:38:35 2014 -0700
-
-    release 3.14.0
-
- NEWS | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 309d4100a08867d18420586c3b1f8709c360250f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 22 12:24:32 2014 -0700
-
-    configure.ac: pre release version bump to 3.14.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 4b7c985aa57f8026da96d174454b308858ebd1cc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 15 15:46:04 2014 -0700
-
-    release 3.13.92
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 79bad703a089a4b0c31fcdb143b889667f5fa197
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Sep 12 17:10:04 2014 -0700
-
-    tests: Add test for Gio.Application.add_main_option()
-
- tests/test_gio.py | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-commit a2f98a9ba0b0dda0d3cf59651327e5c93d5479d6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Sep 11 19:32:53 2014 -0700
-
-    Split test_everything.TestEverything.test_string() into multiple tests
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735193
-
- tests/test_everything.py | 25 +++++++++++++++++++------
- 1 file changed, 19 insertions(+), 6 deletions(-)
-
-commit 6674701b6de02353738b9dc04ab88de23996704e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Sep 11 19:08:53 2014 -0700
-
-    tests: Split array tests up
-
-    Split test_everything.TestEverything.test_array(),
-    test_array_fixed_size(),
-    and test_ptrarray() into functions of a finer granularity. This
-    allows for
-    easier diagnosis of problems and leaks when they occur.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735193
-
- tests/test_everything.py | 37 ++++++++++++++++++++++++++++++++-----
- 1 file changed, 32 insertions(+), 5 deletions(-)
-
-commit d1bae18ba0514864a37bf5d182605e2100c28d7e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Sep 11 16:17:13 2014 -0700
-
-    tests: Split test_strv() into multiple tests
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735193
-
- tests/test_everything.py | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-commit 6181f724bc2c6ea30194c961cb15b2c543a48f95
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Sep 10 19:06:35 2014 -0700
-
-    Fix invalid read error in argument cleanup code
-
-    Always set initial length argument index for arrays to -1. Ensure
-    we don't
-    attempt retrieving Python cleanup arguments until we know it is valid.
-    This was causing an invalid read in test_gi.TestArray.test_array_out()
-
- gi/pygi-array.c           |  1 +
- gi/pygi-marshal-cleanup.c | 13 ++++++++-----
- 2 files changed, 9 insertions(+), 5 deletions(-)
-
-commit 972e944ad4b2aac03c61633b8c277e35395c114c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Sep 10 18:55:45 2014 -0700
-
-    tests: Increase num-callers for valgrind runs
-
-    Additionally split valgrind check variations over multiple lines
-    for readability.
-
- tests/Makefile.am | 23 ++++++++++++++++++++---
- 1 file changed, 20 insertions(+), 3 deletions(-)
-
-commit d70b300c7415dd7b20ff88b09fe835690da19831
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Sep 6 23:58:25 2014 -0700
-
-    Fix memory management problems with struct arguments to signals
-
-    Replicate struct marshaling logic for determining if struct arguments
-    to signals should be passed by reference to callbacks.
-    Maintain a list of these structs and apply an in-place copy of
-    the struct
-    pointer if the struct wrapper is held longer than the duration of the
-    Python callback. This allows for both mutation of struct arguments
-    from
-    callbacks as well as memory safety incase a callbacks holds onto
-    the struct.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736175
-
- gi/pygi-boxed.c             | 20 ++++++++++++++++++++
- gi/pygi-boxed.h             |  2 ++
- gi/pygi-signal-closure.c    | 43
- +++++++++++++++++++++++++++++++++++++------
- tests/test_overrides_gtk.py |  1 -
- tests/test_signal.py        | 27 +++++++++++++++++++++++++++
- 5 files changed, 86 insertions(+), 7 deletions(-)
-
-commit 09161ff690ad37c94668d5d65191f4d84829d41f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Sep 7 15:53:35 2014 -0700
-
-    Limit foreign struct checks to GI_INFO_TYPE_STRUCT
-
-    Add struct type check before calling g_struct_info_is_foreign().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736175
-
- gi/pygi-argument.c       | 11 ++++++++---
- gi/pygi-struct-marshal.c |  7 +++++--
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-commit 4ebb1f5a4750712bd919a31103ed8c8d6af483b3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Sep 6 15:16:06 2014 -0700
-
-    tests: Add failing regression test for Gtk.TextBuffer.insert-text
-    signal
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=736175
-
- tests/test_overrides_gtk.py | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit 2f355dc4e9724f25c200d30db1c8fbc4695f9ab7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 1 17:36:46 2014 -0700
-
-    configure.ac: post release version bump to 3.13.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 68d34721a21bfac1a43252bd92612c2460ea60dd
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 1 17:31:39 2014 -0700
-
-    release 3.13.91
-
- NEWS | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-commit 8c6cf22d74075b7169512b9e7773a511abb9b759
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 1 16:48:15 2014 -0700
-
-    docs: Skip "Constructors" header for anonymous structs
-
-    Structs which don't have a size or constructor should not procuce
-    any doc
-    string. The trailing "::" was causing a problem with sphinx.
-
- gi/docstring.py         | 8 ++++++--
- tests/test_docstring.py | 3 ++-
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-commit c1ea60be30ebf11c2e5415180305e4ac3c573f57
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 1 15:21:04 2014 -0700
-
-    docs: Fix error when using may_return_null()
-
-    Fix error with an untested code path opened up by commit 1f78dc0ace.
-
- gi/docstring.py         | 3 ++-
- tests/test_docstring.py | 4 ++++
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-commit 1f78dc0ace5282def9f1f700bfe4523de07e7549
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 29 16:49:14 2014 -0700
-
-    docs: Fix function doc string generator return types
-
-    Change skip_return() access into a function call. This was causing
-    return type doc strings to always be skipped.
-
- gi/docstring.py         | 2 +-
- tests/test_docstring.py | 8 ++++++--
- 2 files changed, 7 insertions(+), 3 deletions(-)
-
-commit 28d0337f0e3d4b0e9c4350ce5d6cf0cb68da843f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 29 14:18:28 2014 -0700
-
-    Special case signal output arguments which are structs as
-    pass-by-reference
-
-    Add a special case which avoids copying of struct arguments marked
-    as output
-    to signals. Since we don't currently support output arguments,
-    users have
-    come to rely on a pass-by-reference bug which was fixed and caused
-    this to
-    regress (bug 722899). Add unittest which is currently failing due
-    to a number
-    of issues with emit() not supporting type annotations or output
-    arguments
-    (bug 735693).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735486
-
- gi/pygi-signal-closure.c    | 41
- +++++++++++++++++++++++++++++++++++------
- tests/test_overrides_gtk.py | 24 ++++++++++++++++++++++++
- 2 files changed, 59 insertions(+), 6 deletions(-)
-
-commit 16f8f687eae0caa1e4059fd62bd1f9d4c7f655f7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 27 23:55:06 2014 -0700
-
-    Ignore closure callbacks when Python is not initialized
-
-    Add an immediate return in ffi closures if Python is not initialized.
-    This fixes rare events when which lead to a segfault when a process
-    is exiting.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722562
-
- gi/pygi-closure.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 27a14679dce33f64bbb5d77677eba83849f168ff
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Fri Aug 22 21:51:31 2014 -0700
-
-    Change boxed init with args to warn instead of raise
-
-    Replace raising a TypeError in gi.types.Boxed() with a warning.
-    Even though passing arguments or keywords to the parent class is
-    incorrect here, raising an exception was causing a bit of fallout
-    in some apps (Gramps).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727810
-
- gi/pygi-boxed.c  |  5 ++++-
- tests/test_gi.py | 13 +++++++++++--
- 2 files changed, 15 insertions(+), 3 deletions(-)
-
-commit 6008748bd7ecc6e5c933e6902c77d8485b905a6f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 22 02:16:10 2014 -0700
-
-    tests: Add test for GLib.spawn_async_with_pipes()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735213
-
- tests/test_signal.py     |  2 +-
- tests/test_subprocess.py | 17 +++++++++++++++++
- 2 files changed, 18 insertions(+), 1 deletion(-)
-
-commit 983276fb1cbc261d062ef93ba2266d08a5a6f423
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 21 17:16:31 2014 -0700
-
-    Revert "Replace statically bound GLib.Variant.new_tuple() with GI"
-
-    This was accidentally pushed.
-    Revert commit 35c6540c42a01e1155f44533cc09e6c9f94b6613.
-
- gi/gimodule.c        | 39 +++++++++++++++++++++++++++++++++++++++
- gi/overrides/GLib.py | 12 +++++++-----
- 2 files changed, 46 insertions(+), 5 deletions(-)
-
-commit b7a4e68a224ab66f67e45667023f74dd743e6177
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Fri Aug 22 01:04:40 2014 +0200
-
-    Fix crash in GList/GSList marshaling error handling path.
-
-    In case PySequence_GetItem() failed, the retured NULL was passed
-    to PyDECREF.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735201
-
- gi/pygi-list.c   |  4 ++--
- tests/test_gi.py | 16 ++++++++++++++++
- 2 files changed, 18 insertions(+), 2 deletions(-)
-
-commit 35c6540c42a01e1155f44533cc09e6c9f94b6613
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 21 15:11:39 2014 -0700
-
-    Replace statically bound GLib.Variant.new_tuple() with GI
-
-    Remove the static implementation of _wrap_pyg_variant_new_tuple with
-    usage of the dynamic version coming from GI. Array marshalling has
-    drastically improved in recent years making the dynamic version usable
-    with a small compatibility shim for the arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735199
-
- gi/gimodule.c        | 39 ---------------------------------------
- gi/overrides/GLib.py | 12 +++++-------
- 2 files changed, 5 insertions(+), 46 deletions(-)
-
-commit c1d387540a0b2db66e860c574b070051a5431914
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 21 14:37:14 2014 -0700
-
-    Fix reference counting problems with GLib.Variant.new_tuple()
-
-    Always sink the results of g_variant_new_tuple() in the statically
-    bound wrapper. This matches the generic GI marshalling behavior
-    of passing GVariants to Python with transfer-none.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735166
-
- gi/gimodule.c                | 1 +
- tests/test_overrides_glib.py | 7 +++++++
- 2 files changed, 8 insertions(+)
-
-commit 9ce261f27742ba200f70003f162291a375d244d3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Aug 19 14:57:31 2014 -0700
-
-    configure.ac: Fix darwin builds
-
-    Merge platform_win32 and os_win32 variables/case statements and
-    define "link_python_libs" for win32 as well as darwin.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735068
-
- configure.ac | 30 +++++++++++-------------------
- 1 file changed, 11 insertions(+), 19 deletions(-)
-
-commit 92f0d6ebf9b67729d8253e15fce77b0ad0375573
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 20 13:39:31 2014 -0700
-
-    Skip marshalling NULL output arguments in Python closures
-
-    Skip marshalling optional output arguments which are passed NULL
-    as the memory location. This fixes fallout from bug 727004.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=735090
-
- gi/pygi-closure.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit d7e30c3cacf3cdd550e4dbfe2fa47aea1ae28147
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 18 19:10:36 2014 -0700
-
-    configure.ac: post release version bump to 3.13.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 17ba19c2e9b91a1bb8b03fabd4100d436c96975d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 18 19:07:10 2014 -0700
-
-    release 3.13.90
-
- NEWS | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-commit 6bcfaf6e1e2331b704dd6067d45d6840e87632a2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 18 18:57:28 2014 -0700
-
-    configure.ac: pre release version bump to 3.13.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3b5b590599ca98cc51871878618cd59fc05212d1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 18 02:33:54 2014 -0700
-
-    gtk-demo: Don't use deprecated constructor for Gtk.Label
-
- demos/gtk-demo/demos/pickers.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5b82051d23f8d759b6fa57a4e9327e300568c89f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Aug 9 02:30:43 2014 -0700
-
-    Fast path Python Property getter when accessed through GObject
-    interfaces
-
-    Break do_get_property() call into a re-usable function.
-    Call do_get_property() Python implementations instead of going
-    through GObject
-    machinery for Python GObjects. This gives a performance boost
-    for Python
-    GObject properties when accessed via. obj.get_property() and
-    obj.props.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=723872
-
- gi/gobjectmodule.c | 11 ++++-------
- gi/pygi-property.c | 35 +++++++++++++++++++++++++++--------
- gi/pygi-property.h |  3 +++
- 3 files changed, 34 insertions(+), 15 deletions(-)
-
-commit 0a99f878e40c8d683157dea69c3c9ac40d13d734
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Aug 9 02:10:11 2014 -0700
-
-    Fast path Python Property getter when accessing descriptor directly
-
-    Call the Python implemented fget() when a property is accessed
-    directly
-    on a Python implemented GObject. This skips going through the GObject
-    machinery which ends up calling fget() and marshalling the results
-    through GValues.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=723872
-
- gi/_propertyhelper.py | 19 +++++++++++++++----
- 1 file changed, 15 insertions(+), 4 deletions(-)
-
-commit 74722386192ad27aac8855d4603d8120af82c98e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 18 02:05:58 2014 -0700
-
-    Don't use GI type for determining pointer extraction from GValues
-
-    Replace usage of g_type_is_a() with G_VALUE_HOLDS() when extracting
-    pointers from GValues being marshalled from properties and signals.
-    This fixes fallout from commit abdfb0f.
-
- gi/pygi-value.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-commit 2601011e9eb3b5f391161313ed568e5c4b67c99a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 23:58:17 2014 -0700
-
-    Fast path property access for basic types
-
-    Attempt marshalling with pygi_value_to_py_basic_type() prior to
-    looking at
-    GI info. This gives a quick conversion for basic types like bools,
-    ints, and
-    strings without having to go through GIArgument and GI
-    conversions. This
-    gives approximately a 3x performance boost for accessing these
-    types with
-    the unified GValue marshaller.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-property.c |  9 +++++++++
- gi/pygi-value.c    | 26 ++++++++++++++++++--------
- 2 files changed, 27 insertions(+), 8 deletions(-)
-
-commit 8f4b06f700ed79df32774fad8e2a2a922bfbfbe5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 16:31:01 2014 -0700
-
-    Break pyg_value_as_pyobject into two functions
-
-    Add pygi_value_to_py_basic_type() which is limited to handling basic
-    types that don't need introspection information when marshalling
-    to Python.
-    Add pygi_value_to_py_structured_type() for marshalling of structured
-    data
-    which can eventually accept GI type hints.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-value.c | 74
- +++++++++++++++++++++++++++++++++++++++++++++++----------
- gi/pygi-value.h |  6 +++++
- 2 files changed, 68 insertions(+), 12 deletions(-)
-
-commit b0236d6fde137e0b2ecf7f5556ad5d53c22874bc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 20:55:28 2014 -0700
-
-    Unify property getters
-
-    Consolidate duplicate logic into pygi_get_property_value().
-    Use the function for GObject.get_property(), GObject.get_properties(),
-    and GObject.props.
-    Remove overridden expected failures in TestCGetPropertyMethod which
-    now work due to the unification.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=733893
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-property.c       | 85 +++++++++++++++++++++++++++++-------------
- gi/pygi-property.h       |  4 ++
- gi/pygobject.c           | 97
- +++++++-----------------------------------------
- tests/test_properties.py | 38 -------------------
- 4 files changed, 77 insertions(+), 147 deletions(-)
-
-commit abdfb0fa3f72f9bf822c472d16c90d6b1871610b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 19:09:30 2014 -0700
-
-    Merge pygi_get_property_value and _pygi_argument_from_g_value
-
-    Merge duplicated GValue marshaling code which has diverged over time
-    (commits 3606eb20, ee62df4d, e14ebab6, 8cfd596c, 9f50fd21, 0d099bdb,
-    and 216caf59).
-    Use _pygi_argument_to_array within pygi_get_property_value. This
-    is needed
-    in the new code for supporting GI_TYPE_TAG_ARRAY and also fixes
-    bug 669496.
-    Side effects of this change also include support for properties
-    holding
-    G_TYPE_FLAGS and G_TYPE_PARAM.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-property.c | 140
- +++++------------------------------------------------
- gi/pygi-value.c    |  24 ++++++---
- 2 files changed, 28 insertions(+), 136 deletions(-)
-
-commit 142ff1903d34876db3d1bee5e9782ac49de12313
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 04:40:36 2014 -0700
-
-    Never dup data structures when marshaling signal in arguments
-
-    Always assume transfer-none of GValue arguments to signal handlers.
-    A signal handler with arguments marked as transfer-full does not
-    make any sense, so assume they are always transfer-none.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-signal-closure.c | 4 +---
- gi/pygi-value.c          | 4 +++-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-commit 04816f74194bd2c95b8b958dcf9ed5da5a83e001
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 04:23:39 2014 -0700
-
-    Never dup data structures when marshaling from g_object_get_property()
-
-    Always use transfer-none with the results of g_object_get_property()
-    and assume g_value_unset() will cleanup the results. This gives us
-    control over memory of properties and limits property anotations to
-    value typing.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/pygi-property.c | 24 +++++++-----------------
- 1 file changed, 7 insertions(+), 17 deletions(-)
-
-commit 85175047e66dfc0c0263eac91d8056a95d0a60a0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 29 19:29:28 2014 -0700
-
-    Refactor boxed wrapper memory management strategy
-
-    Change pygi_boxed_new() to accept "copy_boxed" instead of
-    "free_on_dealloc".
-    This changes memory management so the PyGIBoxed wrapper owns the boxed
-    pointer given to it. Use __del__ instead of dealloc for freeing
-    the boxed
-    memory. This is needed for edge cases where objects like GSource can
-    trigger the finalized callback during de-alloc, resulting in the
-    PyObjects
-    references counts being manipulated and triggering a re-entrant
-    de-alloc.
-    Add hack to keep Gtk.TreeIter.do_iter_next/previous implementations
-    working
-    which rely on pass-by-reference.
-    See also: https://bugzilla.gnome.org/show_bug.cgi?id=734465
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722899
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- gi/gimodule.c            |  6 +++-
- gi/overrides/GLib.py     |  4 ---
- gi/overrides/GObject.py  |  3 ++
- gi/pygi-boxed.c          | 54 +++++++++++++++++++++++++-------
- gi/pygi-boxed.h          |  4 +--
- gi/pygi-source.c         |  6 ++--
- gi/pygi-struct-marshal.c | 81
- +++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_gi.py         |  1 -
- tests/test_source.py     |  8 +++--
- 9 files changed, 140 insertions(+), 27 deletions(-)
-
-commit 62aed0977090f7099a5e538209f7c680ea22fe12
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Aug 17 19:04:51 2014 -0700
-
-    Replace GObject.signal_query with introspected version
-
-    Remove the static bindings for GObject.signal_query and replace with a
-    Python compatibility shim which utilizes the introspection exposed
-    version
-    of the function.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688792
-
- gi/gobjectmodule.c      | 89
- -------------------------------------------------
- gi/overrides/GObject.py | 39 ++++++++++++----------
- 2 files changed, 21 insertions(+), 107 deletions(-)
-
-commit 4e130d72a5492fc00c61a816eddccdbc4f558b91
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Aug 17 19:03:32 2014 -0700
-
-    Use array lengths specified on struct fields
-
-    Add array length marshalling policy for struct fields. This fixes
-    accessing
-    C array fields on structs which also specify a length field.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688792
-
- gi/pygi-argument.c | 14 ++++++-------
- gi/pygi-argument.h |  4 ++++
- gi/pygi-info.c     | 59
- ++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 3 files changed, 68 insertions(+), 9 deletions(-)
-
-commit c55d029d2d67b5920e9467212e22b0ad58d3ded8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Aug 17 18:15:23 2014 -0700
-
-    Refactor signal array length marshalling to support a length policy
-
-    Replace passing arrays of data to non-caching array marshallers with
-    a policy
-    closure that can be customized depending on context. In the case
-    of signals,
-    this is mostly scaffolding which will be replaced with caching
-    marshallers.
-    However, it opens the legacy marshaller for usage with struct
-    and object
-    array fields.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688792
-
- gi/pygi-argument.c       | 70
- ++++++++++++++++++++++++++++++++----------------
- gi/pygi-argument.h       | 14 +++++++---
- gi/pygi-signal-closure.c |  8 ++++--
- 3 files changed, 64 insertions(+), 28 deletions(-)
-
-commit 3270dad356c44f5fef7571a9f29b22e7c293fa2c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Aug 17 13:58:10 2014 -0700
-
-    Remove dead code for marshalling array lengths in the context
-    of vfuncs
-
-    Remove usage of the args parameter from _pygi_argument_to_array. This
-    is no
-    longer used because array marshalling for vfuncs is now handled by
-    the cached
-    marshaller.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688792
-
- gi/pygi-argument.c | 24 +++++++++---------------
- 1 file changed, 9 insertions(+), 15 deletions(-)
-
-commit 6046ca87697fe80c6c0eb70f1efcad24de4f4fd8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Aug 17 21:53:55 2014 -0700
-
-    Fix memory leak with unboxed caller allocated structs
-
-    Take caller-allocates into account when wrapping unboxed structures.
-    This will free the allocated memory when the Python object is
-    de-alloced.
-
- gi/pygi-struct-marshal.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit c607f07f5ae3ca62ee3a2649f84330eaaa8801c6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Aug 16 22:34:29 2014 -0700
-
-    tests: Add reference count test for signal connection arguments
-
-    Add tests for ensuring reference counts are what we expect for
-    connect() callback, user_data, and swap object (currently broken
-    due to bug 688064).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- tests/test_signal.py | 133
- +++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 133 insertions(+)
-
-commit 7076669aadfc5227144df87277d69ae66865770a
-Author: Tobias Mueller <gnome-bugs@muelli.cryptobitch.de>
-Date:   Sat Aug 16 17:46:50 2014 -0700
-
-    Don't mask GObject sub-class doc strings in meta-class
-
-    If a class has a __doc__ attribute explicitly set, always return it.
-    Only generate doc strings for classes coming from  gi.repository
-    or gi.overrides.
-
-    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=731452
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734926
-
- gi/types.py             | 12 +++++++++++-
- tests/test_docstring.py |  2 --
- 2 files changed, 11 insertions(+), 3 deletions(-)
-
-commit 4cdca4328da7442be247e775294fc676cf677bb7
-Author: Piotr Iwaniuk <piwaniuk@poczta.onet.pl>
-Date:   Sat Aug 16 15:06:40 2014 -0700
-
-    tests: Add failing tests for GObject sub-class doc-strings
-
-    Add tests for sub-class docstrings set with either doc-string
-    syntax and by setting the __doc__ attribute directly.
-
-    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=731452
-
- tests/test_docstring.py | 39 +++++++++++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
-
-commit 9328a6721909322f0e1444e5285ae1b7b5bf1e3c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 14 22:47:14 2014 -0700
-
-    configure.ac: post release version bump to 3.13.5
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 49fd1662623f6dbb6af16b9fbfc0fb57707a7eee
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 14 22:42:27 2014 -0700
-
-    release 3.13.4
-
- NEWS | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-commit 0d2e797812ab4e1a745ef97559104691dbb6b824
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 14 18:33:06 2014 -0700
-
-    Fix invalid unref after getting callable container
-
-    Don't unref the results of g_base_info_get_container() because it is
-    transfer-none. This was causing an attempted unref on an invalid
-    object
-    when setting up callback caches for signals.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-cache.c | 2 --
- 1 file changed, 2 deletions(-)
-
-commit 654c28faffc8d956bd31987adca092fa014cc897
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 14 21:31:33 2014 -0700
-
-    tests: Silence valgrindlog and valgrindxml output from forked procs
-
-    This is needed to properly diff valgrind runs between commits.
-
- tests/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 57070585a5d5dbc5f42d6fa6d2c309b36f38dfdc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 13 10:27:01 2014 -0700
-
-    Remove ffi wrapped destroy notify used for closure cleanup
-
-    Remove global ffi wrapper for _pygi_invoke_closure_free() and
-    instead use
-    a pointer to _pygi_invoke_closure_free() directly. There is no need
-    to wrap
-    a known single use function with an ffi closure. Originally
-    introduced in
-    commit 610dd1eec87f.
-
- gi/pygi-closure.c | 49 +------------------------------------------------
- 1 file changed, 1 insertion(+), 48 deletions(-)
-
-commit 3f9b5f890ad1292f12eba1e545084de80b76dab7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Aug 12 22:19:24 2014 -0700
-
-    tests: Update tests for static binding protection to check
-    AttributeErrors
-
- tests/test_import_machinery.py | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit e674340db90c29c556b45e0a8f8b2da72661b738
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 11 23:12:38 2014 -0700
-
-    Use AttributeError for static binding protection
-
-    Replace usage of RuntimeError with AttributeError in the dummy module
-    protecting importing of static bindings. This is needed so we
-    don't break
-    modules like inspect which is used by ipython.
-
- gi/__init__.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 86fb12b3e9b7558000d100f8f212e970ae8c4fd2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 11 22:47:14 2014 -0700
-
-    Add deprecation warning for connect_object() with non-GObject argument
-
-    GObject.connect_object() accepts any Python object and holds a strong
-    reference to it in the closure defeating the purpose of
-    connect_object().
-    Add a warning so we can eventually limit connect_object() to GObject
-    arguments
-    use the underlying g_signal_connect_object() which holds a weak
-    reference.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688064
-
- gi/pygobject.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 9c54bb9defb681316841158cc63df0b0b85c12f0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 11 22:39:13 2014 -0700
-
-    tests: Add tests for connect_object()
-
-    Add tests for both introspected and non-introspected signals
-    making use
-    of connect_object() and connect_object_after() in combination
-    with GObject
-    and Python object swap data.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- tests/test_signal.py | 139
- +++++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 117 insertions(+), 22 deletions(-)
-
-commit 581acc4c56be127b3a724df504bb46a40959fdd9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 11 21:21:42 2014 -0700
-
-    Add Python implementation of Object.connect_data()
-
-    Add GObject.Object.connect_data() which takes an optional
-    "connect_flags"
-    keyword argument accepting GObject.ConnectFlags enum values. This is
-    for supporting user data swapping (ConnectFlags.SWAPPED).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701843
-
- gi/overrides/GObject.py |  37 ++++++++++++++++
- tests/test_signal.py    | 109
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 146 insertions(+)
-
-commit b1caef95c4b68b65f3f159563162afde5a0b0939
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Aug 9 02:14:23 2014 -0700
-
-    tests: Add failing tests which verify exceptions raised in property
-    getters
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=575652
-
- tests/test_properties.py | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-commit 19cdbee5a89009da0eb366b9c698a860a7aa92b8
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Fri Aug 8 10:08:23 2014 -0400
-
-    Cleanup input args when marshaling in closures
-
-    The cleanup must happen before setting the out args otherwise
-    the args that cleanup would free are the just set args, not the
-    original ones.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-closure.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7742fab42de5b1f4f8161237fc3cef91fd98791c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 02:47:11 2014 -0700
-
-    tests: Fix Python 2 build for newly added test_array_parm()
-
-    Use @unittest.skip() with a string argument as required by Python 2.
-
- tests/test_signal.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3165c17a455652de9a61439428fa40f30120dc6a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 02:46:26 2014 -0700
-
-    Remove incorrect and unused casts from tp_free calls
-
-    Arguments to Py_TYPE() do not need to be cast since the macro
-    always casts
-    to a PyObject* internall.
-
- gi/pygi-boxed.c     | 2 +-
- gi/pygi-ccallback.c | 2 +-
- gi/pygi-info.c      | 2 +-
- gi/pygi-struct.c    | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-commit 74dfec27c6008968cc66a13792dfb02b29c231b6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 8 02:33:51 2014 -0700
-
-    Fix GCallback Python wrapper leak
-
-    The PyObject wrapper for GCallbacks was not calling tp_free in
-    the custom
-    tp_dealloc class method.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695130
-
- gi/pygi-ccallback.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit dcf9111a86e01d66943909a0c9f21a181ccc38a6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Aug 8 01:55:21 2014 -0700
-
-    tests: Add failing test for marshalling an array of GValues through
-    signals
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=669496
-
- tests/test_signal.py | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-commit d689d24f271c30612c6a86b5c51d50a1179aedad
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 7 17:52:35 2014 -0700
-
-    tests: Add tests for GApplication local command line handling
-
-    Add various tests which override Gio.Appliction.do_command_line and
-    do_local_command_line.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690851
-
- tests/test_gio.py | 65
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 65 insertions(+)
-
-commit 59c257ebc47fa725750344dd50dd8eb522536d3c
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Thu Aug 7 12:25:59 2014 -0400
-
-    Add test for a callback with an inout array
-
-    This was broken until the closures used the caches for marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=702508
-
- tests/test_everything.py | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit 9d0c43b2b9f92fff4249e4eb296f00ea73b15af3
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Thu Aug 7 12:06:30 2014 -0400
-
-    Fix raising an error in a constructor
-
-    It should raise a Python exception instead of warnings about
-    a constructor returning NULL.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-cache.c  | 6 +++---
- tests/test_gi.py | 6 ++++++
- 2 files changed, 9 insertions(+), 3 deletions(-)
-
-commit d7b9ef0f5411ebcbb2597c16b221fd3482c535e4
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Wed Aug 6 15:30:58 2014 -0400
-
-    Use the caches for marshaling the arguments in closures
-
-    Changes to object marshaling when the calling context is from
-    C was required to correctly keep the correct floating status.
-
-    The array cache has been modified to set to/from_py_marshaller
-    for the length arg cache. This is required for closures which include
-    the length arg for backwards compatibility. The closure cache takes
-    care to change the length arg cache's meta type so it gets marshalled
-    for closures.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-array.c     |   5 +-
- gi/pygi-basictype.c |   4 +-
- gi/pygi-basictype.h |  36 +++--
- gi/pygi-cache.c     |  30 +++-
- gi/pygi-closure.c   | 403
- ++++++++++++++++++++++++++++------------------------
- gi/pygi-invoke.c    |   3 +-
- 6 files changed, 271 insertions(+), 210 deletions(-)
-
-commit 9337acf98d783777c94d4bcb912a185ba6791efb
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Wed Aug 6 12:14:27 2014 -0400
-
-    Specialize GObject marshaling when called from C
-
-    These are needed otherwise the floating status of
-    the GObject will not be kept.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-object.c | 86
- +++++++++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 72 insertions(+), 14 deletions(-)
-
-commit cf295f636b6324a46abbaf329cd6d92c04155d9d
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Wed Aug 6 11:59:09 2014 -0400
-
-    Move special handling of GObject from Python when calling from C
-
-    This will soon be used in the GObject arg cache marshaling when
-    the calling context is C.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-argument.c | 21 +--------------------
- gi/pygi-object.c   | 30 ++++++++++++++++++++++++++++++
- gi/pygi-object.h   |  5 +++++
- 3 files changed, 36 insertions(+), 20 deletions(-)
-
-commit 0d09234ea0399d756ee3fb0d358fab5b0a145657
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Wed Aug 6 11:53:39 2014 -0400
-
-    Always pass along the callable cache to the arg cache constructors
-
-    This will be needed in a future patch which requires that the callable
-    cache is always available.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-array.c     | 20 ++++++++++++--------
- gi/pygi-array.h     |  9 +++++----
- gi/pygi-cache.c     | 34 ++++++++++++++++++++--------------
- gi/pygi-cache.h     |  7 ++++---
- gi/pygi-hashtable.c | 31 +++++++++++++++++--------------
- gi/pygi-hashtable.h |  9 +++++----
- gi/pygi-list.c      | 30 +++++++++++++++++++-----------
- gi/pygi-list.h      |  9 +++++----
- gi/pygi-object.c    | 25 ++++++++++++++-----------
- gi/pygi-object.h    |  3 ++-
- 10 files changed, 103 insertions(+), 74 deletions(-)
-
-commit 203fef99205ce0c46b1530b0d480021ee8b8e325
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Tue Aug 5 10:42:46 2014 -0400
-
-    Set the correct meta type for GErrors when marshaling to Python
-
-    Otherwise we do not pass the GError into python callbacks and
-    we also want to convert these into Python Exceptions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-error.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2e92809258d04e91c9d22f2fc0de09db2e60c962
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Tue Aug 5 10:37:58 2014 -0400
-
-    Pass the GIArgument to the closure assign functions
-
-    This will be required once we use the caches for marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-closure.c | 102
- ++++++++++++++++++++++++++----------------------------
- 1 file changed, 50 insertions(+), 52 deletions(-)
-
-commit ca3579db14df278923674c294d07481a7255510f
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Tue Aug 5 10:25:40 2014 -0400
-
-    Use the caches for closures, but not yet for marshaling the arguments
-
-    Instead of using the various GI functions we use the data from
-    the caches.
-    This also fixes generating an arg cache for a closure as it was
-    missing some
-    data or simply setting incorrect data. Also, always included the
-    GITypeInfo
-    until the closures no longer need it for marshaling the arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-cache.c   |  33 +++++++-
- gi/pygi-cache.h   |   4 +
- gi/pygi-closure.c | 245
- +++++++++++++++++++++++++-----------------------------
- gi/pygi-closure.h |   2 +
- 4 files changed, 150 insertions(+), 134 deletions(-)
-
-commit 6a21dab89b59db0afc6d6a22272028ee949b52ad
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Tue Aug 5 10:16:45 2014 -0400
-
-    Correctly set the destroy notify for callbacks in closures
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-closure.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e6d48b4eadbeb1014c4eb140317b579e69eb8d88
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Fri Aug 1 11:40:08 2014 -0400
-
-    Split the callable cache into the different types
-
-    Instead of doing different things based on the various function types
-    this adds vfuncs for generate_args_cache() and invoke() which are then
-    specialized for the various function types. Also add a calling context
-    to the callable cache which is then used to determine the direction
-    when generating the arg caches.
-
-    This is in preparation for adding closure caches.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727004
-
- gi/pygi-cache.c               | 514
- +++++++++++++++++++++++++++++++-----------
- gi/pygi-cache.h               |  96 +++++---
- gi/pygi-ccallback.c           |  16 +-
- gi/pygi-info.c                |   3 +-
- gi/pygi-invoke-state-struct.h |   2 -
- gi/pygi-invoke.c              | 244 ++++++++------------
- gi/pygi-invoke.h              |   4 +
- gi/pygi.h                     |   2 +-
- 8 files changed, 564 insertions(+), 317 deletions(-)
-
-commit 18341f27a5a9770d8caf3192a75737ab2bc06b1e
-Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Aug 6 08:27:43 2014 +0200
-
-    Generate .dll libraries on windows
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734288
-
- configure.ac      | 8 ++++++++
- tests/Makefile.am | 8 ++++----
- 2 files changed, 12 insertions(+), 4 deletions(-)
-
-commit d70403357d6b510356dd375304fb97e458fd12b2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Aug 5 22:45:46 2014 -0700
-
-    Add protection against attempts at importing static bindings
-
-    Clobber gobject, gio, glib, gtk, and gtk.gdk in sys.modules upon
-    importing
-    gi with dummy modules which produce an error upon access.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709183
-
- gi/__init__.py                 | 25 ++++++++++++++++++++++---
- tests/test_import_machinery.py | 24 ++++++++++++++++++++++++
- 2 files changed, 46 insertions(+), 3 deletions(-)
-
-commit 5ca4d25eac0efcc12b02fe53f379ee41e69bf1d2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 16:15:04 2013 -0800
-
-    Update and deprecate gi.overrides.keysyms
-
-    Replace manually assigned keysyms with a dynamically generated version
-    pulling names and values from Gdk via GI. Add a runtime warning when
-    this module is imported.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=721295
-
- gi/overrides/keysyms.py    | 1490
- +-------------------------------------------
- pygtkcompat/pygtkcompat.py |   14 +-
- 2 files changed, 27 insertions(+), 1477 deletions(-)
-
-commit 9eaeba9079c23d7e2837f62e8ed2b26c018351b6
-Author: Alexey Pavlov <alexpux@gmail.com>
-Date:   Tue Aug 5 19:03:38 2014 -0700
-
-    Use -no-undefined for building on Windows
-
-    See LT_INIT([win32-dll]):
-    http://www.gnu.org/software/libtool/manual/html_node/LT_005fINIT.html
-
-    Additionally add PYTHON_LIBS to testhelper.la linking.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734284
-
- tests/Makefile.am | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 5737a9ec4bf4d9d07a7e3994d91abf9077b342cc
-Author: Alexey Pavlov <alexpux@gmail.com>
-Date:   Tue Aug 5 18:40:53 2014 -0700
-
-    Use python-config for libs when available
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734289
-
- m4/python.m4 | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit 093abb4ed052c768f51c90324c2e40063aa6b9b9
-Author: Alexey Pavlov <alexpux@gmail.com>
-Date:   Tue Aug 5 18:20:25 2014 -0700
-
-    Link gi.so with FFI_LIBS
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734286
-
- gi/Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 9df54d23a15b871fd71c994b97ffe847ff3b9eb5
-Author: Alexey Pavlov <alexpux@gmail.com>
-Date:   Tue Aug 5 15:45:04 2014 +0200
-
-    Include math headers also on mingw
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=734287
-
- gi/pygi-basictype.c | 2 --
- 1 file changed, 2 deletions(-)
-
-commit 964ced98e03c704074d10cc362abfa14c00457ba
-Author: Garrett Regier <Garrett.Regier@riftio.com>
-Date:   Thu Jul 31 10:16:47 2014 -0400
-
-    Added args_offset to the cache instead of checking the function type
-
- gi/pygi-array.c   | 6 ++----
- gi/pygi-cache.c   | 6 +++---
- gi/pygi-cache.h   | 3 +++
- gi/pygi-closure.c | 4 +---
- 4 files changed, 9 insertions(+), 10 deletions(-)
-
-commit 9943d876059201cbee87f072a84234ed774ed932
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jul 31 21:51:00 2014 -0700
-
-    doap: Update homepage URL and email address
-
- pygobject.doap | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit afef1020a43d91014c34ffcd5a5f66281f2e7cc9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jul 31 21:46:37 2014 -0700
-
-    Change maintainer in PKG-INFO to self
-
- PKG-INFO.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 10c4d66574e35cc84bed3c3057b68ad98613d839
-Author: Andre Klapper <a9016009@gmx.de>
-Date:   Thu Jul 31 21:28:12 2014 +0200
-
-    doap: add <programming-language>
-
- pygobject.doap | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit f30001f2b01896577a2b4d956bc4658350e56b8d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 30 00:29:01 2014 -0700
-
-    Add GClosure marshalling cleanup
-
-    Add marshalling cleanup for Python callables and boxed GClosures
-    passed as arguments. Make sure the marshaller owns a reference
-    until clean. Fix transfer everything case by adding a new reference.
-    Remove unused header declaration: pygi_arg_gclosure_from_py_marshal
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695128
-
- gi/pygi-struct-marshal.c | 46
- ++++++++++++++++++++++++++++++++++++++--------
- gi/pygi-struct-marshal.h |  4 ----
- 2 files changed, 38 insertions(+), 12 deletions(-)
-
-commit cf4e830f1b613736ef9586562eb6c0b354165925
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 30 12:42:15 2014 -0700
-
-    Remove decrementing argument index for failed marshalling cleanup
-
-    Remove index decrement when cleanup function is called for failed
-    argument
-    marshalling. The decrement is incorrect and causes the failed argument
-    cleanup to be skipped. The decrement also causes cleanup for arguments
-    prior to the failed argument to receive "was_successful" as FALSE,
-    which
-    is also incorrect.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695128
-
- gi/pygi-invoke.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-commit 662a4421125d126a11ca163c362d205f0c2147c4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 30 12:46:18 2014 -0700
-
-    Use cleanup data for argument marshalling failures
-
-    Use state->args_cleanup_data when cleaning up failed argument
-    marshalling.
-    This was overlooked when cleanup data tracking was implemented
-    (commit 7407367f).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695128
-
- gi/pygi-marshal-cleanup.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-commit 39746a3b4f307974d8b3f98f7ba2aefe06d897a3
-Author: Olav Vitters <olav@vitters.nl>
-Date:   Wed Jul 30 20:41:37 2014 +0200
-
-    doap category core
-
- pygobject.doap | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 36caa74a276972eee2b18162ac09edc83c30a3cb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 23:51:19 2014 -0700
-
-    tests: Move object property reference count tests to test_properties
-
-    Move and consolidate tests for object property reference counts from
-    tests_object_marshaling to test_properties.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- tests/test_object_marshaling.py | 68
- -----------------------------------------
- tests/test_properties.py        | 36 ++++++++++++++++++++++
- 2 files changed, 36 insertions(+), 68 deletions(-)
-
-commit 15b795354ca5a8f436779ee5d81936af8961acb5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 22:20:44 2014 -0700
-
-    tests: Move test_everything.TestProperties into test_properties
-
-    Consolidate property tests found in test_everything into test_property
-    removing redundant tests already found in test_property.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- tests/test_everything.py | 69
- +-----------------------------------------------
- tests/test_properties.py | 59 +++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 60 insertions(+), 68 deletions(-)
-
-commit c691d86c6f5f073f7c1e1e6ddd4311ed27431747
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 21:32:44 2014 -0700
-
-    tests: Add tests for get/set_property()
-
-    Re-use the new CPropertiesTestBase class for testing
-    get/set_property()
-    methods.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- tests/test_properties.py | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-commit 115bc88ad5eb85e0a1821fa4fa2cad5c6df87dcc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 21:32:00 2014 -0700
-
-    tests: Break TestPropertiesObject up for re-use
-
-    Refactor TestPropertiesObject into a base class which abstracts
-    get/set
-    property methods. This will allow re-use for testing both
-    get/set_property()
-    and the props accessor.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- tests/test_properties.py | 221
- +++++++++++++++++++++++++----------------------
- 1 file changed, 118 insertions(+), 103 deletions(-)
-
-commit bf0a5c3345e65b6a7475fada4ea240dbe0049a26
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 28 19:32:00 2014 -0700
-
-    tests: Move test_gi.TestPropertiesObject into test_properties
-
-    Move all property testing code into the test_properties module.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726999
-
- tests/test_gi.py         | 233
- ----------------------------------------------
- tests/test_properties.py | 235
- +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 235 insertions(+), 233 deletions(-)
-
-commit 4941691264970b19b81d435cd58ab18ef6bac9a5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 25 18:33:15 2014 -0700
-
-    pyflakes: Fix legacy print and exception usage under Python 3
-
-    Fix print statements and legacy exception usage in examples.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=731042
-
- examples/properties.py    | 12 ++++++------
- tests/runtests-windows.py |  4 ++--
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-commit c3d3cd2f798cbae7f66d8e57e191b5f9569a713b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 25 17:49:57 2014 -0700
-
-    tests: Ignore warnings for GtkAlignment
-
-    This was causing unittests to bail. Even though this is deprecated,
-    we still need to test its usage in the context of pygtkcompat.
-
- tests/compat_test_pygtk.py | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-commit 804b89447ae2748c88ad5efe5e6e37d949681b9e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 25 17:40:36 2014 -0700
-
-    tests: Remove usage of deprecated "schema" property in GSettings
-    creation
-
-    Use new and new_with_path instead as the schema property was causing a
-    hard warning which fails the test suite.
-
- tests/test_gio.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 6b806137825891cc6bdad82a68cf3deb087feb70
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 25 17:35:06 2014 -0700
-
-    tests: Ignore stock-id usage warnings
-
-    Add ignore_glib_warnings context manager for easily ignoring warnings
-    caused by stock-id usage. Even though stock-id is deprecated, we still
-    need to test the related Python binding overrides.
-
- tests/test_overrides_gtk.py | 40 ++++++++++++++++++++++++----------------
- 1 file changed, 24 insertions(+), 16 deletions(-)
-
-commit 6b944c4e215a34bc4181c7c708b6d6f2d4898c15
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jun 23 15:55:57 2014 -0700
-
-    configure.ac: post release version bump to 3.13.4
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 58198b6ae426448cde82cad7304018c7c770c0ea
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jun 23 15:53:03 2014 -0700
-
-    release 3.13.3
-
- NEWS | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-commit cdf8c40768b00d08a1facca696a042efc6e8988f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu May 29 13:02:44 2014 -0700
-
-    demos: Cleanup CSS accordion demo to use a loop for adding buttons
-
-    Also use Gtk.main_quit directly since it has been overridden to accept
-    extra args.
-
- demos/gtk-demo/demos/Css/css_accordion.py | 21 +++------------------
- 1 file changed, 3 insertions(+), 18 deletions(-)
-
-commit ba8380d093d6f84eabcf18c02b248aae8ffc3cf5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue May 27 19:24:20 2014 -0700
-
-    refactor: Move builder connection utilities outside of Builder class
-
-    Move _extract_handler_and_args and _builder_connect_callback into
-    module
-    scope for re-use by GTK+ Composite Templates.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701843
-
- gi/overrides/Gtk.py         | 83
- ++++++++++++++++++++++++---------------------
- tests/test_overrides_gtk.py |  8 ++---
- 2 files changed, 48 insertions(+), 43 deletions(-)
-
-commit f127fabe9664b243774b76a68e6fce5986aa23a0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue May 27 15:52:10 2014 -0700
-
-    tests: Move TestSignals from test_everything into test_signal
-
-    Move these tests into a more meaningful location.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701843
-
- tests/test_everything.py | 123
- --------------------------------------------
- tests/test_signal.py     | 131
- +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 131 insertions(+), 123 deletions(-)
-
-commit da46963a0ce9f796ff4ee4ae2023adfd40ed54ca
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 26 04:21:07 2014 -0700
-
-    configure.ac: post release version bump to 3.13.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6258adf6c7c604954f0dbc1a9ed8c284114358bc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 26 04:18:55 2014 -0700
-
-    release 3.13.2
-
- NEWS | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
-commit 32542a4ba24d413fb6e0d509bff05f4ac3f642a1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 26 03:01:13 2014 -0700
-
-    Python 3.4 make check fixes
-
-    Bump GI required version to 1.39.0. This is needed to get rid of
-    expectedFailures which pass when built with 1.39.0 (unexpected
-    successes
-    fail unittesting in Python 3.4).
-    Silence deprecation warning when using imp.reload.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=730411
-
- configure.ac               | 2 +-
- pygtkcompat/pygtkcompat.py | 4 +++-
- tests/test_gi.py           | 1 -
- tests/test_repository.py   | 2 --
- 4 files changed, 4 insertions(+), 5 deletions(-)
-
-commit dbdc662b5743bb54fcc3621db775a6e948ec360c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 26 01:53:14 2014 -0700
-
-    tests: Don't use deprecated positional argument for Gio.Settings
-    schema
-
- tests/test_gio.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit d0b23f08eebd4377f066a4483900fe6d09e3795e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 25 23:03:35 2014 -0700
-
-    overrides: Add Gtk.Container.child_get/set overrides
-
-    Add overrides for child_get and child_set to Gtk.Container since these
-    are not introspectable methods.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685076
-
- gi/overrides/Gtk.py         | 10 ++++++++++
- tests/test_overrides_gtk.py | 16 ++++++++++++++++
- 2 files changed, 26 insertions(+)
-
-commit 45a5fb2b0d6c7f46d355c83c73d829532e5a72ce
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 25 22:07:07 2014 -0700
-
-    overrides: Make value argument to Widget.style_get_property optional
-
-    Override Gtk.Widget.style_get_property to optionally accept the
-    "value"
-    argument. If "value" is not supplied, the override will locate
-    the child
-    property value type and create the GValue. Additionally return
-    the resulting
-    GValue converted to a native Python value.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685076
-
- gi/overrides/Gtk.py         | 11 +++++++++++
- tests/test_overrides_gtk.py | 29 +++++++++++++++++++++++++++++
- 2 files changed, 40 insertions(+)
-
-commit 6f5a9a37bcdec5074332b1066396321d40b15d99
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 25 21:08:47 2014 -0700
-
-    overrides: Make value argument to Container.child_get_property
-    optional
-
-    Override Gtk.Container.child_get_property to optionally accept the
-    "value"
-    argument. If "value" is not supplied, the override will locate
-    the child
-    property value type and create the GValue. Additionally return
-    the resulting
-    GValue converted to a native Python value.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685076
-
- gi/overrides/Gtk.py         | 11 +++++++++++
- tests/test_overrides_gtk.py | 47
- +++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 58 insertions(+)
-
-commit bf84915f89fd5fd502b4fb162eef7bc0a48c8783
-Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon Oct 1 06:42:24 2012 -0700
-
-    Add GTypeClass methods as Python GObject class methods
-
-    Take all the methods from an objects type classs and add them
-    as class methods. For instance, GObject.ObjectClass.list_properties
-    is available as GObject.Object.list_properties().
-
-    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685218
-
- gi/types.py             | 13 +++++++++++++
- tests/test_typeclass.py | 13 +++++++++++++
- 2 files changed, 26 insertions(+)
-
-commit 778d05c93e079ba207a250b754bda9377cb47457
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 25 19:05:56 2014 -0700
-
-    Add marshalling coercion for Python classes and instances to
-    GTypeClass
-
-    Automatically marshal Python GObject classes and instances to
-    GTypeClass
-    structs (GObjectClass). This allows usage of the GTypeClass methods by
-    passing a Python GObject class or instance to the GTypeClass method.
-    This is needed to support usage of GTypeClass methods since we don't
-    manually bind GTypeClasses and they are not very well supported with
-    introspection.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685218
-
- gi/pygi-struct-marshal.c | 54 ++++++++++++++++++++++++++++++++++----
- tests/Makefile.am        |  1 +
- tests/test_typeclass.py  | 67
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 117 insertions(+), 5 deletions(-)
-
-commit 1e606287e1244cba45e3bb174d27f1c01e4f9577
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 25 02:00:00 2014 -0700
-
-    Cleanup struct marshalling function names
-
-    Use a consistent naming scheme for struct marshalling cache related
-    functions. This removes prefixed underscores from function names
-    as well as redundant wording.
-
-    To ignore this commit with git blame use:
-      git blame <this-commit-sha>^ -- gi/pygi-struct-marshal.c
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685218
-
- gi/pygi-argument.c       |  34 ++++----
- gi/pygi-array.c          |   2 +-
- gi/pygi-struct-marshal.c | 221
- ++++++++++++++++++++---------------------------
- gi/pygi-struct-marshal.h |  56 ++++++------
- 4 files changed, 142 insertions(+), 171 deletions(-)
-
-commit bbbfa967d06eb8fdef6d6ebe705cc8df2869ddf3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 16 15:08:35 2014 -0700
-
-    Use accessors for getting and setting PyGParamSpec pointers
-
-    Add pyg_param_spec_get and pyg_param_spec_set macros for getting and
-    setting the GParamSpec pointer field held by the Python wrapper. This
-    is preliminary cleanup work for supporting fundamental types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=631901
-
- gi/pygi-value.c   |  2 +-
- gi/pygobject.h    |  9 +++++++--
- gi/pygparamspec.c | 22 +++++++++++-----------
- 3 files changed, 19 insertions(+), 14 deletions(-)
-
-commit b49179ba3b39576c0c8fe8586b7091dbbaef8046
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 16 14:50:57 2014 -0700
-
-    Use accessors for getting and setting PyGPointer fields
-
-    Add pyg_pointer_get_ptr and pyg_pointer_set_ptr macros for getting and
-    setting the pointer field. This is preliminary cleanup work for
-    supporting
-    fundamental types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=631901
-
- gi/gimodule.c    |  2 +-
- gi/pygi-struct.c |  6 +++---
- gi/pygobject.h   |  2 ++
- gi/pygpointer.c  | 14 +++++++-------
- 4 files changed, 13 insertions(+), 11 deletions(-)
-
-commit 92fe52243d819ffe91597744a6a1c2362a295bce
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 16 14:19:47 2014 -0700
-
-    Use accessors for getting and setting PyGBoxed pointers
-
-    Add pyg_boxed_get_ptr and pyg_boxed_set_ptr macros for getting
-    and setting
-    the boxed pointer field. This is preliminary cleanup work for
-    supporting
-    fundamental types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=631901
-
- gi/pygboxed.c   | 20 ++++++++++----------
- gi/pygi-boxed.c |  6 +++---
- gi/pygobject.h  |  2 ++
- gi/pygtype.c    |  3 ++-
- 4 files changed, 17 insertions(+), 14 deletions(-)
-
-commit 0a4f13a571cb9bd110f435f8b23ed942e3b007b0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 11 16:04:55 2014 -0700
-
-    tests: Use assertRaises as a context manager for GError test
-
-    Simplify tests/test_error.py:TestMarshalling.test_exception so that
-    it no longer needs to pull exception information out of sys.exc_info.
-
- tests/test_error.py | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-commit bc7b0b69f651a118a053106fcae2d7c0f2173430
-Author: Andrew Grigorev <andrew@ei-grad.ru>
-Date:   Sun May 11 23:54:46 2014 +0400
-
-    Replace direct parent class call by super()
-
-    Super works, it just needs the correct class.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=729970
-
- demos/gtk-demo/gtk-demo.py | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-commit de827d00762f2a741f90bc38f8b55518593f4509
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 23 01:59:00 2014 -0700
-
-    Add cairo marshaling support for non-introspected signals
-
-    Add link dependency of cairo-gobject to _gi_cairo_la needed for
-    retrieving
-    the GTypes of cairo classes.
-    Add GValue marshalers for cairo Context, Surface, FontFace,
-    ScaledFont,
-    and Pattern classes.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694604
-
- gi/Makefile.am          |   2 +
- gi/pygi-foreign-cairo.c | 186
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-type.h          |   1 +
- gi/pygtype.c            |   2 +
- tests/test_cairo.py     |  65 +++++++++++++++++
- 5 files changed, 256 insertions(+)
-
-commit 22a952ec532cc83c8227861a7d5bfa2957608c3f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 5 19:37:18 2014 -0700
-
-    [New API] Add gi.require_foreign
-
-    Add gi.require_foreign(namespace, symbol=None) API for determining
-    if a foreign marshaling module is available. This can be used in an
-    applications import statement block to verify the existence of a
-    specific foreign marshaling module (cairo).
-    Additionally it forces loading of the foreign marshaling module as
-    well as the GI repository module. This allows non-introspected signal
-    closures to correctly marshal their arguments (bug 694604).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707735
-
- gi/__init__.py      | 28 +++++++++++++++++++++++++
- gi/gimodule.c       |  2 ++
- gi/pygi-foreign.c   | 60
- ++++++++++++++++++++++++++++++++++++++++++++++-------
- gi/pygi-foreign.h   |  4 ++++
- tests/test_cairo.py |  9 ++++++++
- 5 files changed, 95 insertions(+), 8 deletions(-)
-
-commit 4ee91a4cd0018d069c7aaf66d83e2f8235f2262a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 5 19:48:06 2014 -0700
-
-    tests: Move cairo tests into test_cairo.py
-
-    Move cairo related tests from test_everything.py into test_cairo.py
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694604
-
- tests/Makefile.am        |  1 +
- tests/test_cairo.py      | 67
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_everything.py | 43 +------------------------------
- 3 files changed, 69 insertions(+), 42 deletions(-)
-
-commit 31ecd935564984068e6646676392122bdc03e42e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon May 5 19:42:59 2014 -0700
-
-    Initialize the foreign API at PyGI load time
-
-    Initialize the foreign struct list at gi._gi module load time. This
-    ensures
-    we always have a valid (non-null) list of foreign marshalers outside
-    of the
-    context of marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694604
-
- gi/gimodule.c     |  3 ++-
- gi/pygi-foreign.c | 12 ++++++++----
- gi/pygi-foreign.h |  2 ++
- 3 files changed, 12 insertions(+), 5 deletions(-)
-
-commit def47144b63a1492ebf47a4eadb535f45253ff3a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Mar 22 14:13:01 2014 -0700
-
-    Move pygi foreign API into pygi-foreign-api.h
-
-    Move limited set of APIs necessary for registering foreign marshalers
-    into
-    pygi-foreign-api.h. Remove "_real" from internally used APIs and
-    add necessary
-    includes to the rest of pygobject for calling directly (instead of
-    going through
-    the PyCapsule API within PyGI itself).
-    This is needed to avoid compilation errors when including pygobject.h
-    in
-    foreign marshaling plugins which conflicts with pygobject-private.h.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694604
-
- gi/Makefile.am           |   1 +
- gi/gimodule.c            |   6 +--
- gi/pygboxed.c            |   1 +
- gi/pygenum.c             |   1 +
- gi/pygflags.c            |   1 +
- gi/pygi-foreign-api.h    |  85 +++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign-cairo.c  |   8 ++--
- gi/pygi-foreign.c        |  10 ++---
- gi/pygi-foreign.h        |  14 +++----
- gi/pygi-property.c       |   8 ++--
- gi/pygi-property.h       |  14 ++++---
- gi/pygi-signal-closure.c |  12 +++---
- gi/pygi-signal-closure.h |  15 +++----
- gi/pygi-type.c           |   4 +-
- gi/pygi-type.h           |   2 +-
- gi/pygi.h                | 107
- -----------------------------------------------
- gi/pygobject.c           |   3 ++
- gi/pygpointer.c          |   1 +
- 18 files changed, 139 insertions(+), 154 deletions(-)
-
-commit 4c2e6914bf0277ebc3a6a4426f33a1b378a04b00
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 4 23:19:30 2014 -0700
-
-    Clobber GLib.Error with custom implementation
-
-    Clobber the introspection GLib.Error class with the custom Python
-    implementation found in gi._error.GError. Update references to
-    GLib.GError
-    to use GLib.Error.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712519
-
- gi/_error.py         |  3 ++-
- gi/overrides/GLib.py |  9 ++++++---
- gi/pygi-error.c      | 10 +++++-----
- tests/test_error.py  | 24 ++++++++++++------------
- 4 files changed, 25 insertions(+), 21 deletions(-)
-
-commit f80f5ec434ed868ab1f35d6a81537384e753b09d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 4 23:43:50 2014 -0700
-
-    Simplify pygi_error_marshal to use GError initializer arguments
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712519
-
- gi/pygi-error.c | 25 ++++++-------------------
- 1 file changed, 6 insertions(+), 19 deletions(-)
-
-commit 3083daf420ac1900bb20604c22fd61e5187b4ae8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 4 04:13:46 2014 -0700
-
-    Add Python implementation of GError
-
-    Add internally used gi/_error.py module as a basis for implementing
-    a unified GError between introspection and static bindings. Patch
-    Python
-    implementations of GError.matches and GError.new_literal in the GLib
-    overrides
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712519
-
- Makefile.am          |  3 ++-
- gi/_error.py         | 53
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/_option.py        |  3 ++-
- gi/overrides/GLib.py | 25 ++++++++++++++++++++++++-
- gi/pygi-error.c      | 18 +++++++-----------
- tests/test_error.py  | 37 ++++++++++++++++++++++++++++++++++++
- 6 files changed, 125 insertions(+), 14 deletions(-)
-
-commit 664bfa6fdf2196a0d1449baaca62a9a496121f67
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 4 23:14:27 2014 -0700
-
-    tests: Move GError tests into test_error.py
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712519
-
- tests/Makefile.am   |  1 +
- tests/test_error.py | 81
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py    | 49 --------------------------------
- 3 files changed, 82 insertions(+), 49 deletions(-)
-
-commit 649895d83a90cd3a370da215a6f98a606b987419
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 4 00:18:41 2014 -0700
-
-    Consolidate GError related code into pygi-error
-
-    Rename all pyglib_error_* functions to pygi_error_* and move them into
-    pygi-error.[h|c].
-    Register GError as part of the gi._gi module instead of gi._gi._glib.
-    Update all code to use new naming.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712519
-
- gi/_option.py          |   6 +-
- gi/gimodule.c          |   4 +-
- gi/glibmodule.c        |  19 -----
- gi/gobjectmodule.c     |  54 +-----------
- gi/overrides/GLib.py   |   3 +-
- gi/pygi-argument.c     |   6 +-
- gi/pygi-cache.c        |   4 +-
- gi/pygi-error.c        | 222
- ++++++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-error.h        |  21 ++++-
- gi/pygi-invoke.c       |   5 +-
- gi/pyglib-private.h    |   1 -
- gi/pyglib.c            | 199 --------------------------------------------
- gi/pyglib.h            |   5 --
- gi/pygobject-private.h |   3 -
- gi/pygoptioncontext.c  |   3 +-
- gi/pygoptiongroup.c    |   3 +-
- gi/pygspawn.c          |   3 +-
- 17 files changed, 262 insertions(+), 299 deletions(-)
-
-commit 9080215e862a73ddcce16476f4dc4492a88dd3f2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat May 3 22:56:49 2014 -0700
-
-    Add gi.CallableInfo.can_throw_gerror()
-
-    Add static binding for g_callable_info_can_throw_gerror.
-
- gi/pygi-info.c           | 10 ++++++++++
- tests/test_repository.py | 16 ++++++++++++++++
- 2 files changed, 26 insertions(+)
-
-commit f129e78d579b7897cb86111c524d87b5b12019ad
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat May 3 22:56:03 2014 -0700
-
-    Derive PyCallbackInfo from PyCallableInfo
-
-    Update the static GI bindings for PyGICallbackInfo to derive
-    from PyGICallableInfo. This makes all the gi.CallableInfo methods
-    available to gi.CallbackInfo for use from Python.
-
- gi/pygi-info.c           | 4 ++--
- tests/test_repository.py | 7 +++++++
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-commit 833f96807037e85445ac103d6fb6ad9c4fab65e4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 2 21:36:25 2014 -0700
-
-    PEP8 fixes
-
-    Use infix 'not' instead of prefixed.
-    Don't use double comments (##).
-    Use space between comment and text.
-    Un-comment tests that now work.
-    Move broken (and won't fix) implicit int64 signal tests into
-    a new skipped test function.
-
- gi/overrides/GIMarshallingTests.py |  4 ++--
- gi/overrides/Gio.py                |  4 ++--
- gi/overrides/Gtk.py                |  6 +++---
- gi/types.py                        |  2 +-
- pygtkcompat/pygtkcompat.py         |  4 ++--
- tests/test_everything.py           |  1 -
- tests/test_gi.py                   |  9 +++------
- tests/test_iochannel.py            |  2 +-
- tests/test_option.py               |  2 +-
- tests/test_signal.py               | 28 +++++++++++++---------------
- 10 files changed, 28 insertions(+), 34 deletions(-)
-
-commit 07af141dd8dcac551cb2e962f6bf338b3485006b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Apr 28 14:06:30 2014 -0700
-
-    configure.ac: post release version bump to 3.13.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ba652c1fd9dbef6d3ff57e39b400ea827374a95e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Apr 28 14:00:59 2014 -0700
-
-    release 3.13.1
-
- NEWS | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit 3a2bfc8bf01fcae386355bc3652780e198e54d49
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Mon Apr 14 23:33:52 2014 +0200
-
-    Raise TypeError if arguments are passed to Boxed.__init__
-
-    This is a partial revert of
-    https://git.gnome.org/browse/pygobject/commit/?id=2f2069c9efcd8
-    which removed a type check in __new__. This adds it back
-    into __init__. Overrides which define __new__ now have to
-    filter out any arguments in __init__ and not the other way
-    around, which is a bit less surprising in the common case.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727810
-
- gi/overrides/GLib.py  | 6 ++++++
- gi/overrides/Gtk.py   | 6 ++++++
- gi/overrides/Pango.py | 3 +++
- gi/pygi-boxed.c       | 6 ++++++
- tests/test_gi.py      | 4 ++++
- 5 files changed, 25 insertions(+)
-
-commit 906977047df2fb2f394410e4ebf360b69af8dcfe
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Mon Apr 14 15:40:50 2014 +0200
-
-    Gdk.Event: Override __setattr__ to set fields based on the event type
-
-    Pass the setting of attributes through to the underlying union based
-    on event type. This mirrors the logic in __getattr__.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727810
-
- gi/overrides/Gdk.py         |  7 +++++++
- tests/test_overrides_gdk.py | 13 ++++++++++---
- 2 files changed, 17 insertions(+), 3 deletions(-)
-
-commit 78a0508a4d40e3723b36297ba2d42889dabc1cdd
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Mon Apr 14 13:06:02 2014 +0200
-
-    Gdk.Event: Include GdkEventType in __repr__
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727810
-
- gi/overrides/Gdk.py         | 4 ++++
- tests/test_overrides_gdk.py | 4 ++++
- 2 files changed, 8 insertions(+)
-
-commit 23965455f060793ffcbc0d8288527d41a667579c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Apr 14 15:10:01 2014 -0700
-
-    Fix crash with type checking for GObject arguments
-
-    Ensure we have a valid GObject before attempting to call g_type_is_a.
-    Swap conditional blocks to make if condition more readable.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=727604
-
- gi/pygi-object.c                | 19 ++++++++++---------
- tests/test_object_marshaling.py | 35 +++++++++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+), 9 deletions(-)
-
-commit 2e853f6a31636d6a26ce91eb30be5bb0326474b1
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Mar 30 18:27:59 2014 +0200
-
-    Do not leak info of destroy notify
-
- gi/pygi-closure.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-commit f9e504c79c5ef6e1938e4db5b49115689b9f5c3c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Mar 28 19:51:58 2014 -0700
-
-    configure.ac: Update PyGObject wiki link in AC_INIT
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ee84b5a2c83d88436aec6b62e7a271a3525569e0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 18:57:56 2014 -0700
-
-    Ignore GValueArray deprecations
-
-    Wrap calls to GValueArray related calls with
-    G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS.
-    Although GValueArray is deprecated, we still need to support the
-    marshaling of
-    them in PyGObject. The deprecations add noise to the build processes
-    in which
-    new warnings could be lost. Essentially losing the element of surprise
-    a new
-    warning should have on maintainers.
-
- gi/pygi-value.c          | 23 ++++++++++++++++++++---
- tests/testhelpermodule.c |  3 +++
- 2 files changed, 23 insertions(+), 3 deletions(-)
-
-commit ac8b59ee335967efef974ab0aa89128ade9f3d0c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 18:09:10 2014 -0700
-
-    Raise ImportError when importing modules not found in repository
-
-    Raise an ImportError with extra information noting the typelib was not
-    found. This removes the need to log a similar message which adds
-    output
-    noise when attempting controlled imports within try/except statements.
-    In Python 2, the additional information is lost but in Python 3 it
-    shows up.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726877
-
- gi/importer.py                 |  9 ++++-----
- tests/test_import_machinery.py | 18 ++++++++++++++++++
- 2 files changed, 22 insertions(+), 5 deletions(-)
-
-commit e604ada06a8ef8f9a06f0638cf183cfeacdc63a9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 18:04:27 2014 -0700
-
-    tests: Rename test_overrides to test_import_machinery
-
-    Rename this test to better suit the contents of the file. This
-    also gives
-    us a more concise location to grow other tests related to import
-    machinery
-    internals.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726877
-
- tests/Makefile.am                                     | 2 +-
- tests/{test_overrides.py => test_import_machinery.py} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-commit a863e5ec0ac27de49a0ae261fd3a78745cfe84a0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 04:39:47 2014 -0700
-
-    HACKING: Update branch creation instructions to include -b
-
- HACKING | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1012cfd58c1d41dd6b040a2d14f395e5578f5e79
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 04:35:52 2014 -0700
-
-    configure.ac: post release version bump to 3.13.1
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 45eda91eac2f6c8ab1a5c38808f96de760196e90
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 03:35:21 2014 -0700
-
-    release 3.12.0
-
- NEWS | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 70020e9934abb39cbccfa49e582fb838465c0490
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 24 03:05:16 2014 -0700
-
-    pre-release version bump to 3.12.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit a9a08a0c11e8802cce539f869ea93e1b729e829e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 17 15:17:12 2014 -0700
-
-    configure.ac: post release version bump to 3.11.93
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7283d50de8413e9450820543d0d8fd43e6c24b27
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 17 15:12:33 2014 -0700
-
-    release 3.11.92
-
- NEWS | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit b3b1f38af1ac1bda9d6a3ba50e9b6fa37ae48d96
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 17 14:55:52 2014 -0700
-
-    configure.ac: Remove option to build without libffi
-
-    We've always had a hard dependency on libffi headers.
-    Commit 5798f94b6a727b93 added a direct module dependency on libffi
-    instead of indirect via GI. Remove the option to build without libffi.
-
- configure.ac | 21 +++------------------
- 1 file changed, 3 insertions(+), 18 deletions(-)
-
-commit 1a2438497ffc445fe3f9da06b15085f29317c4ee
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Mar 15 00:50:14 2014 -0700
-
-    docs: Standardize Python doc strings
-
-    Use consistent doc string quotations (three double quotes).
-    Update usage of GObject.GObject in docs to GObject.Object.
-    Use reStructuredText markup for parameter annotations, instance
-    variables,
-    admonitions, and code examples.
-    This allows for better Sphinx documentation generation for the
-    project.
-    Preliminary style guide:
-    https://wiki.gnome.org/Projects/PyGObject/StyleGuide
-
- gi/_option.py            |  67 +++++++++++++++------------
- gi/_propertyhelper.py    |  86 +++++++++++++++++-----------------
- gi/_signalhelper.py      | 117
- ++++++++++++++++++++++++-----------------------
- gi/docstring.py          |  17 ++++---
- gi/glibmodule.c          |   3 +-
- gi/overrides/GLib.py     |  20 ++++----
- gi/overrides/GObject.py  |  39 ++++++++++------
- gi/overrides/Gtk.py      |  28 ++++++++----
- gi/overrides/__init__.py |  66 +++++++++++++-------------
- gi/types.py              |   2 +-
- 10 files changed, 242 insertions(+), 203 deletions(-)
-
-commit 2d268ef661badabcb63e696dab01857d57cb3371
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Mar 15 00:49:00 2014 -0700
-
-    Quote argument names in initializer deprecation warning
-
-    Add quotation marks around names of deprecated positional arguments.
-    This makes the message clearer in stating what has been deprecated
-    in cases when only a single argument is displayed.
-
- gi/overrides/__init__.py | 2 +-
- tests/test_gi.py         | 6 +++---
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-commit a070e712526e433c236753813acc3ef300f0d203
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Mar 15 00:35:03 2014 -0700
-
-    docs: Ignore meta-class bases in dynamic docstring generation
-
-    Skip attempts at generating a doc string for GObject meta-class bases
-    since they do not contain an __info__ attribute.
-    This circumvents errors with documentation generators (Sphinx).
-
- gi/types.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit ec44dea6bbc3f1adfb6c1a2781364a2df0d0e0e6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 13 10:13:34 2014 -0700
-
-    Update Free Software Foundation addresses
-
-    Update all references to the FSF physical address
-    to use the web address: http://www.gnu.org/licenses
-
- gi/_constants.py                | 4 +---
- gi/_gobject/__init__.py         | 4 +---
- gi/_option.py                   | 4 +---
- gi/_propertyhelper.py           | 4 +---
- gi/_signalhelper.py             | 4 +---
- gi/glibmodule.c                 | 4 +---
- gi/gobjectmodule.c              | 4 +---
- gi/overrides/keysyms.py         | 4 +---
- gi/pygboxed.c                   | 4 +---
- gi/pygboxed.h                   | 4 +---
- gi/pygenum.c                    | 4 +---
- gi/pygenum.h                    | 4 +---
- gi/pygflags.c                   | 4 +---
- gi/pygflags.h                   | 4 +---
- gi/pygi-argument.c              | 4 +---
- gi/pygi-argument.h              | 4 +---
- gi/pygi-boxed.c                 | 4 +---
- gi/pygi-boxed.h                 | 4 +---
- gi/pygi-cache.c                 | 4 +---
- gi/pygi-cache.h                 | 4 +---
- gi/pygi-ccallback.c             | 4 +---
- gi/pygi-ccallback.h             | 4 +---
- gi/pygi-info.c                  | 4 +---
- gi/pygi-info.h                  | 4 +---
- gi/pygi-invoke.c                | 4 +---
- gi/pygi-invoke.h                | 4 +---
- gi/pygi-marshal-cleanup.c       | 4 +---
- gi/pygi-marshal-cleanup.h       | 4 +---
- gi/pygi-repository.c            | 4 +---
- gi/pygi-repository.h            | 4 +---
- gi/pygi-signal-closure.c        | 4 +---
- gi/pygi-struct.c                | 4 +---
- gi/pygi-struct.h                | 4 +---
- gi/pygi-type.c                  | 4 +---
- gi/pygi-type.h                  | 4 +---
- gi/pygi.h                       | 4 +---
- gi/pyginterface.c               | 4 +---
- gi/pyginterface.h               | 4 +---
- gi/pyglib-private.h             | 4 +---
- gi/pyglib-python-compat.h       | 4 +---
- gi/pyglib.c                     | 4 +---
- gi/pyglib.h                     | 4 +---
- gi/pygobject-external.h         | 4 +---
- gi/pygobject.c                  | 4 +---
- gi/pygoptioncontext.c           | 4 +---
- gi/pygoptioncontext.h           | 4 +---
- gi/pygoptiongroup.c             | 4 +---
- gi/pygoptiongroup.h             | 4 +---
- gi/pygparamspec.c               | 4 +---
- gi/pygparamspec.h               | 4 +---
- gi/pygpointer.c                 | 4 +---
- gi/pygpointer.h                 | 4 +---
- gi/pygspawn.c                   | 4 +---
- gi/pygspawn.h                   | 4 +---
- gi/pygtype.c                    | 4 +---
- gi/pygtype.h                    | 4 +---
- pygtkcompat/generictreemodel.py | 4 +---
- tests/test_generictreemodel.py  | 4 +---
- 58 files changed, 58 insertions(+), 174 deletions(-)
-
-commit bbfcebdfdc5e574999221b60520422ea6da82435
-Author: Owen W. Taylor <otaylor@fishsoup.net>
-Date:   Wed Mar 12 18:32:47 2014 -0400
-
-    Handle GI_TRANSFER_EVERYTHING for returns of foreign structures
-
-    Any (transfer full) return of a cairo type other than a path
-    was leaked.
-
-    Pass the transfer type PyGIArgOverrideFromGIArgumentFunc and handle
-    it for the cairo foreign type. For paths we can only handle
-    (transfer full) so throw an error for (transfer none).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=726206
-
- gi/pygi-foreign-cairo.c  | 32 +++++++++++++++++++++++++-------
- gi/pygi-foreign.c        |  3 ++-
- gi/pygi-foreign.h        |  1 +
- gi/pygi-invoke.c         |  1 +
- gi/pygi-struct-marshal.c |  1 +
- gi/pygi.h                |  1 +
- 6 files changed, 31 insertions(+), 8 deletions(-)
-
-commit c5b641cb4eea9ae64a173dcaa4ee5a4accb036f6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 15:20:02 2014 -0800
-
-    configure.ac: post release version bump to 3.11.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7816531691a3db3ae1fe74abc85ac37988b67d2b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 15:16:43 2014 -0800
-
-    release 3.11.91
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 1a63a04eaf2a77c1752b90e80ab571677f27ac3d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 06:49:09 2014 -0800
-
-    build: Update release-news to use srcdir
-
-    Use $(top_srcdir)/NEWS for pulling in news items to ensure
-    "make release-news" works in a vpath build environment.
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5798f94b6a727b930b07fe840b0aef264f98a80e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 7 20:16:21 2014 -0800
-
-    Use ffi_call directly instead of g_callable_info_invoke
-
-    Cleanup internal callable cache and state tracking by removing
-    multiple
-    counting schemes for differently sized "in" and "out" argument arrays.
-    Use a single count based on the total number of arguments passed to C
-    (inclusive of instance argument and GError exception where
-    applicable).
-    Size all state tracking arrays to the same size and ensure argument
-    cache
-    indices always line up with these arrays. This cleans up logic
-    which was
-    required by g_callable_info_invoke for splitting "in" and "out"
-    arguments
-    up.
-
-    Cleanup array marshaling which can now rely on the new scheme
-    which ensures
-    the "arg_values" array always points to the correct location for
-    length
-    argument values.
-
-    Cache the ffi_cif struct in PyGICallableCache via GIFunctionInvoker
-    and
-    related GI methods. Overall, these changes can give a performance
-    boost of
-    almost 2x for simple function calls (see ticket for micro benchmarks).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=723642
-
- gi/pygi-array.c               |  26 ++---
- gi/pygi-cache.c               |  61 +++++++++--
- gi/pygi-cache.h               |  10 +-
- gi/pygi-ccallback.c           |   3 +-
- gi/pygi-closure.c             |   6 +-
- gi/pygi-invoke-state-struct.h |  42 +++++---
- gi/pygi-invoke.c              | 241
- +++++++++++++++++++++++-------------------
- gi/pygi-invoke.h              |   2 +-
- gi/pygi-marshal-cleanup.c     |   4 +-
- 9 files changed, 230 insertions(+), 165 deletions(-)
-
-commit ad680ae9c37a0091628a7d66010fbf70aa1a2e43
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 04:51:09 2014 -0800
-
-    tests: Move class definition depending on GTK+ within function
-    evaluation
-
-    Move the definition of WindowWithSizeAllocOverride inside of the test
-    function call to so it is lazily defined. This avoids problems
-    running tests
-    on systems without GTK+ installed.
-
- tests/test_overrides_gtk.py | 32 ++++++++++++++++----------------
- 1 file changed, 16 insertions(+), 16 deletions(-)
-
-commit 45d45e7c2704d68a3008f739e501fa332d326b8b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 04:45:59 2014 -0800
-
-    tests: Conditionalize usage of GTK+ in tests_generictreemodel
-
-    This allows running make check without GTK+ installed.
-
- tests/test_generictreemodel.py | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-commit 038563ed620e0d966e385a1779455d9b0e148c41
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 04:39:35 2014 -0800
-
-    tests: Conditionalize usage of regress typelib in test_properties
-
-    Unconditional usage of regress breaks tests when PyGObject is
-    built without
-    cairo.
-
- tests/test_properties.py | 27 +++++++++++++++++----------
- 1 file changed, 17 insertions(+), 10 deletions(-)
-
-commit 1fa93ddc51b2d223d772aee7930fc96c0ced0e00
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 02:44:12 2014 -0800
-
-    configure.ac: Use -std=c90 and error on declaration-after-statement
-
-    Replace gcc option of -std=c9x with c90 and add
-    -Werror=declaration-after-statement
-    This ensures we keep compatibility with msvc builds.
-
- configure.ac | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit cee414ab5725c51d79a2c6aa1e8760e9fd754545
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Mar 3 02:38:30 2014 -0800
-
-    Use g_snprintf instead of snprintf
-
-    Use g_snprintf for consistency with the rest of gobjectmodule.c
-
- gi/gobjectmodule.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b016ae6793839b2a6a00a69d00de30937bc611be
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Feb 27 04:27:41 2014 -0800
-
-    Use C style comments
-
-    Update various locations which use C99 single line comments to
-    conform to
-    C90 style comments. Found with: make CFLAGS="-std=C90"
-
- gi/gimodule.c      | 2 +-
- gi/pygi-array.c    | 3 ++-
- gi/pygi-property.c | 2 +-
- gi/pygtype.c       | 2 +-
- 4 files changed, 5 insertions(+), 4 deletions(-)
-
-commit df7cba1495c167f1019dec7f4398dc5de62a5937
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Tue Feb 25 14:38:41 2014 +0800
-
-    Fix Build on Visual Studio
-
-    Some items from pygi-enum-marshal.c were moved to pygi-basictype.c,
-    which
-    included the use of the NAN and INFINITY macros/constants, so the
-    definitions for those need to be moved to pygi-basictype.c as well.
-    Also
-    avoid defining a variable in the middle of the block.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=725122
-
- gi/pygi-basictype.c    | 16 ++++++++++++++++
- gi/pygi-cache.c        |  3 ++-
- gi/pygi-enum-marshal.c | 16 ----------------
- 3 files changed, 18 insertions(+), 17 deletions(-)
-
-commit bb5550bc85ac0ff60ea39912416e347f27853fb4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 17 17:22:40 2014 -0800
-
-    Update release steps to be more explicit in regards to NEWS
-
-    Add an explicit step to commit the NEWS changes and push prior
-    tagging.
-
- HACKING | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-commit c6ac95286bce858f1925a9d6173a91866d7e9f88
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 17 17:18:10 2014 -0800
-
-    configure.ac: post release version bump to 3.11.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f87e341c5528d066371d4ec493956db28dd0bafa
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 17 17:08:13 2014 -0800
-
-    release 3.11.90
-
- NEWS | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 9b345b153e86ca6c9b7290cf2ad3b38f6ad9d0e5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Feb 12 10:28:35 2014 -0800
-
-    Use GObject type checking for instance arguments
-
-    Add a g_type_is_a check to interface/object instance arguments
-    in addition
-    to the Python IsInstance check. This loosens restrictions on
-    overrides which
-    don't use gi.overrides.override() and is needed to keep API
-    compatibility
-    which broke with commit:
-    https://git.gnome.org/browse/pygobject/commit/?id=d5925b76
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=724009
-
- gi/pygi-object.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit 419e13e1717b725d5c6815bae9672649b0afddd4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 3 15:58:30 2014 -0800
-
-    configure.ac: post release version bump to 3.11.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 57bceaac1d84ffd03f49d8e83a4c8507c9127a41
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 3 15:51:27 2014 -0800
-
-    release 3.11.5
-
- NEWS | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-commit 058d944e3b9ef9157e912e6374b54a2eb5f7f5d1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 3 06:45:09 2014 -0800
-
-    Restore pygobject_version API needed for pygobject.h
-
-    Add gi._gobject.pygobject_version which was removed with commit:
-    https://git.gnome.org/browse/pygobject/commit/?id=2624bd2b
-    This is needed for pygobject.h to function properly.
-
- gi/_gobject/__init__.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f3be4cedcb1d395a3fabee95d7460bce86268153
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 3 06:29:07 2014 -0800
-
-    cache refactoring: Add comments to arg cache setup functions
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/pygi-cache.c | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
-
-commit 56ac6bd9ed99d6bb2cb8641581a594105036be68
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 3 06:24:18 2014 -0800
-
-    cache refactoring: Use consistent prefix for arg cache functions
-
-    Use "pygi_arg_cache" as the prefix for arg cache memory related
-    functions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/pygi-array.c          |  6 ++--
- gi/pygi-basictype.c      |  4 +--
- gi/pygi-cache.c          | 74
- ++++++++++++++++++++++++------------------------
- gi/pygi-cache.h          | 58 ++++++++++++++++++++-----------------
- gi/pygi-ccallback.c      |  2 +-
- gi/pygi-closure.c        |  6 ++--
- gi/pygi-enum-marshal.c   |  4 +--
- gi/pygi-error.c          |  4 +--
- gi/pygi-hashtable.c      | 30 ++++++++++----------
- gi/pygi-info.c           |  2 +-
- gi/pygi-invoke.c         |  2 +-
- gi/pygi-list.c           |  2 +-
- gi/pygi-object.c         |  2 +-
- gi/pygi-struct-marshal.c |  2 +-
- 14 files changed, 102 insertions(+), 96 deletions(-)
-
-commit 204f5a187782c5325ed6bed96c9a940f3aa67d04
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jan 12 12:26:30 2014 -0800
-
-    marshal refactoring: Move GValue marshaling from pytype into
-    pygi-value
-
-    Move marshaling of GValues to and from PyObjects into
-    pygi-value.c. Make
-    PyGTypeMarshal struct and related functions accessible via pygtype.h.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/gobjectmodule.c       |   2 +
- gi/pygi-struct-marshal.c |   1 +
- gi/pygi-value.c          | 720
- +++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-value.h          |  12 +
- gi/pygobject-private.h   |  16 --
- gi/pygobject.c           |   2 +-
- gi/pygtype.c             | 728
- +----------------------------------------------
- gi/pygtype.h             |  17 ++
- 8 files changed, 757 insertions(+), 741 deletions(-)
-
-commit b8120d848dc5d36832123b1a913015f6e1fd8cdc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jan 12 11:41:20 2014 -0800
-
-    marshal refactoring: Move GIArgument from GValue code to new file
-
-    Add gi/pygi-value.h and .c files with initial contents of
-    _pygi_argument_from_g_value. Eventually this file will contain
-    all code
-    related to GValue marshaling from various code locations in the
-    project.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am           |   2 +
- gi/pygi-argument.c       | 126 +----------------------------------------
- gi/pygi-argument.h       |   3 -
- gi/pygi-signal-closure.c |   1 +
- gi/pygi-value.c          | 144
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-value.h          |  32 +++++++++++
- 6 files changed, 180 insertions(+), 128 deletions(-)
-
-commit c2d5857e9b964427190e1230be32ae7919e86bc0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 21:26:55 2013 -0700
-
-    cache refactoring: Move enum and flags arg setup and marshaling to
-    new file
-
-    Move enum and flags argument cache setup and marshaling fragments into
-    isolated file: pygi-enum-marshal.c. Remove pygi-marshal-from/to files.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   6 +-
- gi/pygi-argument.c        |   2 -
- gi/pygi-cache.c           |  74 ++-------
- gi/pygi-enum-marshal.c    | 408
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-enum-marshal.h    |  42 +++++
- gi/pygi-marshal-from-py.c | 206 -----------------------
- gi/pygi-marshal-from-py.h |  57 -------
- gi/pygi-marshal-to-py.c   | 152 -----------------
- gi/pygi-marshal-to-py.h   |  34 ----
- 9 files changed, 464 insertions(+), 517 deletions(-)
-
-commit 1d0f120d77582509b4e75d83f500a1ace7ed6421
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 20:00:12 2013 -0700
-
-    cache refactoring: Move various struct arg setup and marshaling to
-    new file
-
-    Move struct (boxed, union, gvalue, gclosure, variant, and pointer)
-    argument
-    cache setup and marshaling fragments into isolated file:
-    pygi-struct-marshal.c.
-    Remove redundant and dead code related to boxed and union marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-argument.c        |   1 +
- gi/pygi-array.c           |   3 +
- gi/pygi-cache.c           |  72 +------
- gi/pygi-cache.h           |   1 +
- gi/pygi-marshal-cleanup.c |  48 -----
- gi/pygi-marshal-cleanup.h |  16 --
- gi/pygi-marshal-from-py.c | 288 --------------------------
- gi/pygi-marshal-from-py.h |  33 ---
- gi/pygi-marshal-to-py.c   | 120 -----------
- gi/pygi-marshal-to-py.h   |  27 ---
- gi/pygi-object.c          |   2 +-
- gi/pygi-struct-marshal.c  | 516
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-struct-marshal.h  |  73 +++++++
- 14 files changed, 607 insertions(+), 595 deletions(-)
-
-commit 4dcaa2b988239e01224994098c3e7cbe8b455fe0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 16:40:58 2013 -0700
-
-    cache refactoring: Move GObject arg setup and marshaling into new file
-
-    Move GObject argument cache setup and marshaling fragments into
-    isolated file: pygi-object.c.
-    Break GIInterfaceCache creation and setup into API for interface based
-    argument cache usage.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-argument.c        |   7 +-
- gi/pygi-cache.c           | 183 ++++++++++++++-----------------
- gi/pygi-cache.h           |   7 ++
- gi/pygi-marshal-cleanup.c |  27 -----
- gi/pygi-marshal-cleanup.h |  10 --
- gi/pygi-marshal-from-py.c | 123 ---------------------
- gi/pygi-marshal-from-py.h |  12 --
- gi/pygi-marshal-to-py.c   |  31 ------
- gi/pygi-marshal-to-py.h   |   8 --
- gi/pygi-object.c          | 273
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-object.h          |  46 ++++++++
- 12 files changed, 416 insertions(+), 313 deletions(-)
-
-commit 2cddba811592fbb990322fbf2dce516ffd7e94cd
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 12:39:20 2013 -0700
-
-    cache refactoring: Move closure setup and marshaling into pygi-closure
-
-    Move closure argument caching and marshaling fragments into
-    pygi-closure.c.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/pygi-cache.c           | 111 ++--------------
- gi/pygi-cache.h           |   9 --
- gi/pygi-closure.c         | 314
- +++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-closure.h         |  13 +-
- gi/pygi-marshal-cleanup.c |  14 ---
- gi/pygi-marshal-cleanup.h |   5 -
- gi/pygi-marshal-from-py.c | 160 -----------------------
- gi/pygi-marshal-from-py.h |   6 -
- gi/pygi-marshal-to-py.c   |  13 --
- gi/pygi-marshal-to-py.h   |   4 -
- 10 files changed, 333 insertions(+), 316 deletions(-)
-
-commit 18d8274724484a27e05d2e60baac1f20c72b6d2b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 11:30:36 2013 -0700
-
-    cache refactoring: Move GError arg setup and marshaling to new file
-
-    Move GError argument caching and marshaling fragments into
-    isolated file: pygi-error.c.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-cache.c           |  93 ++++++++++++---------------------------
- gi/pygi-error.c           | 109
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-error.h           |  35 +++++++++++++++
- gi/pygi-marshal-from-py.c |  13 ------
- gi/pygi-marshal-from-py.h |   6 ---
- gi/pygi-marshal-to-py.c   |  22 ----------
- gi/pygi-marshal-to-py.h   |   4 --
- 8 files changed, 174 insertions(+), 110 deletions(-)
-
-commit c45cafd07fc62ad545f3e58f2b7350ee4b2bb9b7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 12 03:07:53 2013 -0700
-
-    cache refactoring: Move GArray arg setup and marshaling into new file
-
-    Move GArray argument caching and marshaling fragments into an
-    isolated file: pygi-array.c.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-array.c           | 906
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-array.h           |  42 +++
- gi/pygi-cache.c           | 236 +-----------
- gi/pygi-marshal-cleanup.c | 150 --------
- gi/pygi-marshal-cleanup.h |  10 -
- gi/pygi-marshal-from-py.c | 354 ------------------
- gi/pygi-marshal-from-py.h |   6 -
- gi/pygi-marshal-to-py.c   | 210 -----------
- gi/pygi-marshal-to-py.h   |   4 -
- 10 files changed, 963 insertions(+), 957 deletions(-)
-
-commit 4697a3793b46a803c6dbef749ba75c0fee80020d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 11 23:26:08 2013 -0700
-
-    cache refactoring: Move GList/GSList arg setup and marshaling into
-    new file
-
-    Move GList and GSList argument caching and marshaling fragments
-    into an
-    isolated file: pygi-list.c.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-cache.c           |  71 ++-----
- gi/pygi-list.c            | 466
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-list.h            |  38 ++++
- gi/pygi-marshal-cleanup.c |  80 --------
- gi/pygi-marshal-cleanup.h |  10 -
- gi/pygi-marshal-from-py.c | 156 ----------------
- gi/pygi-marshal-from-py.h |  12 --
- gi/pygi-marshal-to-py.c   |  98 ----------
- gi/pygi-marshal-to-py.h   |   8 -
- 10 files changed, 517 insertions(+), 424 deletions(-)
-
-commit c48ddacf4479d2cf80beb9c614cdce2a61599b3b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 11 21:30:45 2013 -0700
-
-    cache refactoring: Break sequence cache up for array vs list
-
-    Add new arg cache type specialized for arrays. This cleans up
-    the basic
-    sequence cache type which does not need length and size related
-    info. Remove
-    fixed length checks from GList and GSList from_py marshaling
-    because these
-    will always be -1.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/pygi-cache.c           | 160
- +++++++++++++++++++++++++++++++++++-----------
- gi/pygi-cache.h           |  16 ++++-
- gi/pygi-invoke.c          |   4 +-
- gi/pygi-marshal-cleanup.c |  28 ++++----
- gi/pygi-marshal-from-py.c |  37 ++++-------
- gi/pygi-marshal-to-py.c   |  23 +++----
- 6 files changed, 177 insertions(+), 91 deletions(-)
-
-commit c1a2a86a7b51f4dc5a5da9f8808552c38acadf9d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 11 20:12:01 2013 -0700
-
-    cache refactoring: Move basic type arg setup and marshaling into
-    new file
-
-    Move all basic type arg caching and marshaling fragments into
-    an isolated
-    file where most functions are made static. pygi-basictype.h exposes:
-    pygi_arg_basic_type_new_from_info, _pygi_marshal_from_py_basic_type,
-    and
-    _pygi_marshal_to_py_basic_type which allows continued use for all
-    marshaling
-    code paths.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   2 +
- gi/pygi-argument.c        |   1 +
- gi/pygi-basictype.c       | 824
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-basictype.h       |  42 +++
- gi/pygi-cache.c           |  82 +----
- gi/pygi-cache.h           |   1 +
- gi/pygi-marshal-cleanup.c |  26 --
- gi/pygi-marshal-cleanup.h |  10 -
- gi/pygi-marshal-from-py.c | 478 ---------------------------
- gi/pygi-marshal-from-py.h |  18 -
- gi/pygi-marshal-to-py.c   | 155 ---------
- gi/pygi-marshal-to-py.h   |  11 -
- 12 files changed, 880 insertions(+), 770 deletions(-)
-
-commit 4a6bf3be49cc5aec7287c41ec02c78d60df1d44c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 11 17:39:31 2013 -0700
-
-    cache refactoring: Move PyGIHashCache and related marshaling into
-    new file
-
-    Re-organize hash table arg cache and its marshaling by moving all
-    related code fragments into an isolated file where most of it is made
-    static. pygi-hashtable.h exposes a single function:
-    pygi_arg_hash_table_new_from_info. This is all the caching system
-    needs to
-    produce the proper bits for handling hash table marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/Makefile.am            |   4 +-
- gi/pygi-cache.c           | 103 +-----------
- gi/pygi-cache.h           |  21 ++-
- gi/pygi-hashtable.c       | 413
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-hashtable.h       |  35 ++++
- gi/pygi-marshal-cleanup.c |  63 -------
- gi/pygi-marshal-cleanup.h |  10 --
- gi/pygi-marshal-from-py.c | 125 --------------
- gi/pygi-marshal-from-py.h |   6 -
- gi/pygi-marshal-to-py.c   |  85 ----------
- gi/pygi-marshal-to-py.h   |   4 -
- 11 files changed, 471 insertions(+), 398 deletions(-)
-
-commit 983d0c2252f91e63d5fa0222ef2b67722cb97434
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 11 15:49:32 2013 -0700
-
-    cache refactoring: Separate ArgCache creation and setup
-
-    Move PyGIArgCache and PyGIInterfaceCache generic setup into standalone
-    functions: pygi_arg_base_setup and pygi_arg_interface_setup
-    respectively.
-    Shift argument order and move arguments which will eventually
-    be removed
-    from the signature into the tail with comment. Isolate special
-    casing for
-    GI_INFO_TYPE_CALLBACK ArgCache creation to a single location in
-    _arg_cache_new_for_interface.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709700
-
- gi/pygi-cache.c | 263
- ++++++++++++++++++++++++++++++++------------------------
- gi/pygi-cache.h |  15 ++++
- 2 files changed, 167 insertions(+), 111 deletions(-)
-
-commit 0af98aca40fe266d1fd93caaa7256bb92ba1d3e4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Feb 2 15:52:24 2014 -0800
-
-    tests: Add skip and expectedFailure to test_gi.test_callback_owned_box
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722899
-
- tests/test_gi.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit e79d2acc54c1e3b052835de5de20feb0b7069476
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Fri Jan 24 05:17:06 2014 -0600
-
-    tests: Add test for an owned boxed struct passed in a callback
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722899
-
- tests/test_gi.py | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-commit b12ceed8cc5fa398cea2061813aac6a5ba100b6f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jan 23 17:19:12 2014 -0800
-
-    Rename gi.types.GIObjectMeta to gi.types.GObjectMeta
-
-    Rename GIObjectMeta to GObjectMeta reverting it to its original
-    name prior
-    to commit https://git.gnome.org/browse/pygobject/commit/?id=2624bd2b
-    That change could have been considered an API break for anyone
-    deriving from
-    gi.types.GObjectMeta since it is essentially public API. Rename
-    base meta
-    class to _GObjectMetaBase which was previously gi._gobject before
-    commit 2624bd2b (private API).
-
- gi/module.py |  8 ++++----
- gi/types.py  | 10 +++++-----
- 2 files changed, 9 insertions(+), 9 deletions(-)
-
-commit 15fdd827ce4bff847fb35c817c6ea2d3650eec00
-Author: Patrick Welche <prlw1@cam.ac.uk>
-Date:   Thu Jan 23 23:49:51 2014 +0000
-
-    build: Add --without-common configure option for package maintainers
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=721646
-
- Makefile.am    | 2 ++
- configure.ac   | 7 +++++++
- gi/Makefile.am | 2 ++
- 3 files changed, 11 insertions(+)
-
-commit df21dbbc84fa319af2a0f0664de436ca30df616e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jan 16 16:33:41 2014 -0800
-
-    tests: Add skipped test for GLib.Source inheritance problems
-
-    Add test showing memory problems with sub-classes of GLib.Source.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722387
-
- tests/test_source.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 45 insertions(+)
-
-commit 7222a37a4b4955fe6c1dcc86e0eb798d653711e8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 15 12:51:57 2014 -0800
-
-    Fix reference sharing of gi sub-modules in Python 2
-
-    Ensure we add a new reference to sub-modules added to gi._gi. This may
-    have caused GC errors upon exiting the Python process since a
-    reference was
-    shared by sys.modules and gi._gi.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722274
-
- gi/gimodule.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-commit 8c838b683220bcbf2091bba97b91ddb56b275aed
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 23:46:44 2014 -0800
-
-    demo: Add TreeModel interface implementation demonstration
-
-    Add demo which shows how to implement the Gtk.TreeModel interfaces
-    virtual
-    methods.
-
- demos/gtk-demo/demos/TreeView/treemodel_large.py | 143
- +++++++++++++++++++++++
- 1 file changed, 143 insertions(+)
-
-commit 911898bac5d0ad5a42ed9990588bd98871f4a8a4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 23:33:16 2014 -0800
-
-    demo: Remove "Icon View" and "Tree View" directories
-
- demos/gtk-demo/demos/Icon View/__init__.py         |   0
- demos/gtk-demo/demos/Icon View/iconviewbasics.py   | 220 ----------------
- demos/gtk-demo/demos/Icon View/iconviewedit.py     |  98 --------
- demos/gtk-demo/demos/Tree View/__init__.py         |   0
- demos/gtk-demo/demos/Tree View/liststore.py        | 210 ----------------
- .../gtk-demo/demos/Tree View/treemodel_filelist.py | 234
- -----------------
- .../gtk-demo/demos/Tree View/treemodel_filetree.py | 279
- ---------------------
- 7 files changed, 1041 deletions(-)
-
-commit f89fa08ba756a1c529ff48beb39025f834a249bf
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 23:08:33 2014 -0800
-
-    demo: Remove spaces from demo sub-directories
-
-    Move "Icon View" to IconView and "Tree View" to TreeView. This
-    will help
-    ability to package the demos in tarball releases in future versions.
-
- demos/gtk-demo/demos/IconView/__init__.py          |   0
- demos/gtk-demo/demos/IconView/iconviewbasics.py    | 220 ++++++++++++++++
- demos/gtk-demo/demos/IconView/iconviewedit.py      |  98 ++++++++
- demos/gtk-demo/demos/TreeView/__init__.py          |   0
- demos/gtk-demo/demos/TreeView/liststore.py         | 210 ++++++++++++++++
- .../gtk-demo/demos/TreeView/treemodel_filelist.py  | 234
- +++++++++++++++++
- .../gtk-demo/demos/TreeView/treemodel_filetree.py  | 279
- +++++++++++++++++++++
- 7 files changed, 1041 insertions(+)
-
-commit 0b7d85f3379adfb3cf1122588e333707ee089e46
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 14:28:52 2014 -0800
-
-    build: Remove _glib directory include from testhelper CFLAGS
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 35b5a85aad91f48935dd49fee60d69e6184eff2c
-Author: Colin Walters <walters@verbum.org>
-Date:   Tue Jan 14 16:33:38 2014 -0500
-
-    build: Set PLATFORM_VERSION again to 3.0
-
-    We are installing headers to:
-    /usr/include/pygobject-$(PLATFORM_VERSION)/pygobject.h
-
-    If the variable isn't set, then things attempting to use pygobject
-    obviously fail.
-
-    This was a regression from a build system refactoring.
-
- gi/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit f2a79904ff4d60bff657bfbfd6a2ce8ab9307848
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 12:54:42 2014 -0800
-
-    Fix Python 2 build warning for module definitions
-
-    Define PYGLIB_MODULE_ERROR_RETURN as NULL for both Python 2 and
-    3. This is
-    needed now that the function signature created with
-    PYGLIB_MODULE_START is
-    consistent between the two versions.
-
- gi/pyglib-python-compat.h | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-commit 61b4af05646a8f014cfb00a5507fec2deb9aafa6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 12:26:16 2014 -0800
-
-    tests: Run PyFlakes and PEP8 only on SUBDIRS
-
-    Move PyFlakes and PEP8 checks into check-local of the root
-    Makefile.am. Only
-    run these tools on selective subdirs of top_srcdir. This fixes
-    a problem
-    where vpath build directories within the srcdir would contain links
-    to the
-    source files, causing these tools to run multiple times slowing
-    down the
-    check process.
-
- Makefile.am       | 21 ++++++++++++++++++++-
- tests/Makefile.am |  6 ------
- 2 files changed, 20 insertions(+), 7 deletions(-)
-
-commit 9a7f6f08c1dc0eb0dd91437da8ac429fbafc8a4a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 12:25:09 2014 -0800
-
-    Remove _glib include path from gi module target
-
- gi/Makefile.am | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-commit 8afd7e880a72a44e6ea46c763bab82146fd75c96
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 8 19:22:08 2014 -0800
-
-    Move Python glib options module into gi package
-
-    Move gi/_glib/option.py into gi/_option.py. Remove gi/_glib since
-    it is no
-    longer needed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712197
-
- Makefile.am                        |  3 ++-
- configure.ac                       |  1 -
- gi/Makefile.am                     |  1 -
- gi/_glib/Makefile.am               | 21 ---------------------
- gi/_glib/__init__.py               | 20 --------------------
- gi/{_glib/option.py => _option.py} |  2 +-
- gi/overrides/GLib.py               |  2 +-
- gi/overrides/GObject.py            |  2 +-
- 8 files changed, 5 insertions(+), 47 deletions(-)
-
-commit ad565e5bbc9d12607c39be9479bc671a8f2de6e3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 8 18:57:58 2014 -0800
-
-    Merge static PyGLib module into PyGI
-
-    Remove gi._glib._glib as a separately compiled module. Move all C
-    files into
-    pygobject/gi. Remove compilation and use of libpyglib-gi-2.0-python.so
-    as a
-    shared dependency since we do not distribute header files for it.
-    Remove unused threading macros.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712197
-
- gi/Makefile.am                        | 16 +++++--
- gi/_glib/Makefile.am                  | 74
- +-------------------------------
- gi/_glib/__init__.py                  |  5 ---
- gi/_glib/option.py                    |  2 +-
- gi/gimodule.c                         |  9 ++++
- gi/{_glib => }/glibmodule.c           | 34 ++-------------
- gi/gobjectmodule.c                    |  5 +--
- gi/overrides/GLib.py                  |  2 +-
- gi/{_glib => }/pyglib-private.h       | 14 ++----
- gi/{_glib => }/pyglib-python-compat.h |  0
- gi/{_glib => }/pyglib.c               | 81
- ++---------------------------------
- gi/{_glib => }/pyglib.h               | 10 -----
- gi/{_glib => }/pygoptioncontext.c     |  0
- gi/{_glib => }/pygoptioncontext.h     |  0
- gi/{_glib => }/pygoptiongroup.c       |  0
- gi/{_glib => }/pygoptiongroup.h       |  0
- gi/{_glib => }/pygspawn.c             |  0
- gi/{_glib => }/pygspawn.h             |  0
- 18 files changed, 40 insertions(+), 212 deletions(-)
-
-commit 2624bd2b4a465a2d234951dd5b855fe8a0d46e1c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Oct 31 03:13:53 2013 -0700
-
-    Move gobject sub-module Python files into the main gi package
-
-    This moves the signalhelper, propertyhelper, and constants Python
-    modules
-    from gi/_gobject into gi. Keep gi/_gobject/__init__.py around because
-    it is
-    still needed to maintain the "_PyGObject_API" exposed by
-    pygobject.h. This
-    allows external modules compiled with prior versions of PyGObject to
-    continue working with newer versions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712197
-
- Makefile.am                                        |  5 ++-
- gi/__init__.py                                     | 19 +++++-----
- gi/{_gobject/constants.py => _constants.py}        |  5 ++-
- gi/_gobject/Makefile.am                            |  5 +--
- gi/_gobject/__init__.py                            | 42
- ++--------------------
- .../propertyhelper.py => _propertyhelper.py}       |  4 +--
- gi/{_gobject/signalhelper.py => _signalhelper.py}  |  5 ++-
- gi/module.py                                       | 16 ++++-----
- gi/overrides/GObject.py                            |  7 ++--
- gi/overrides/__init__.py                           |  2 +-
- gi/types.py                                        | 41
- ++++++++++++++++-----
- pygtkcompat/pygtkcompat.py                         |  4 +--
- tests/test_gi.py                                   |  2 +-
- tests/test_gobject.py                              |  4 ++-
- tests/test_properties.py                           |  2 +-
- tests/test_signal.py                               |  2 +-
- 16 files changed, 78 insertions(+), 87 deletions(-)
-
-commit d3e8946dbb23197a2e9d7de351a7b9cd04d360b9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Oct 31 02:22:03 2013 -0700
-
-    Merge gobject static code into the gi module
-
-    Remove gi._gobject._gobject as a separately compiled static module and
-    move all the files into gi._gi.
-    Remove dead module initialization macros from "pyglib-python-compat.h"
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=712197
-
- gi/Makefile.am                        | 31 ++++++++++++++--
- gi/_glib/pyglib-python-compat.h       | 62
- +++++++++----------------------
- gi/_gobject/Makefile.am               | 69
- +----------------------------------
- gi/_gobject/__init__.py               |  4 +-
- gi/_gobject/constants.py              |  3 +-
- gi/_gobject/propertyhelper.py         | 16 +++++---
- gi/_gobject/signalhelper.py           |  3 +-
- gi/gimodule.c                         | 13 ++++---
- gi/{_gobject => }/gobjectmodule.c     |  0
- gi/module.py                          |  4 +-
- gi/{_gobject => }/pygboxed.c          |  0
- gi/{_gobject => }/pygboxed.h          |  0
- gi/{_gobject => }/pygenum.c           |  0
- gi/{_gobject => }/pygenum.h           |  0
- gi/{_gobject => }/pygflags.c          |  0
- gi/{_gobject => }/pygflags.h          |  0
- gi/pygi-argument.c                    |  3 +-
- gi/pygi-boxed.c                       |  2 +-
- gi/pygi-ccallback.c                   |  2 +-
- gi/pygi-foreign.c                     |  2 +-
- gi/pygi-info.c                        |  2 +-
- gi/pygi-marshal-to-py.c               |  3 +-
- gi/pygi-private.h                     |  2 +-
- gi/pygi-source.c                      |  3 +-
- gi/pygi-struct.c                      |  2 +-
- gi/pygi.h                             |  3 +-
- gi/{_gobject => }/pyginterface.c      |  0
- gi/{_gobject => }/pyginterface.h      |  0
- gi/{_gobject => }/pygobject-private.h |  5 ++-
- gi/{_gobject => }/pygobject.c         |  0
- gi/{_gobject => }/pygobject.h         |  0
- gi/{_gobject => }/pygparamspec.c      |  0
- gi/{_gobject => }/pygparamspec.h      |  2 +
- gi/{_gobject => }/pygpointer.c        |  0
- gi/{_gobject => }/pygpointer.h        |  0
- gi/{_gobject => }/pygtype.c           |  0
- gi/{_gobject => }/pygtype.h           |  0
- gi/types.py                           |  3 +-
- tests/Makefile.am                     |  2 +-
- 39 files changed, 93 insertions(+), 148 deletions(-)
-
-commit a329f559002f2be0898309c9d81cdf2c34aef158
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 14 10:15:53 2014 -0800
-
-    tests: Fix test_torture_profile to return a number from its callback
-
-    Return a number from rather than None from the callback passed to
-    regress_test_torture_signature_2. This fixes a TypeError being
-    raised in
-    callback return argument marshaling which was ignored by the test
-    suite.
-
- tests/test_everything.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a50a8386aae54dace7e46569415fdef85758fb9c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 14 08:53:25 2014 +0100
-
-    Add test for callback user data arguments with following arguments
-
-    In this case we can't use the varargs userdata handling. Provides
-    test case for
-    https://bugzilla.gnome.org/show_bug.cgi?id=722104.
-
- tests/test_everything.py | 48
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 48 insertions(+)
-
-commit 3563a2d21a9e08a802d1cf30e04ba340e0bcfb49
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 13 08:19:02 2014 -0800
-
-    valgrind: Add suppression files for python3.3 and python3.3dm
-
-    Add new suppression files for Python 3. Use PYTHON_BASENAME for the
-    suppression filename in the various make check.valgrind
-    targets. Rename
-    python.supp to python2.7.supp
-
- tests/Makefile.am                     |   6 +-
- tests/{python.supp => python2.7.supp} |   0
- tests/python3.3.supp                  | 471
- ++++++++++++++++++++++++++++++++++
- tests/python3.3dm.supp                | 471
- ++++++++++++++++++++++++++++++++++
- 4 files changed, 945 insertions(+), 3 deletions(-)
-
-commit 5c6f8afed5f6aa05d65d64509a2c9b8041a66b05
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 13 18:53:55 2014 -0800
-
-    Makefile.am: Fix NEWS and ChangeLog generation under vpath builds
-
-    Make sure NEWS generation uses top_srcdir to allow "make release-news"
-    to
-    work under a vpath build (directory outside the source tree).
-    Update ChangeLog target to use $(top_srcdir)/missing. This fixes
-    a problem
-    where running "make dist" under a vpath build directory would
-    include an
-    empty ChangeLog.
-
- Makefile.am | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 056325cba3c86aefcf45ba10f2b7cf86e9fc1800
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 13 18:53:02 2014 -0800
-
-    Update HACKING to include better release tagging instructions
-
- HACKING | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
-
-commit c0a43d259c003c5d06db23debd0675b87e805b74
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 13 17:20:17 2014 -0800
-
-    configure.ac: post release version bump to 3.11.5
-
- NEWS         | 16 ++++++++++++++++
- configure.ac |  2 +-
- 2 files changed, 17 insertions(+), 1 deletion(-)
-
-commit 44d003798d9d14dde16fb44c69b94a411bdee26b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 13 16:51:41 2014 -0800
-
-    Fix mid-argument list callback user data expecting a tuple
-
-    Ensure user data arguments are always packed into a tuple during
-    callback
-    marshaling. This fixes cases where there is mid-argument user data
-    which is
-    not in the form of a variable length tuple.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=722104
-
- gi/pygi-marshal-from-py.c | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-commit 415b240e3baab522f3bf9752995610f950ba609e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Oct 15 03:57:52 2013 -0700
-
-    Remove special case GObject base class check when creating GI classes
-
-    Replace explicit GObject.Object string name check when calculating the
-    introspection class hierarchy with a more generalized technique. This
-    allows
-    any C based wrapper of a GType to "underride" an introspection class
-    automatically. This currently only handles the case of GObject.Object,
-    but
-    will be used for fundamentals and GParamSpec.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=631901
-
- gi/module.py | 17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
-
-commit 9b02b29016958791dfa9d7ebfc6c2ec44ab5690d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 7 09:16:54 2014 -0800
-
-    overrides: Fix __repr__ for various Gdk structs
-
-    Change __repr__ overrides for Gdk.Color, Gdk.RGBA, and Gdk.Atom to
-    return a
-    string reprentation that is valid Python given an expected
-    environment.
-    See: http://docs.python.org/2/reference/datamodel.html#object.__repr__
-
- gi/overrides/Gdk.py         | 10 +++++-----
- tests/test_atoms.py         |  7 +++++--
- tests/test_overrides_gdk.py |  9 +++++++++
- 3 files changed, 19 insertions(+), 7 deletions(-)
-
-commit f6a87935596a3b59c238a5572b288f34691b53d1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jan 7 07:31:22 2014 -0800
-
-    docs: Fix array length argument skipping with preceding out arguments
-
-    Remove split_function_info_args and use a list of all arguments for
-    generating skipped index lists. Determine argument skipping based
-    on the
-    full argument list in each in/inout and out/inout argument list
-    buildouts.
-    This fixes a problem where out arguments preceding array length
-    arguments
-    would still show array length arguments in the docstring. This was
-    due to an
-    index mismatch when using split lists instead of list of all
-    arguments.
-
- gi/docstring.py         | 38 ++++++++++++--------------------------
- tests/test_docstring.py | 37 +++++++++++++++----------------------
- 2 files changed, 27 insertions(+), 48 deletions(-)
-
-commit f114edc0a0afa64077a13459034afc4255b7a3f1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 6 22:10:47 2014 -0800
-
-    overrides: Remove GLib.Source.attach
-
-    Remove GLib.Source.attach override now that tail end allow-none
-    arguments
-    default to None when not specified.
-
- gi/overrides/GLib.py | 5 -----
- tests/test_glib.py   | 7 +++++++
- 2 files changed, 7 insertions(+), 5 deletions(-)
-
-commit 50ab6a8b70cbe7b67fc8d804b7773bb2c9b47251
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 6 21:42:09 2014 -0800
-
-    overrides: Remove Gtk overrides with tail end allow-none keywords
-
-    Remove overrides for Widget.render_icon, TextIter.begins_tag,
-    ends_tag,
-    toggles_tag, and TreeModel.filter_new. These overrides added an
-    optional keyword=None for allow-none arguments. This is now implicitly
-    accepted by the PyGObject machinery so the overrides can go away.
-
- gi/overrides/Gtk.py         | 16 ----------------
- tests/test_overrides_gtk.py | 11 +++++++++++
- 2 files changed, 11 insertions(+), 16 deletions(-)
-
-commit 2d388fcfca4bf1258d01b4491b4168589f3dd2b0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 6 21:22:41 2014 -0800
-
-    overrides: Remove Pango.Context.get_metrics
-
-    Remove the override for Pango.Context and the get_metrics method. This
-    can
-    be done now that tail end method arguments with "allow-none"
-    are implicitly
-    defaulted to use None/NULL.
-
- gi/overrides/Pango.py         |  9 ---------
- tests/test_overrides_pango.py | 12 ++++++++++++
- 2 files changed, 12 insertions(+), 9 deletions(-)
-
-commit 43b35b1df3b6c0d8679f3cc0b08ef6ddcb276331
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jan 6 17:35:04 2014 -0800
-
-    Add enum and flags member methods
-
-    Add all methods from GIEnumInfo to both enums and flags classes.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693099
-
- gi/module.py     | 2 ++
- tests/test_gi.py | 9 +++++++++
- 2 files changed, 11 insertions(+)
-
-commit 731a2cb4372084eac6cfe5bf190f6efa730e97e4
-Author: Patrick Welche <prlw1@cam.ac.uk>
-Date:   Mon Jan 6 22:31:48 2014 +0000
-
-    python.m4: g/c JD_PYTHON_CHECK_VERSION
-
-    We currently require automake 1.11.1, and its AM_PYTHON_CHECK_VERSION
-    is identical (made here).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=721662
-
- configure.ac |  4 ++--
- m4/python.m4 | 23 ++---------------------
- 2 files changed, 4 insertions(+), 23 deletions(-)
-
-commit aaaead18e2167c2becb309f1d9ae199222c0256b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jan 4 16:31:56 2014 -0800
-
-    Support union creation with PyGIStruct
-
-    Add additional case for allowing the creation bare unions wrapped with
-    PyGIStruct. This is needed because PyGIStruct wraps both GIStruct and
-    GIUnion types.
-
- gi/pygi-struct.c         | 39 ++++++++++++++++++++++++++++++++++-----
- tests/test_repository.py | 13 +++++++++++++
- 2 files changed, 47 insertions(+), 5 deletions(-)
-
-commit 64f15961b637a7e1388bd8d2cd08f04fa20e4de4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jan 4 16:07:44 2014 -0800
-
-    Fix crash in error handling when creating struct with mismatched
-    info type
-
-    Error handling code was attempting to get the PyType of a pointer to a
-    pointer. Use the correct amount of indirection so an exception is
-    raised as
-    intended rather than a segfault.
-
- gi/pygi-info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 07abf8343bbeac6f36d370ced654fa6506b22175
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 1 20:23:17 2014 -0800
-
-    docs: Skip display of default constructor for disguised structs
-
-    Structs which have zero length should now show a default constructor.
-    Structs with a length should not show keyword arguments in the default
-    constructor.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=708060
-
- gi/docstring.py         |  9 ++++++++-
- tests/test_docstring.py | 18 ++++++++++++++++--
- 2 files changed, 24 insertions(+), 3 deletions(-)
-
-commit e8359847136e9ad76a670a382c0abc61cb4e81d3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 1 19:57:06 2014 -0800
-
-    Cleanup disguised struct constructor error and add it to boxed
-
-    Give a cleaner error message when an attempt is made to create
-    a disguised
-    struct which also gives a hint to look at the pydoc. Add similar
-    error to
-    disguised boxed/unions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=647249
-
- gi/pygi-boxed.c          | 17 ++++++++++++++---
- gi/pygi-struct.c         |  2 +-
- tests/test_everything.py |  1 -
- tests/test_glib.py       |  4 ++++
- 4 files changed, 19 insertions(+), 5 deletions(-)
-
-commit 9ce527b09ed032f2cc83c2d83de8bb6d7b19be02
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 1 19:54:59 2014 -0800
-
-    docs: List default constructor in doc strings
-
-    Add default constructor to class docs strings as:
-    Object(**properties)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=708060
-
- gi/docstring.py | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-commit 9bfd73e7c3f2ec4975b3e530ba7c2cc55ee793d5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 1 17:34:32 2014 -0800
-
-    docs: List constructors in object and struct doc strings
-
-    Add type dispatching to gi.docstring documentation generator for
-    info types
-    of StructInfo and ObjectInfo. Add lazy doc string generation to
-    Object and Struct meta classes by using a property for __doc__. This
-    lists
-    available constructors immediately in all GObject.Object and Struct
-    docs.
-    ipython example:
-
-    >>> Gtk.Button?
-    :Constructors:
-        Button(**properties)
-        new()
-        new_from_icon_name(icon_name:str, size:int)
-        new_from_stock(stock_id:str)
-        new_with_label(label:str)
-        new_with_mnemonic(label:str)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=708060
-
- gi/docstring.py         | 36 +++++++++++++++++++++++++++++-------
- gi/types.py             |  9 +++++++++
- tests/test_docstring.py |  8 ++++++++
- 3 files changed, 46 insertions(+), 7 deletions(-)
-
-commit 44612636575dd93c97210a7255c4490e2c84db67
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 1 17:10:15 2014 -0800
-
-    docs: Cleanup PyGIBaseInfo repr
-
-    Remove angle brackets and pointer address from
-    PyGIBaseInfo.__repr__. This
-    cleans up documentation and makes it easier to read.
-
- gi/pygi-info.c | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-commit 826c0e63eabac68fd665335950d311988a1405e3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 21:45:21 2013 -0800
-
-    docs: Add return values and skip implicit out arguments in functions
-
-    Add gi.CallableInfo.skip_return static binding for testing if
-    the return
-    value should show up in docs. Skip implicit list index arguments
-    for out
-    values.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697356
-
- gi/docstring.py         | 26 +++++++++++++++++++++-----
- gi/pygi-info.c          |  7 +++++++
- tests/test_docstring.py |  6 ++++++
- 3 files changed, 34 insertions(+), 5 deletions(-)
-
-commit aeccdaddf32dc7b48a79a1cd95a421a26895c9b2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 21:15:27 2013 -0800
-
-    docs: Replace usage of functools.wraps with a custom version
-
-    Using functools.wraps in overrides would cause docstring evaluation
-    which
-    can hurt performance during overrides loading. Add custom wraps
-    decorator
-    which only copies __name__ and __module__ attributes. Remove function
-    wrapping used within gi.overrides.overridefunc because the wrapping
-    was not
-    doing anything, this preserves __doc__ ability without causing an
-    eval at
-    load time.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697356
-
- gi/overrides/GObject.py  |  3 +--
- gi/overrides/__init__.py | 21 ++++++++++++---------
- 2 files changed, 13 insertions(+), 11 deletions(-)
-
-commit cebf5314f195bf4bd6ee19a1da3bbb50c2c9bbd6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 19:42:02 2013 -0800
-
-    docs: Move GIArgInfo.get_pytype_hint into gi.docstring
-
-    Move the C implementation of pytype hinting into pure Python. Now that
-    doc strings are lazily evaluated we can simplify this tedious bit of C
-    code with Python. This is precursory work for getting return
-    types into
-    function doc strings.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697356
-
- gi/docstring.py          | 50 ++++++++++++++++++++++++++++++++++++++---
- gi/pygi-info.c           | 49 ----------------------------------------
- gi/pygi-type.c           | 58
- ------------------------------------------------
- gi/pygi-type.h           |  2 --
- tests/test_docstring.py  |  8 ++++---
- tests/test_repository.py |  1 -
- 6 files changed, 52 insertions(+), 116 deletions(-)
-
-commit 28a178e385e32c56910f1c430b370a8872218081
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 17:50:36 2013 -0800
-
-    docs: Skip implicit array length args when building function doc
-    strings
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697356
-
- gi/docstring.py         | 8 ++++++--
- tests/test_docstring.py | 4 ++++
- 2 files changed, 10 insertions(+), 2 deletions(-)
-
-commit 2ef59b89311529e34366d4d7aa8f8ae9a8ea6371
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 13:41:20 2013 -0800
-
-    gtk-demo: Avoid crash in CSS demos
-
-    Avoid a potential crash in the CSS demos where the text editing
-    buffer is
-    out of sync with the last good CSS parsing buffer. In the case of CSS
-    warnings, we get a parsing-error callback but no exception is raised.
-    This would cause the buffers to become out of sync and accessing
-    position
-    information from the parsing-error section would crash the text
-    editor due
-    to an out of range iterator being created.
-
- demos/gtk-demo/demos/Css/css_basics.py      | 31
- +++++++++++++++++++++--------
- demos/gtk-demo/demos/Css/css_multiplebgs.py | 31
- +++++++++++++++++++++--------
- 2 files changed, 46 insertions(+), 16 deletions(-)
-
-commit b81f9c9b4e62d8cf589576aba8d9abbac4c80953
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 31 02:05:46 2013 -0800
-
-    gtk-demo: Add info bar and better error handling to CSS demos
-
-    Use an info bar for displaying CSS parsing errors. Store the last good
-    stylesheet text for use as a backup when a parsing error occures. This
-    gives
-    a seamless look while typing changes into the text editor.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=719722
-
- demos/gtk-demo/demos/Css/css_basics.py      | 28
- +++++++++++++++++++++-------
- demos/gtk-demo/demos/Css/css_multiplebgs.py | 29
- ++++++++++++++++++++++-------
- 2 files changed, 43 insertions(+), 14 deletions(-)
-
-commit becb56734e13df182fd31cfe46c465477dfc4d2c
-Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 30 16:36:28 2013 +0100
-
-    gtk-demo: Add CSS demos
-
-    Add a couple of demos demostrating the use of CSS, the css files are
-    stored into a GResource binary file compiled with
-    glib-compile-resources,
-    the comments in gtk-demo.py explain the usage of GResource.
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=719722
-
- .gitignore                                    |   1 +
- demos/gtk-demo/demos/Css/__init__.py          |   0
- demos/gtk-demo/demos/Css/css_accordion.py     |  94 +++++++++++++++
- demos/gtk-demo/demos/Css/css_basics.py        | 119 +++++++++++++++++++
- demos/gtk-demo/demos/Css/css_multiplebgs.py   | 157
- ++++++++++++++++++++++++++
- demos/gtk-demo/demos/data/brick.png           | Bin 0 -> 5043 bytes
- demos/gtk-demo/demos/data/brick2.png          | Bin 0 -> 10713 bytes
- demos/gtk-demo/demos/data/css_accordion.css   |  52 +++++++++
- demos/gtk-demo/demos/data/css_basics.css      |  22 ++++
- demos/gtk-demo/demos/data/css_multiplebgs.css | 136
- ++++++++++++++++++++++
- demos/gtk-demo/demos/data/cssview.css         |  41 +++++++
- demos/gtk-demo/demos/data/demo.gresource      | Bin 0 -> 31110 bytes
- demos/gtk-demo/demos/data/demo.gresource.xml  |  18 +++
- demos/gtk-demo/demos/data/reset.css           |  68 +++++++++++
- demos/gtk-demo/gtk-demo.py                    |  16 ++-
- 15 files changed, 723 insertions(+), 1 deletion(-)
-
-commit 2ff095ea0b0c05fbf6cc332eeadf26cfeb9e69f7
-Author: Colin Watson <cjwatson@ubuntu.com>
-Date:   Tue Dec 24 22:19:02 2013 +0000
-
-    build: Avoid clash between gi/types.py and stdlib
-
-    Use non-recursive make for the Python modules in gi/ to work around a
-    clash between gi/types.py and the standard library's types module when
-    running py-compile.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=721025
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- Makefile.am    | 24 ++++++++++++++++++++++++
- gi/Makefile.am | 20 ++------------------
- 2 files changed, 26 insertions(+), 18 deletions(-)
-
-commit b9716853fb7727fcf2b5ea59a3368d5a5b2e6be2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Dec 16 04:17:28 2013 -0800
-
-    configure.ac: post-release bump to 3.11.4
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2ec00c2563bebff1e55faf97c67e44fda862ad5b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Dec 16 04:10:54 2013 -0800
-
-    release 3.11.3
-
- NEWS | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 7fb55f93e207378992cd9f3e0663604a4de2213f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Dec 12 01:35:11 2013 -0800
-
-    Replace usage of PyGIBoxed_Type with PyGIStruct_Type
-
-    Remove empty definition of PyGIBoxed_Type and use PyGIStruct_Type
-    in its
-    place for GI_INFO_TYPE_BOXED based infos in repositories. As noted in
-    the docs: "GI_INFO_TYPE_BOXED boxed, see GIStructInfo or GIUnionInfo"
-    we can use the GIStructInfo API for boxed types because we also
-    dispatch
-    base classes on GType checks as seen in:
-    https://git.gnome.org/browse/pygobject/tree/gi/module.py?id=3.11.2#n186
-    This fixes some of the issues noted in bug 581525.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=581525
-
- gi/pygi-info.c | 13 +------------
- 1 file changed, 1 insertion(+), 12 deletions(-)
-
-commit b3c85eec75c62c138c136531ebe49a33351941f0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 17 20:12:50 2013 -0800
-
-    configure.ac: post release version bump to 3.11.3
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d1314af8f237a634dbfefb0a1c319f910d3d8765
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 17 20:04:49 2013 -0800
-
-    release 3.11.2
-
- NEWS | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit 6fc3d977f17397e514aed492055e93d03c410f60
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 12 23:04:50 2013 -0800
-
-    gtk-demo: Fix pyflakes error after recent commit
-
- demos/gtk-demo/demos/pixbuf.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a309b3baf5ee99139cc2d1817339233e24391bc2
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 12 18:41:35 2013 -0800
-
-    gkt-demo: Change main info/source notebook into a GtkStack
-
-    Use the new in 3.10 GtkStack and GtkStackSwitcher for switching
-    between Info
-    and Source tabs. Beyond giving a newer look and feel to the demo,
-    this also
-    provides an example for how to use a GtkStack.
-
- demos/gtk-demo/gtk-demo.py | 23 +++++++++++++++++------
- 1 file changed, 17 insertions(+), 6 deletions(-)
-
-commit 69ff43bf6292fb3ddaea027cfc595139c4f1655d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 12 19:32:18 2013 -0800
-
-    gtk-demo: Cleanup deprecated calls throughout demo code
-
-    Specify constructor arguments as keyword args for various object
-    creation calls. Update combobox demo to use bind_property instead
-    of manual
-    signal connections with update callbacks.
-
- demos/gtk-demo/demos/Entry/entry_buffer.py         |  6 ++---
- demos/gtk-demo/demos/Entry/entry_completion.py     |  6 ++---
- demos/gtk-demo/demos/Entry/search_entry.py         |  8 +++---
- demos/gtk-demo/demos/Tree View/liststore.py        |  8 +++---
- .../gtk-demo/demos/Tree View/treemodel_filelist.py |  2 +-
- .../gtk-demo/demos/Tree View/treemodel_filetree.py |  2 +-
- demos/gtk-demo/demos/appwindow.py                  |  4 +--
- demos/gtk-demo/demos/combobox.py                   | 30
- +++-------------------
- demos/gtk-demo/demos/dialogs.py                    | 26
- +++++++++----------
- demos/gtk-demo/demos/expander.py                   |  9 +++----
- demos/gtk-demo/demos/images.py                     |  2 +-
- demos/gtk-demo/demos/infobars.py                   | 23 +++++++++--------
- demos/gtk-demo/demos/links.py                      | 10 ++++----
- demos/gtk-demo/demos/menus.py                      |  4 +--
- demos/gtk-demo/demos/pickers.py                    |  8 +++---
- demos/gtk-demo/demos/pixbuf.py                     |  4 +--
- demos/gtk-demo/demos/rotatedtext.py                |  2 +-
- 17 files changed, 64 insertions(+), 90 deletions(-)
-
-commit 890fb7b97823985d5c800284ead43a49174db244
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 12 18:19:34 2013 -0800
-
-    Revert TreeStore and ListStore initializer replacements
-
-    Revert changes to Tree/ListStore where the __init__ overrides were
-    replaced
-    with __new__ overrides which accept column types directly. The
-    issue with
-    the change is sub-classes of these types can override __init__
-    themself
-    passing in their own column types to the super class. These
-    sub-classes
-    expect the super class to handle column type setup via __init__
-    and hence
-    the change described is an API break. This reverts parts of commit:
-    2f2069c9efcd8f312ce9ffa572df371fbc08822d
-
- gi/overrides/Gtk.py | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-commit 795201873a3aae530598f5e16470b6a8d2d55c23
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 15 20:01:48 2013 -0700
-
-    Deprecate Gdk.Cursor constructor dispatching
-
-    Give deprecation warning for the overridden __new__ method on
-    Gdk.Cursor when more than one argument is used. Recommend using
-    Gdk.Cursor.new_for_display, new_from_pixbuf, and new_from_pixmap
-    instead.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705810
-
- gi/overrides/Gdk.py         | 48
- ++++++++++++++++++++++++++-------------------
- tests/test_overrides_gdk.py | 17 ++++++++++++----
- 2 files changed, 41 insertions(+), 24 deletions(-)
-
-commit 2f2069c9efcd8f312ce9ffa572df371fbc08822d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 15 19:23:18 2013 -0700
-
-    Cleanup overzealous new and init implementations
-
-    Remove PyGObject initializer code attempting to set properties on
-    GObjects that have already been created. There were a number of
-    overridden __new__ and __init__ methods that stripped away
-    arguments before calling the base class to work around attempted
-    property sets and argument count errors (fixing the symptom not
-    the problem).
-    Use Gtk.ListStore/TreeStore.new with __new__ override instead
-    of __init__ with set_column_types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705810
-
- gi/_gobject/gobjectmodule.c | 35 ++++++++++++++---------------------
- gi/_gobject/pygobject.c     | 16 ++++++++++++++--
- gi/overrides/GObject.py     |  3 ---
- gi/overrides/Gdk.py         | 15 ---------------
- gi/overrides/Gtk.py         | 11 ++++-------
- gi/overrides/Pango.py       |  5 -----
- gi/pygi-boxed.c             |  6 ------
- 7 files changed, 32 insertions(+), 59 deletions(-)
-
-commit 86a37d67455dc5d435ade35f17b27c5de2b288f5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Aug 13 18:02:54 2013 -0700
-
-    Add deprecation warnings and cleanup class initializer overrides
-
-    Print deprecation warnings for calls to class initializers which
-    don't explicitly specify keywords. Print deprecation warning
-    for overrides that have renamed keywords (Gtk.Table.rows should
-    be n_rows). Additionally deprecate non-standard defaults with
-    initializers (Gtk.SizeGroup.mode defaults to HORIZONTAL in GTK+
-    and VERTICAL in PyGI).
-    Remove AboutDialog override because it doesn't do anything.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705810
-
- gi/overrides/Gio.py         |   6 +-
- gi/overrides/Gtk.py         | 367
- ++++++++++++++++++++++----------------------
- gi/overrides/__init__.py    |  88 +++++++++++
- tests/test_gi.py            |  75 +++++++++
- tests/test_overrides_gtk.py |  95 ++++++++----
- 5 files changed, 411 insertions(+), 220 deletions(-)
-
-commit d2e9be8e2b3d21b55e1aad3d0b22dcff3421b702
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Aug 13 17:42:11 2013 -0700
-
-    tests: Use explicit keywords args when calling initializers
-
-    Replace all usage of GObject creation that relies on positional
-    arguments from overrides. Positional initializer args will be
-    deprecated, updating the tests as a first pass proves backwards
-    and forwards compatibility of the deprecation.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705810
-
- tests/test_overrides_gtk.py | 107
- +++++++++++++++++++++++---------------------
- 1 file changed, 55 insertions(+), 52 deletions(-)
-
-commit 8342302dac9bf3fcb49ec3ac334dbf014b4db025
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 12 03:46:08 2013 -0800
-
-    Revert "Add type checking to positional Gtk.Box and Gtk.Window
-    ctor arguments"
-
-    This reverts commit 7193f0509a0ed7da7c810daa6733e34a22db3180.
-
- gi/overrides/Gtk.py         |  7 -------
- tests/test_overrides_gtk.py | 18 ------------------
- tests/test_properties.py    |  9 ---------
- 3 files changed, 34 deletions(-)
-
-commit 1f37340c4623262a2146ec8cd25b487cdf4234bd
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 10 03:26:10 2013 -0800
-
-    Fix dir method for static GParamSpec in Python 3
-
-    Add a __dir__ method which lists GParamSpec attributes and remove
-    code from
-    getattr which made use of the deprecated __members__ technique for dir
-    (removed in Python 3). This makes dir(pspec) work again in Python 3.
-
- gi/_gobject/pygparamspec.c | 218
- ++++++++++++++++++++++++---------------------
- tests/test_gi.py           |  10 +++
- 2 files changed, 126 insertions(+), 102 deletions(-)
-
-commit 7193f0509a0ed7da7c810daa6733e34a22db3180
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 5 15:28:12 2013 +0100
-
-    Add type checking to positional Gtk.Box and Gtk.Window ctor arguments
-
-    Gtk.Box and Gtk.Window are base classes of a lot of widgets. Avoid
-    confusion
-    when trying to create a subclass of them through the GObject
-    constructor with
-    positional arguments by at least verifying that their type is
-    right. Otherwise
-    you can do things like
-
-      chooser = Gtk.FileChooserWidget(Gtk.FileChooserAction.SELECT_FOLDER)
-
-    which succeeds, but does not have the desired effect (it sets the
-    "homogenous"
-    property of the Gtk.Box superclass instead).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=711487
-
- gi/overrides/Gtk.py         |  7 +++++++
- tests/test_overrides_gtk.py | 18 ++++++++++++++++++
- tests/test_properties.py    |  9 +++++++++
- 3 files changed, 34 insertions(+)
-
-commit 79aea2655db11bc9d2c0ad75c87862b2b66da594
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Nov 4 03:29:57 2013 -0800
-
-    Remove overzealous argument checking for callback userdata
-
-    Remove check which ensures userdata is None if the callback is None.
-    This check would need to become more complicated with recent
-    versions of
-    PyGObject where userdata can be variable (would also need to check
-    against
-    a tuple containing None). Instead of adding more complex checking,
-    simply
-    remove the checking as it is unnecessary to begin with.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=711173
-
- gi/pygi-marshal-from-py.c   |  7 -------
- tests/test_overrides_gtk.py | 11 +++++++----
- 2 files changed, 7 insertions(+), 11 deletions(-)
-
-commit f32d649b72f865e32cc2b62a54d927b8345da0c8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 28 16:00:57 2013 +0100
-
-    configure.ac: post-release bump to 3.11.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5bcdb56433d0ba2976f05946c6c5b6ffe3e84901
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 28 15:59:51 2013 +0100
-
-    release 3.11.1
-
- NEWS | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-commit 65b8f7bd77474e361c80905ec23de6dbde27970c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 27 22:09:27 2013 -0700
-
-    Fix toggleref safety problems by always enabling the GIL
-
-    Call PyEval_InitThreads for the base gi module import. This forces the
-    Python internals create the GIL and always support threading with the
-    various thread state enter/exit funcs. This is needed since we cannot
-    predict which GI repositories might accept Python callbacks and run
-    them in
-    non-Python threads or trigger toggle ref notifications in a thread
-    other
-    than main.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709223
-
- gi/__init__.py       |  2 --
- gi/gimodule.c        | 18 +++++++-----------
- gi/overrides/GLib.py |  8 ++------
- 3 files changed, 9 insertions(+), 19 deletions(-)
-
-commit 57195c9c864bc25521bb3cb98286e6d6f0645652
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 27 16:02:13 2013 -0700
-
-    Add consistent GLib.MainLoop SIGINT cleanup
-
-    Remove auto cleanup of SIGINT source handling by returning True
-    from the
-    signal callback. This gives the __del__ method consistent cleanup
-    semantics
-    regardless of whether or not a SIGINT occurred.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=710978
-
- gi/overrides/GLib.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 1c03ebba9598e7b6d5293889f46b015bfac3611c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 27 15:16:09 2013 -0700
-
-    tests: Fix source testing to handle critical with non-existing sources
-
-    Silence new critical coming from g_source_remove on non-existing
-    sources.
-    This function still returns False, but we need to silence the new
-    critical
-    so the test suite doesn't fail. See bug 710724.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=710978
-
- tests/test_source.py | 18 ++++++++++++------
- 1 file changed, 12 insertions(+), 6 deletions(-)
-
-commit ac776da7e56b78a2fa422487f0ef0d8771bcb78f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 00:01:35 2013 -0700
-
-    docs: Add a keyword value of None for allow-none annotations
-
-    Update documentation generator for allow-none arguments and
-    user_data arguments to show a keyword value of None.
-    Add skip for GDestroyNotify closure arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/docstring.py         | 20 +++++++++++++++++---
- tests/test_docstring.py | 10 ++++++++++
- 2 files changed, 27 insertions(+), 3 deletions(-)
-
-commit e1bf9c069644ea0bff0c6a7efa72a285e122a414
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 19 19:03:12 2013 -0700
-
-    Remove overrides for supporting pre-3.10 GObject signal functions
-
-    Remove GObject override code for supporting pre-3.10 signal functions
-    which
-    annotate the object argument as "gpointer". With PyGObject 3.11
-    having a
-    dependency on GObject 3.10, clear the special case overrides out.
-
- gi/overrides/GObject.py | 76
- ++++++-------------------------------------------
- 1 file changed, 9 insertions(+), 67 deletions(-)
-
-commit 0c308de528c402f67808b13760ca30d55d4c99d7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 18 17:15:06 2013 -0700
-
-    Add threads_init back as a requirement for non-Python threaded repos
-
-    Re-add a "threads_init" function to gi for explicit intialization
-    of Python
-    threading support. This was marked as deprecated in the previous cycle
-    because using Python threads already initializes everything.
-    However, we still need an explicit initalization when using
-    repositories
-    with non-Python threads which may interact with Python callbacks
-    (GStreamer).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=710447
-
- gi/__init__.py       |  2 ++
- gi/gimodule.c        | 10 ++++++++++
- gi/overrides/GLib.py | 11 +++++++----
- 3 files changed, 19 insertions(+), 4 deletions(-)
-
-commit a2fa531b4dee73c193cac92fa3e870808688b5d7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Oct 14 20:38:13 2013 -0700
-
-    Add dir method to GObject props accessor
-
-    Remove special case __members__ attribute from the props accessor
-    objects getattr method. This has been deprecated since Python 2.3 and
-    removed in Python 3. Replace this with a __dir__ method making use
-    of the
-    old members list building code. Additionally fix error where the
-    GObjectClass was being unref'd too many times when using
-    dir(Object.props),
-    causing a GLib critical.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705754
-
- gi/_gobject/pygobject.c | 29 +++++++++++++++++++++--------
- tests/test_gi.py        | 14 ++++++++++++++
- 2 files changed, 35 insertions(+), 8 deletions(-)
-
-commit 799989ada2f6b1d729f078f204445651c808a2c7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 3 04:37:13 2013 -0700
-
-    Remove PyGObjectWeakRef now that g_binding_unbind exists
-
-    Remove the static code for managing GBinding weak references now
-    that GLib
-    has a method (unbind) for clearing out bindings.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699571
-
- gi/_gobject/pygobject.c | 59
- +------------------------------------------------
- gi/overrides/GObject.py | 19 ++++++++++++++++
- tests/test_gobject.py   | 41 ++++++++++++++++++++--------------
- 3 files changed, 44 insertions(+), 75 deletions(-)
-
-commit fe217e0afbd63f05285e59628533f351896377d9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Oct 9 00:34:37 2013 -0700
-
-    Fix GArray, GList, GSList, and GHashTable marshaling leaks
-
-    Remove calling of cleanup code for transfer-everything modes by
-    ensuring
-    cleanup_data is set to NULL in from_py marshalers. Use array and hash
-    table ref/unref functions for container transfer mode to ensure we
-    have a
-    valid container ref after invoke and during from_py cleanup of
-    contents.
-    Rework restrictions with to_py marshaling cleanup so we always
-    unref the
-    container for transfer-everything and transfer-container modes.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-marshal-cleanup.c | 54 +++++++++++----------------------
- gi/pygi-marshal-from-py.c | 77
- ++++++++++++++++++++++++++++++++++++++++-------
- 2 files changed, 84 insertions(+), 47 deletions(-)
-
-commit 7407367f424595c2780a2d6a47d936ad0bd91735
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Oct 7 14:11:39 2013 -0700
-
-    Add cleanup_data argument used for Python to C marshaler cleanup
-
-    Add a new output argument to all from_py marshalers which is used for
-    keeping track of marshaling data that later needs cleanup. Previously
-    most
-    marshalers would rely on the GIArgument->v_pointer as the means
-    for data
-    cleanup. However, this pointer would get clobbered in the case of
-    bi-directional arguments (inout) and the memory lost.
-    Use the new cleanup_data for storing temporarily wrapped C arrays
-    so we
-    don't need to re-calculate the length argument during cleanup.
-
-    Additionally delay the from_py marshaling cleanup function until after
-    _invoke_marshal_out_args is called. This gives inout arguments
-    which don't
-    modify the pointer sufficient time to exist until they marshaled
-    back to
-    Python (gi_marshalling_tests_gvalue_inout).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-argument.c            |   4 +-
- gi/pygi-cache.h               |   3 +-
- gi/pygi-invoke-state-struct.h |   7 +-
- gi/pygi-invoke.c              |  20 +++---
- gi/pygi-marshal-cleanup.c     |  43 +++++-------
- gi/pygi-marshal-from-py.c     | 160
- ++++++++++++++++++++++++++++--------------
- gi/pygi-marshal-from-py.h     |  45 ++++++++----
- 7 files changed, 177 insertions(+), 105 deletions(-)
-
-commit 9456e83233a927f1f01c6ffcb1f07c62b491a1df
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Aug 7 12:08:15 2013 -0700
-
-    Add support for variable user data arguments
-
-    Support a variable number of user data arguments for all callback
-    connection function where the user data is the last explicit argument.
-    This adds convience as well as consistency with the rest of PyGObject.
-    Cleanup overrides for GLib.idle_add, timeout_add, timeout_add_seconds,
-    io_add_watch, and child_watch_add which manually implemented this
-    feature.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/overrides/GLib.py      | 75
- +++++++++++++++--------------------------------
- gi/pygi-cache.c           | 14 +++++++++
- gi/pygi-cache.h           |  3 ++
- gi/pygi-closure.c         | 37 +++++++++++++++--------
- gi/pygi-invoke.c          | 71
- +++++++++++++++++++++++++++++++-------------
- gi/pygi-marshal-from-py.c |  5 ++++
- tests/test_everything.py  | 32 ++++++++++++++++++++
- tests/test_glib.py        | 21 +++++++++++++
- tests/test_subprocess.py  |  8 ++---
- 9 files changed, 177 insertions(+), 89 deletions(-)
-
-commit ba4a0a65bf9ec44c3b9449f63d63035bff75d8df
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 14 12:57:04 2013 +0200
-
-    Bump glib and g-i dependencies to latest stable.
-
-    glib 2.38 and g-i 1.38 are from stable GNOME 3.10 which we now
-    assume as
-    minimal version.
-
-    Drop @unittest.skipUnless tags from tests which didn't work with
-    g-i 1.36.
-
- README           | 3 ++-
- configure.ac     | 6 +++---
- tests/test_gi.py | 2 --
- 3 files changed, 5 insertions(+), 6 deletions(-)
-
-commit 2a5ad2af6bc91b187a2f07fc8d001ec7ad618adf
-Author: Nuno Araujo <nuno.araujo@russo79.com>
-Date:   Fri Oct 11 18:41:48 2013 +0200
-
-    Fix TypeError when setting drag target_list to None
-
-    When calling Widget.drag_dest_set_target_list(None) or
-    Widget.drag_source_set_target_list(None)
-    a "TypeError: 'NoneType' object is not iterable" is thrown.
-
-    According to Gtk documentation [1] [2], this shouldn't be the case
-    since client code should be
-    able to pass NULL in calls made to gtk_drag_dest_set_target_list and
-    gtk_drag_source_set_target_list.
-
-    We now check if the target_list is None and do not try to create a
-    TargetList if it is the case.
-
-    [1]
-    https://developer.gnome.org/gtk3/3.10/gtk3-Drag-and-Drop.html#gtk-drag-dest-set-target-list
-    [2]
-    https://developer.gnome.org/gtk3/3.10/gtk3-Drag-and-Drop.html#gtk-drag-source-set-target-list
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709926
-
- gi/overrides/Gtk.py         | 4 ++--
- tests/test_overrides_gtk.py | 2 ++
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 27e9f6ede021fc58e952491b67d69c2a5cdd6acb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Oct 1 17:09:39 2013 -0700
-
-    Use qdata for wrapper retrieval in toggle reference notifications
-
-    Replace usage of user data holding PyGObject wrappers in toggle ref
-    notifications with GObject qdata retrieval. This fixes thread
-    safety issues
-    where a toggle notify may be called from another thread during
-    the PyGObject
-    wrappers dealloc. In this case the toggle notify is blocked because
-    the GIL
-    is held in dealloc, and when it continues, the user data would be
-    holding an
-    invalid PyGObject wrapper. Using qdata solves this by ensuring
-    the wrapper
-    retrieval is done within the safety of the GIL and may turn up
-    as NULL.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709223
-
- gi/_gobject/pygobject.c | 21 ++++++++++++++-------
- 1 file changed, 14 insertions(+), 7 deletions(-)
-
-commit 55d925d5f0fb87464b1f391c325c1e70da10d33d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Oct 10 16:10:16 2013 -0700
-
-    Add expected failure to deal with fixes in gimarshallingtests.c
-
-    Fix test_object_full_inout based on newer gimarshallingtests.c >
-    1.38.0.
-    Add expectedFailure to deal with previous versions of
-    gimarshallingtests.c.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709796
-
- tests/test_gi.py | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit d866d422cc39b229f443dd08a3ea50cb3f7df8e6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Oct 7 01:17:08 2013 -0700
-
-    Fix memory leaks for inout array arguments
-
-    Add tracking for array allocations to from_py marashalers in the
-    argument states extra data (arg_data). This is then used later
-    for inout
-    marshaling cleanup to call the array cleanup function.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-invoke.c          |  1 +
- gi/pygi-marshal-cleanup.c |  1 +
- gi/pygi-marshal-from-py.c | 13 +++++++++----
- 3 files changed, 11 insertions(+), 4 deletions(-)
-
-commit 31263ac117027446c8e2fd1b56d7e348384aabef
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 6 21:54:15 2013 -0700
-
-    Fix to Python marshaling leaks for arrays holding GVariants
-
-    Add early check for array items holding pointers and simply assign the
-    pointer to GIArgument.v_pointer prior giving it to the per-item
-    marshaler.
-    This simplifies marshaling and fixes leaks regarding arrays of
-    GVariants by
-    removing the unneeded g_variant_ref_sink (variants are always
-    pointers).
-    Conditionalize the use of g_variant_ref_sink based on transfer mode
-    in the
-    per-item marshaler. This fixes a reference leak where we are given
-    ownership
-    of the variant (transfer full) but added a new ref anyway.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-marshal-to-py.c | 34 ++++++++++++++++++----------------
- 1 file changed, 18 insertions(+), 16 deletions(-)
-
-commit c9580ce1156789221aa19b00c7aab404db5431b5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 6 04:26:18 2013 -0700
-
-    Cleanup per-item array marshaling code for flat arrays
-
-    Add an early per-item check which tests if the item being marshaled
-    is a
-    pointer and simply copies the pointer into the array. This takes
-    care of the
-    GdkAtom and GVariant special cases because these items are always
-    reported
-    as pointers.
-    Fix error condition cleanup code when an item fails marshaling in
-    the middle
-    of an array.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-marshal-from-py.c | 87
- +++++++++++++++++++++--------------------------
- tests/test_gi.py          | 32 +++++++++++++++++
- 2 files changed, 71 insertions(+), 48 deletions(-)
-
-commit 4623caa71c54958ab821db27a9eff2790acb3975
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 5 17:00:54 2013 -0700
-
-    Fix GValue array marshaling leaks and crash fallout
-
-    * Decrement references for results of PySequence_GetItem. There were
-    a few
-    places we were not decrementing the Python reference, leaking
-    the value.
-    * Add tracking of Python arguments with recursive marshaling
-    cleanup. This
-    allows arrays of GValues which have been coerced from Python types
-    to be
-    properly free'd (also fixes bug 703662).
-    * Use g_variant_ref for variant arguments marked as transfer
-    everything.
-    This fixes double free's caused by the decrementing of
-    PySequence_GetItem
-    results.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-cache.h           |  1 +
- gi/pygi-invoke.c          |  1 +
- gi/pygi-marshal-cleanup.c | 50
- +++++++++++++++++++++++++++++++++++++++++------
- gi/pygi-marshal-cleanup.h | 14 +++++++++++++
- gi/pygi-marshal-from-py.c | 20 ++++++++++++++++---
- gi/pygi-marshal-to-py.c   |  1 +
- 6 files changed, 78 insertions(+), 9 deletions(-)
-
-commit 549f849ef8854352483657df3d7558688a4b0007
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Sep 28 00:26:28 2013 -0700
-
-    Refactor GLib.io_add_watch to make it more testable
-
-    Break the argument munging code into a separate function which
-    can be tested in isolation of adding an io watch.
-    Add additional failing test which specifies all args as keywords
-    which we eventually need to support for consistency with the
-    rest of PyGObject.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/overrides/GLib.py | 23 ++++++++++++++++++-----
- 1 file changed, 18 insertions(+), 5 deletions(-)
-
-commit bc780ed17bc4cc62959c63c3f0142161a924679f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Sep 27 20:59:45 2013 -0700
-
-    Refactor GLib.child_watch_add to make it more testable
-
-    Break the argument munging code into a separate function which
-    can be tested in isolation of adding a child watch. Update tests
-    to reflect this. Add additional failing test which specify
-    all args as keywords which we eventually need to support for
-    consistency with the rest of PyGObject.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/overrides/GLib.py     | 25 +++++++++-----
- tests/test_subprocess.py | 88
- +++++++++++++++++++++---------------------------
- 2 files changed, 56 insertions(+), 57 deletions(-)
-
-commit 73c6213e8b47fa7c4c2c7a517fe7b56126145888
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Sep 26 19:05:20 2013 -0700
-
-    Don't pass None to callbacks when user data is not specified
-
-    For APIs which support a callback and optional user data,
-    don't pass the user data to the callback if it was not explicitly
-    specified when the callback was connected.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-closure.c         | 17 ++++++++++++++---
- gi/pygi-marshal-from-py.c |  5 -----
- tests/test_everything.py  |  7 ++-----
- 3 files changed, 16 insertions(+), 13 deletions(-)
-
-commit a76b06179cdca43f1c7d1feb8e2563e3d884a8ff
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 17:27:47 2013 -0700
-
-    Add missing methods on PyGIBaseInfo and sub-classes
-
-    Expose all methods of GIBaseBase info and its sub-classes.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/_glib/pyglib-python-compat.h |   1 +
- gi/pygi-info.c                  | 550
- +++++++++++++++++++++++++++++++++++++++-
- tests/test_repository.py        | 134 ++++++++++
- 3 files changed, 677 insertions(+), 8 deletions(-)
-
-commit e190eb75093e8bf36190dc1beb18d1c1b95b9582
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 13:46:36 2013 -0700
-
-    Expose all GI enum and flags types
-
-    Add new types for GIDirection, GITransfer, GIArrayType, GIScopeType,
-    GIVFuncInfoFlags, GIFieldInfoFlags, GIFuncitonInfoFlags, GITypeTag,
-    and
-    GInfoType. These types are found in the gi._gi module exposed
-    without the
-    "GI" prefix and contain all of their values as class attributes. e.g.
-    gi._gi.Transfer.EVERYTHING.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/docstring.py          |  10 ++--
- gi/pygi-info.c           | 150
- ++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_repository.py |  13 +++-
- 3 files changed, 158 insertions(+), 15 deletions(-)
-
-commit 0120af6c418d0f67f39c02a4e8327813645b97f4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 13:42:34 2013 -0700
-
-    Avoid calling g_base_info_get_name on GI_INFO_TYPE_TYPE
-
-    Calling g_base_info_get_name on infos tagged with GI_INFO_TYPE_TYPE
-    will
-    cause a crash. Avoid this by adding _safe_base_info_get_name and
-    using that
-    throughout the bindings.
-    Logged GI bug as: https://bugzilla.gnome.org/show_bug.cgi?id=709456
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 35 +++++++++++++++++++++++++----------
- 1 file changed, 25 insertions(+), 10 deletions(-)
-
-commit c86b2fe8d01070f06c45fffd910d890afba1313a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 13:41:08 2013 -0700
-
-    Add GIBaseInfo.equal method
-
-    Break PyGIBaseInfo rich compare into two methods: equal and
-    richcompare.
-    Equal is a direct exposure of the GI method and richcompare makes
-    use of
-    this with additional support for Pyton "==" and "!=" operators.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c           | 32 ++++++++++++++++++++++++--------
- tests/test_repository.py |  1 +
- 2 files changed, 25 insertions(+), 8 deletions(-)
-
-commit e7b758badd0ab0b147117859f7871c39fb5399c1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 13:36:11 2013 -0700
-
-    Move info string retrieval into generic function
-
-    Add get_info_string for sharing binding of simple string retrieval on
-    GIBaseInfo objects.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-commit d2aef364de778da966bc1cfffe184d649f9ebb21
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Sep 24 06:26:17 2013 -0700
-
-    Move child info retrieval into generic function
-
-    Add a generic function for bindings which return a single child info.
-    This trivializes binding methods like PyGIObjectInfo.get_parent and
-    fixes leaks in PyGIObjectInfo.get_class_struct and
-    PyGIVFuncInfo.get_invoker.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 56
- +++++++++++++++++++++++---------------------------------
- 1 file changed, 23 insertions(+), 33 deletions(-)
-
-commit cdd03a2b0baef19797a5b55c2880e5b7acf1dd93
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Sep 24 02:52:22 2013 -0700
-
-    Move info tuple retrieval into generic function
-
-    Create new generic function for retrieving a tuple of child infos.
-    This greatly simplifies all the bindings which return tuples from
-    a common pattern of functions on GIBaseInfo based instances.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 469
- ++++++++-------------------------------------------------
- 1 file changed, 59 insertions(+), 410 deletions(-)
-
-commit 62f185bef20b42f18290a3cf1d3b19dddc957f8a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 6 16:41:37 2013 -0700
-
-    tests: Update check.valgrind with always-malloc and add logging
-    options
-
-    Based on notes in https://wiki.gnome.org/Valgrind we need to use
-    always-malloc for valgrind runs.
-    Add check.valgrindlog and check.valgrindxml which output valgrind
-    logs into
-    an ignored local tmp. Output logs are named <head-sha>-$TEST_NAMES.log
-    so we
-    can track commits and use diff tools on the logs.
-
- .gitignore        |  1 +
- Makefile.am       |  6 ++++++
- tests/Makefile.am | 10 +++++++++-
- 3 files changed, 16 insertions(+), 1 deletion(-)
-
-commit 314c933626c4dc5fc585d0e5b6c45ddb17c2e52f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 20:43:02 2013 -0700
-
-    Move existing repository tests into test_repository
-
-    Move flags and enum double registration tests into test_repository.py.
-    Remove duplicate ObjectInfo tests from test_gi.py.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- tests/test_gi.py         | 38 --------------------------------------
- tests/test_repository.py | 28 ++++++++++++++++++++++++++++
- 2 files changed, 28 insertions(+), 38 deletions(-)
-
-commit 31840888c8948aab78041da93c329572f3aabb64
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 17:31:21 2013 -0700
-
-    Add unittests for GIRepository
-
-    Add basic unittests for the existing classes and methods exposed for
-    the GIRepository module (gi._gi).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- tests/Makefile.am        |   1 +
- tests/test_repository.py | 170
- +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 171 insertions(+)
-
-commit 4408f83be70e92c5e3943f5ce85c551e7f2c87d0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 15:50:05 2013 -0700
-
-    Derive SignalInfo info from CallableInfo
-
-    Change Python class derivation of PyGISignalInfo to use
-    PyGICallableInfo as
-    the base class. This accurately reflects the GI class layout and
-    provides
-    the callable information for signals.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-commit b01daba04ff001b9e63d343938e879d339d9a98c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Oct 4 15:48:05 2013 -0700
-
-    Use PYGLIB_PyLong_FromLong for GIDirection return
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709008
-
- gi/pygi-info.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d644cbd0c0ad85142286754838db848c4eb1707f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Oct 3 19:25:34 2013 -0700
-
-    Fix memory leak for caller allocated GValue out arguments
-
-    Swizzle the order of type checks in _cleanup_caller_allocates so
-    G_TYPE_VALUE arguments are checked before G_TYPE_BOXED. The
-    ordering is
-    important because G_TYPE_VALUE is a sub-type of boxed and so its
-    specialized
-    cleanup code was never being called (g_value_unset).
-    Additionally update check to use g_type_is_a instead of a compare
-    to handle
-    the potential case of a G_TYPE_VALUE sub-type.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=709397
-
- gi/pygi-marshal-cleanup.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-commit 510789d52e9e2fd863d26613f3282364eb175601
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 14:44:51 2013 -0700
-
-    Add support for default arguments annotated with allow-none
-
-    Support default value of NULL for tail end arguments which are
-    marked with allow-none.
-    The implementation uses a place holder object for un-supplied
-    arguments
-    which are annotated with allow-none. This is then used later during
-    marshaling to supply NULL as the default.
-    Additionally support an implicit default for callback user_data
-    using the same technique.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/gimodule.c             |   6 +++
- gi/pygi-cache.c           | 103
- ++++++++++++++++++++++++++++++----------------
- gi/pygi-cache.h           |   8 ++++
- gi/pygi-invoke.c          |  42 +++++++++++++------
- gi/pygi-marshal-from-py.c |   5 +++
- gi/pygi.h                 |   1 +
- tests/test_everything.py  |  16 +++++++
- tests/test_gi.py          |  30 ++++++++++++++
- 8 files changed, 162 insertions(+), 49 deletions(-)
-
-commit 03f531ffb1adde0c48e98f92bd92f79416654fbe
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 2 22:27:10 2013 -0700
-
-    cache refactoring: Move arg cache field assignments into
-    _arg_cache_new
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 23 +++++++++++------------
- 1 file changed, 11 insertions(+), 12 deletions(-)
-
-commit cb7e7311bff57eb4c79c7772b6db4d00084656bb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 2 20:27:02 2013 -0700
-
-    cache refactoring: Cleanup array length argument marshaling
-
-    Add shared function: _arg_cache_array_len_arg_setup for use
-    with both to and from array marshaling setup. This function
-    consolidates all of the edge cases regarding array length setup
-    and removes the need for flagging arguments with
-    PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 145
- +++++++++++++++++++++++++++-----------------------------
- gi/pygi-cache.h |   5 --
- 2 files changed, 71 insertions(+), 79 deletions(-)
-
-commit c9d8639401ae82977e960de44d80b94a501a2184
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Aug 3 00:26:11 2013 -0700
-
-    cache refactoring: Move variable declarations to blocks where they
-    are used
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 25 ++++++++++++++-----------
- 1 file changed, 14 insertions(+), 11 deletions(-)
-
-commit dbc2cf5f1fa0f9cc046170efa6afb086b90253cb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Aug 1 19:33:27 2013 -0700
-
-    cache refactoring: Remove continue statements from
-    _args_cache_generate
-
-    Remove continue and goto statements from the large loop within
-    _args_cache_generate. This simplifies the sharing of parts of
-    the loop for future refactoring.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 126
- +++++++++++++++++++++++++++-----------------------------
- 1 file changed, 61 insertions(+), 65 deletions(-)
-
-commit 87ae14b8b4a0ed9beb22f48314247e988a2e017f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 31 18:10:05 2013 -0700
-
-    cache refactoring: Use bit field for PyGIDirection instead of enum
-
-    This supports cleaner logic when testing the direction of
-    arguments due to the majority of these tests being along the
-    lines of: (direction == FROM_PYTHON || direction == BIDIRECTIONAL)
-    Which is replaced with: (direction & FROM_PYTHON)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 64
- ++++++++++++++++++++++++++++-----------------------------
- gi/pygi-cache.h |  6 +++---
- 2 files changed, 35 insertions(+), 35 deletions(-)
-
-commit d5925b76afa3a429092cbafd82aed40bb0cf0b18
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 20:45:05 2013 -0700
-
-    cache refactoring: Remove special case marshaling for instance
-    arguments
-
-    Remove duplicate code for marshaling struct and objects for
-    instance arguments. Re-use individual cache marshalers for
-    structs and objects with the instance argument. This required
-    removal of passing GITypeInfo to the marshaler because it is
-    not available for instance arguments. Instead always assume
-    "is_pointer" for the instance argument by using the cache.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-argument.c        |  4 +--
- gi/pygi-cache.c           | 16 ++++-----
- gi/pygi-marshal-from-py.c | 87
- +++--------------------------------------------
- gi/pygi-marshal-from-py.h | 16 ++-------
- 4 files changed, 16 insertions(+), 107 deletions(-)
-
-commit c19bed69c669160737e12d92cc29f3e6d1b008cc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 16:44:01 2013 -0700
-
-    cache refactoring: Use GPtrArray for callable arg cache
-
-    Replace manual management of the C array holding individual
-    argument caches with usage of GPtrArray. This provides storage
-    of the array length along with item memory management.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c           | 62
- +++++++++++++++++++++++------------------------
- gi/pygi-cache.h           | 16 +++++++++---
- gi/pygi-invoke.c          | 16 ++++++------
- gi/pygi-marshal-cleanup.c |  8 +++---
- gi/pygi-marshal-from-py.c |  6 ++---
- gi/pygi-marshal-to-py.c   |  6 ++---
- 6 files changed, 62 insertions(+), 52 deletions(-)
-
-commit 52ea3afb0a6494423eca36a54af928d4ae5d9954
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 15:02:51 2013 -0700
-
-    cache refactoring: Move PyGI direction code into new function
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.c | 42 +++++++++++++++++++++---------------------
- 1 file changed, 21 insertions(+), 21 deletions(-)
-
-commit 83208bf495b152e93a28a231d445f43ea827d2eb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Aug 2 15:59:25 2013 -0700
-
-    cache refactoring: Add comments to callable cache structure
-
-    Add comments to count fields on _PyGICallableCache.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=640812
-
- gi/pygi-cache.h | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-commit 0a8d5695972601eaa9f7f463bac173d02b0380a0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 24 01:14:29 2013 -0700
-
-    Remove support for allowing PyObjects as void pointers
-
-    Final removal of marshaling Python object addresses as
-    void pointers. This ensures we can successfully pass
-    integer values as the pointer without the Python object
-    leaking or crashing due to invalid memory.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/pygi-marshal-from-py.c | 20 ++++++--------------
- gi/pygi-marshal-to-py.c   | 14 ++------------
- tests/test_signal.py      |  5 +----
- 3 files changed, 9 insertions(+), 30 deletions(-)
-
-commit 1469403ee2faa699430055384b338f0cd8e672d7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Sep 25 18:21:22 2013 -0700
-
-    configure.ac: bump trunk to 3.11.1
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 8e774e61d62c82efa3d907c1201359121878b4b5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 23 03:57:03 2013 -0700
-
-    configure.ac: post-release bump to 3.10.1
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 95af6279a9affff5c816db2db53207ff0f19872d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 23 03:17:19 2013 -0700
-
-    release 3.10.0
-
- NEWS         | 3 +++
- configure.ac | 4 ++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-commit c626be6317b610277c95461108573d1ae6f42b6d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 23 12:06:11 2013 +0200
-
-    Fix test_gi.TestProjectVersion.test_version_str()
-
-    In this test case we only do a string comparison, not a proper
-    "by version
-    component" numerical one. So relax the test to also work with 3.10.
-
- tests/test_gi.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 0a30f8d02099e582ea3ded800303e14d2e7ab212
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 16 10:12:33 2013 -0500
-
-    release 3.9.92
-
- NEWS | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 506f1e35a9375be80a6a79421bf8272165fdd90a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 16 01:23:49 2013 -0700
-
-    Update current maintainers list in README
-
- README | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit ef120498e060e88a1efcb82de385a23c1fa9c7da
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Sep 10 17:11:21 2013 -0700
-
-    Fix union argument regression when marshaling from python
-
-    Check for union members when marshaling boxed types from Python.
-    This is a regression caused by stricter type checking added when
-    merging code from pygi-argument.c.
-    Re-add pyg_boxed_check to the same bit of code in addition to
-    __gtype__ checking to avoid a double regression.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703873
-
- gi/pygi-marshal-from-py.c | 53
- ++++++++++++++++++++++++++---------------------
- 1 file changed, 29 insertions(+), 24 deletions(-)
-
-commit 59a2964141e963d2961e55d4b84a777927b4f21b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Sep 11 05:05:33 2013 -0700
-
-    Fix GLib.Source sub-classing with initializer args
-
-    Add variable args and keyword args to the GLib.Source.__new__
-    method to support sub-classes which want to implement __init__.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707904
-
- gi/overrides/GLib.py |  2 +-
- tests/test_source.py | 11 +++++++++++
- 2 files changed, 12 insertions(+), 1 deletion(-)
-
-commit afa42ab95327da1de0cf86005974cd8ab0d46872
-Author: Vratislav Podzimek <vpodzime@redhat.com>
-Date:   Wed Sep 4 14:17:31 2013 +0200
-
-    Copy __doc__ when wrapping function
-
-    Signed-off-by: Vratislav Podzimek <vpodzime@redhat.com>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/__init__.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 7914a6828a533d8c579a5b422351e18b9f9afc8c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 2 14:56:24 2013 +0200
-
-    configure.ac: post-release bump to 3.9.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ad8b7d1a89eb2d030a504d521f7589a4c1d835fb
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 2 14:38:41 2013 +0200
-
-    release 3.9.91
-
- NEWS | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 9df8eb79929025f12d51bc7f79b1d160156c2755
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Sep 2 04:19:35 2013 -0700
-
-    Fix GObject signal methods to work with new annotations
-
-    Add conditional support for signal methods annotated as gpointer
-    or GObject.Object. This is needed to work with newer versions of
-    glib which changed annotations to GObject.Object (bug #685387).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707280
-
- gi/overrides/GObject.py | 106
- ++++++++++++++++++++++++++++++------------------
- 1 file changed, 66 insertions(+), 40 deletions(-)
-
-commit 9b6b6c7ee6a621cba99f51857eadd622a1535118
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Thu Aug 15 14:41:40 2013 +0800
-
-    Fix build on C89 Compilers
-
-    Avoid a variable declaration at the middle of the block
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707264
-
- gi/pygi-closure.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 19c1a2dfb91a83a6fb0ca76b9c95c42a49a3736e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Sep 1 20:44:26 2013 -0700
-
-    Change boxed type checking in marshaling to use __gtype__ attribute
-
-    Replace usage of pyg_boxed_check(pyboxed) with g_type_is_a and
-    pyg_type_from_object. This has the effect of using the __gtype__
-    attribute stashed on object class instead of the PyGBoxed
-    internally held gtype. This fixes type descrepencies for objects
-    marshaled into overridden signal class closures and passed back
-    to functions taking an alias their type.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707140
-
- gi/pygi-marshal-from-py.c   |  8 +++++++-
- tests/test_overrides_gtk.py | 34 ++++++++++++++++++++++++++++++++++
- 2 files changed, 41 insertions(+), 1 deletion(-)
-
-commit dab0c09f1996e124ca98334e5aea0852904b44b5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Sep 1 17:49:09 2013 -0700
-
-    Use G_IS_VALUE for checking return values in closure marshaling
-
-    Replace return_value argument NULL checks in GClosureMarshal
-    implementations with G_IS_VALUE. This checks both NULL and
-    validity of the value (!= G_TYPE_INVALID). This is needed
-    because GLib can pass either NULL or an invalid value based
-    on whether or not G_ENABLE_DEBUG is set.
-    See: https://bugzilla.gnome.org/show_bug.cgi?id=707249
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=707170
-
- gi/_gobject/pygtype.c    | 4 ++--
- gi/pygi-signal-closure.c | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-commit c7b75a8c250078ac8ea28752f087ed687bd20edd
-Author: Yanko Kaneti <yaneti@declera.com>
-Date:   Wed Aug 21 08:53:07 2013 +0200
-
-    Fix PEP-8 errors in propertyhelper.py
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=706319
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/propertyhelper.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-commit 6fdd58404103596accb6ab04d4de33846d853c58
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 19 17:13:30 2013 +0200
-
-    configure.ac: post-release bump to 3.9.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6fbe2580deda215896e9583b418b8bc1aceb2f96
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 19 17:10:52 2013 +0200
-
-    release 3.9.90
-
- NEWS | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit a8d5da559ef088b05062681206758d2718946269
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 19 11:38:31 2013 +0200
-
-    NEWS: retroactively fix last version number
-
- NEWS | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit aba45eb2617c4b35168089bc9028f351732a617f
-Author: Benjamin Berg <benjamin@sipsolutions.net>
-Date:   Tue Aug 6 00:41:52 2013 +0200
-
-    Create GLib.Pid in the same way on python 2 and 3
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705451
-
- gi/_glib/pygspawn.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-commit 2d203b7529c95ba4461a5a6d4c6b67169fabc4cf
-Author: Benjamin Berg <benjamin@sipsolutions.net>
-Date:   Mon Aug 5 17:04:15 2013 +0200
-
-    Use PyLong_Type.tp_new for GLib.Pid
-
-    For GLib.Pid the original implementation for __new__ needs to be used,
-    as it is able to initialize the integer correctly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705451
-
- gi/_glib/pygspawn.c      | 1 +
- tests/test_subprocess.py | 1 +
- 2 files changed, 2 insertions(+)
-
-commit c32793dafbd52eab87b14ca064b47f5a4fb9000b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 5 14:40:38 2013 -0700
-
-    Add accumulator and accu_data arguments to GObject.Signal decorator
-
-    Update __init__, __call__, and copy methods to accept and pass
-    accumulators and associated user data through them. Update
-    accumulator unittests to use Signal decorators for testing accumulator
-    pass throughs. Verified the __gsignals__ dictionary accepts None
-    as valid values for accumulator and accu_data so specialization
-    for these arguments is not necessary.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705533
-
- gi/_gobject/signalhelper.py | 17 ++++++++++-----
- tests/test_signal.py        | 52
- ++++++++++++++++++++++++---------------------
- 2 files changed, 40 insertions(+), 29 deletions(-)
-
-commit 78f72654f5cb6c06e76ed9a532fc1ee328b60e50
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Aug 5 14:12:24 2013 -0700
-
-    Pass return values through the GObject.Signal.emit wrapper
-
-    Return the result of GObject.emit from the Signal decorators wrapping.
-    Update unittest for decorated return type to use skipUnless for
-    Python 3.
-    Add test for Signal decorator return type.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705530
-
- gi/_gobject/signalhelper.py |  2 +-
- tests/test_signal.py        | 37 +++++++++++++++++++++----------------
- 2 files changed, 22 insertions(+), 17 deletions(-)
-
-commit 08cc206afeaefd1ce50ecfd1411807225a11c8f8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 29 03:33:40 2013 -0700
-
-    configure.ac: post-release bump to 3.9.90
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2d8f5490cdc078b3e56a92deb9eca71b3fc5ef17
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 29 02:23:02 2013 -0700
-
-    release 3.9.5
-
- NEWS         | 41 +++++++++++++++++++++++++++++++++++++++++
- configure.ac |  2 +-
- 2 files changed, 42 insertions(+), 1 deletion(-)
-
-commit ec3de7608ec970f6f272c9d7937344f02c6e9c3d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 29 01:21:19 2013 -0700
-
-    Ensure exceptions set in closure out argument marshaling are printed
-
-    Call PyErr_Print when an exception occurs after marshaling closure
-    out arguments. These exceptions were being ignored and cleared out
-    only to show up in debug builds of Python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705064
-
- gi/pygi-closure.c              |  8 ++++++++
- tests/test_generictreemodel.py | 17 +++++++++++------
- 2 files changed, 19 insertions(+), 6 deletions(-)
-
-commit b5dcb1800839f747a052e487643c234668384677
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jul 28 23:00:26 2013 -0700
-
-    Use Python error messages for marshaling integers from Python
-
-    Use Pythons default error messages where possible.
-    Change all explicitly raised ValueError to use OverflowError
-    for out of range data.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=705057
-
- gi/pygi-marshal-from-py.c | 76
- +++++++++++++++++------------------------------
- tests/test_everything.py  | 52 ++++++++++++++++----------------
- tests/test_gi.py          | 64 +++++++++++++++++++--------------------
- tests/test_gobject.py     |  2 +-
- 4 files changed, 86 insertions(+), 108 deletions(-)
-
-commit 3c83bfb14b850670eb7c0208e55c120ca203f8af
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 27 21:10:07 2013 -0700
-
-    Use Py_CLEAR for closure cleanup instead of test with Py_DECREF
-
- gi/pygi-closure.c | 11 ++---------
- 1 file changed, 2 insertions(+), 9 deletions(-)
-
-commit f5e3876dee512ca82af6ea798b10d5ecad785dd1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 27 15:25:20 2013 -0700
-
-    Cleanup invoke args and kwargs combiner code
-
-    Change _py_args_combine_and_check_length use cleaner reference
-    counting.
-    It no longer DECREFs input arguments and always returns a new value
-    reference.
-    Use PyGICallableCache directly as an argument instead of passing
-    various
-    members.
-
- gi/pygi-invoke.c | 44 +++++++++++++++++---------------------------
- 1 file changed, 17 insertions(+), 27 deletions(-)
-
-commit 91c49822363d8a1efc82163b46daa667d6cfc1b7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 17 16:10:25 2013 -0700
-
-    Replace Python VFunc descriptor directly with PyGIVFuncInfo
-
-    Add tp_getdesc (__get__) to PyGIVFuncInfo to allow the object
-    to be used directly as a callable descriptor. This piggy backs
-    off the added support for functions and constructors in previous
-    patches.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/pygi-info.c | 25 +++++++++++++++++++++++--
- gi/types.py    | 33 ++++-----------------------------
- 2 files changed, 27 insertions(+), 31 deletions(-)
-
-commit 35f79b22ec5abf02fd0bb66352eb1f251b65a078
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 16 16:00:14 2013 -0700
-
-    Add callable and descriptor protocols to PyGICallableInfo
-
-    Add tp_call (__call__) function to callable info objects.
-    This allows for replacement of wrapped invoke methods directly
-    with the already created callable info object. This has the
-    additional side effect of making doc strings lazily bound
-    (only generated when __doc__ is accessed).
-
-    Add tp_desc_get (__get__) to PyGIFunctionInfo which returns
-    a bound version of itself for methods and constructors.
-
-    Update various internal type checks to reflect the changes.
-    Update tests to reflect the new callable type being the same
-    across Python 2 & 3.
-
-    This patch gives roughly a %17 speedup for Gtk imports and
-    an %11 speedup for GI method calls.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/module.py                |   5 +-
- gi/overrides/__init__.py    |  10 ++-
- gi/pygi-info.c              | 179
- ++++++++++++++++++++++++++++++++++++++++++--
- gi/pygi.h                   |  13 ++++
- gi/types.py                 |  35 +--------
- tests/test_docstring.py     |   6 +-
- tests/test_gi.py            |  32 +++-----
- tests/test_overrides_gtk.py |   4 +-
- 8 files changed, 212 insertions(+), 72 deletions(-)
-
-commit 2339e030e4dc4d93ea770bca380a89f831d56be6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 26 19:33:32 2013 -0700
-
-    Move "from Python" GObject out arg marshaler into specialized function
-
-    Move hacks specific to out argument marshaling for vfuncs into a
-    a specialized function. This allows standard function call marshaling
-    to continue working correctly when there are no extra references
-    holding the arguments "foo(SomeObject())". This is currently being
-    masked because all GI functions are wrapped by additional layers
-    of Python functions. When these layers are removed, it exposes
-    bugs introduced by reference counting hacks intended for vfunc
-    return arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/pygi-argument.c        |  2 +-
- gi/pygi-marshal-from-py.c | 37 ++++++++++++++++++++++++++++++-------
- gi/pygi-marshal-from-py.h |  3 +++
- 3 files changed, 34 insertions(+), 8 deletions(-)
-
-commit 627c5faaa54ed9a2b59ac1547833c171cd1a1e87
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 26 17:34:01 2013 -0700
-
-    Add underscore prefix and _cache_adapter suffix to marshaling
-    functions
-
-    Add underscores to all _pygi_marshal_* functions. We don't currently
-    export symbols, but we might need to for C unittesting. This will
-    ensure we don't have a "public API".
-    Add _cache_adapter suffix to marshaling functions which are light
-    weight wrappers intended only for cached marshalers.
-
- gi/pygi-argument.c        | 40 +++++++++++-----------
- gi/pygi-cache.c           | 10 +++---
- gi/pygi-marshal-from-py.c | 86
- +++++++++++++++++++++++------------------------
- gi/pygi-marshal-from-py.h | 44 ++++++++++++------------
- gi/pygi-marshal-to-py.c   | 48 +++++++++++++-------------
- gi/pygi-marshal-to-py.h   | 34 +++++++++----------
- 6 files changed, 131 insertions(+), 131 deletions(-)
-
-commit bec0b543be8d993996d8a17c343c3f2f33a9398f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 16 11:13:17 2013 -0700
-
-    Add common attribute accessors to PyGIBaseInfo
-
-    Add __name__, __module__, and __doc__ accessors to
-    PyGIBaseInfo object. This is a precursory patch for setting
-    up PyGICallableInfo as a directly callable object with lazy
-    doc string evaluation.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/_glib/pyglib-python-compat.h |  5 +++
- gi/pygi-info.c                  | 83
- +++++++++++++++++++++++++++++++++++++++--
- gi/types.py                     |  7 ++--
- 3 files changed, 88 insertions(+), 7 deletions(-)
-
-commit ea194404843a16555f9a475cc973872a4428bfe1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 13 23:10:31 2013 -0700
-
-    Merge method and constructor setup
-
-    Merge _setup_constructors into _setup_methods as they contain same
-    basic logic. This removes an unnecessary call with additional
-    filtering of GIObjectInfo.get_methods() which can be large for
-    objects with many methods.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/types.py | 15 ++++-----------
- 1 file changed, 4 insertions(+), 11 deletions(-)
-
-commit 6b36fbe904d19f515578f447daa7657d3a9a859c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 13 18:11:18 2013 -0700
-
-    Remove redundant info.get_name calls
-
-    Remove a number of redundant calls to GIBaseInfo.get_name. Info
-    names are already cached on function objects so re-use them when
-    possible. This gives a small load time improvement by removing over
-    2000 calls when importing Gtk.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/module.py | 1 -
- gi/types.py  | 8 +++-----
- 2 files changed, 3 insertions(+), 6 deletions(-)
-
-commit 6fdde256e840600c84a648ab21da2fe5c212e5bc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 12 12:21:54 2013 -0700
-
-    Move doc string generator into separate module
-
-    Move the doc string generator for creating function signatures
-    into "gi.docstring". This includes a new API for getting and
-    setting the doc string creation functions:
-
-    gi.docstring.get_doc_string_generator
-    gi.docstring.set_doc_string_generator
-    gi.docstring.generate_doc_string
-
-    Beyond adding the ability for custom doc string generators,
-    this API is a necessary step for adding lazy __doc__
-    attribute access for optimization.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=704037
-
- gi/Makefile.am          |   3 +-
- gi/docstring.py         | 106
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/types.py             |  55 ++-----------------------
- tests/Makefile.am       |   1 +
- tests/test_docstring.py |  49 ++++++++++++++++++++++
- tests/test_gi.py        |  30 --------------
- 6 files changed, 161 insertions(+), 83 deletions(-)
-
-commit f86701b15ee04c717d9c6bf688101606165e4f83
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 24 19:36:28 2013 -0700
-
-    tests: Change GHashTable<string,GValue> marshaling test to use GValue
-
-    Add test to explicitly use a boxed GStrv GValue in addition to a
-    Python list sub-class.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=666636
-
- tests/test_everything.py | 21 +++++++++++++++------
- 1 file changed, 15 insertions(+), 6 deletions(-)
-
-commit 6ea41b60691e1ba7e21374582d7aea072af71103
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jul 25 18:00:47 2013 -0700
-
-    gtk-demo: Change demo to use Gtk.Application
-
-    Replace deriving from Gtk.Window with deriving from Gtk.Application
-    connected to a Gtk.ApplicationWindow instance.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698547
-
- demos/gtk-demo/demos/printing.py |  2 +-
- demos/gtk-demo/gtk-demo.py       | 40
- ++++++++++++++++++++--------------------
- 2 files changed, 21 insertions(+), 21 deletions(-)
-
-commit fae58044ea0b2e7f47fbdacc5b58ac36f673ecbd
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 23 14:25:01 2013 -0700
-
-    Move _pygi_argument_to_object_basic_type into pygi-marshal-to-py.c
-
-    Move _pygi_argument_to_object_basic_type into pygi-marshal-to-py.c
-    and rename to _pygi_marshal_to_py_basic_type.
-    Cleanup and simplify dependant sub-marshalers for unichar, utf8,
-    and filename types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c      |  73 +-----------------------------
- gi/pygi-argument.h      |   4 --
- gi/pygi-cache.c         |   4 +-
- gi/pygi-marshal-to-py.c | 115
- +++++++++++++++++++++++++++++++++++++-----------
- gi/pygi-marshal-to-py.h |  27 +++---------
- 5 files changed, 99 insertions(+), 124 deletions(-)
-
-commit cba401ac1543c2fdb68fff0dba8f6da7eed23bfa
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 23 13:06:33 2013 -0700
-
-    Unify and clean up from Python marshalers for basic types
-
-    Unify and cleanup boolean, float, double, gtype, unichar, utf8,
-    and filename marshalers.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-cache.c           | 101
- ++--------------------------------------------
- gi/pygi-marshal-from-py.c |  86 ++++++++++++---------------------------
- gi/pygi-marshal-from-py.h |  30 --------------
- 3 files changed, 28 insertions(+), 189 deletions(-)
-
-commit 9e6e01d065bf0acc5b99ae0e8c034d689231bfe1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 23 12:35:06 2013 -0700
-
-    Unify from Python int64 and uint64 marshalers
-
-    Replaced int64 and uint64 cached marshalers with usage of the
-    unified basic type marshaler. Replace a large amount of int64
-    exception formatting code with usage of %S for Python 3 and
-    give a more vague message for Python 2.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-cache.c           |  36 +--------
- gi/pygi-marshal-from-py.c | 193
- ++++++++++------------------------------------
- gi/pygi-marshal-from-py.h |  10 ---
- 3 files changed, 43 insertions(+), 196 deletions(-)
-
-commit 46653922003c7d1d5d16f5cdb39b3faadf9aff27
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 23 11:03:14 2013 -0700
-
-    Unify from Python int16 and int32 marshalers
-
-    Add PyNumber_Check to unified basic type marshaler.
-    Add bounds checking to unified int16 and int32 marshalers.
-    Replaced int16 and int32 cached marshalers with usage of
-    unified basic type marshaler.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-cache.c           |  69 +--------------
- gi/pygi-marshal-from-py.c | 218
- ++++++++++------------------------------------
- gi/pygi-marshal-from-py.h |  20 -----
- 3 files changed, 48 insertions(+), 259 deletions(-)
-
-commit 4b9c725a615fcf4a5e8d089d275d4586032d0d1f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 23 00:27:14 2013 -0700
-
-    Unify from Python boolean, int8, and uint8 marshalers
-
-    Replaced boolean, int8, and uint8 cached marshalers with usage of
-    unified basic type marshaler. Add bounds checking to unified int8
-    marshalers.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-cache.c           |  48 +++------------
- gi/pygi-marshal-from-py.c | 146
- +++++++++++-----------------------------------
- gi/pygi-marshal-from-py.h |  20 ++-----
- 3 files changed, 45 insertions(+), 169 deletions(-)
-
-commit f517bfbc134b78a23b754332e59b9bb67bb68e98
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 22 23:24:13 2013 -0700
-
-    Add support for PyBytes with int8 and uint8 from Python marshaler
-
-    This additional type marshaling is necessary for unifying marhalers
-    due to the same feature being available with cached argument
-    marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-marshal-from-py.c | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit fe9df90531f3dd04c0d13d73ebd4ae7dd396c9b1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 22 23:23:29 2013 -0700
-
-    Move from Python integer marshaling into separate function
-
-    Add _pygi_marshal_from_py_long for marshaling Python objects
-    that can convert to a PyLong type. This allows for better
-    sharing of code amongst marshalers along with unifying
-    them across Python 2.7 and 3.0.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        |   3 +-
- gi/pygi-marshal-from-py.c | 159
- ++++++++++++++++++++++++----------------------
- 2 files changed, 84 insertions(+), 78 deletions(-)
-
-commit f7748affae3d6ef0cc2e409f65761fb29c01b038
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Jul 22 22:19:26 2013 -0700
-
-    Move _pygi_argument_from_object_basic_type into pygi-marshal-from-py.c
-
-    Move _pygi_argument_from_object_basic_type into pygi-marshal-from-py.c
-    and rename to: _pygi_marshal_from_py_basic_type
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        | 149
- +---------------------------------------------
- gi/pygi-marshal-from-py.c | 147
- +++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-from-py.h |   4 ++
- 3 files changed, 152 insertions(+), 148 deletions(-)
-
-commit 9c9510eec782f242280af24e86adf3561e4fac72
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 19 23:37:35 2013 -0700
-
-    Move basic type marshaling out of _pygi_argument_from_object
-
-    Move the marshaling of Python objects to GI arguments for basic types
-    into a new function: _pygi_argument_from_object_basic_type
-    This is staging work needed before unifying basic type marshaling
-    of arguments from Python to GI.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c | 73
- ++++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 46 insertions(+), 27 deletions(-)
-
-commit 0e2441518ef31bd2b4102ba5780c3ded00bec59a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 19 20:16:10 2013 -0700
-
-    Replace to Python cached marshalers with unified basic type marshaler
-
-    Add cached arg marshaler "_pygi_marshal_to_py_basic_type" which
-    unifies functions, vfuncs, signals, and property marshaling for
-    "basic types". Remove all the individual cached arg marshalers
-    for these types.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c      | 104 +++++++++++------------------------
- gi/pygi-argument.h      |   4 ++
- gi/pygi-cache.c         | 114 +++++++-------------------------------
- gi/pygi-marshal-to-py.c | 142
- ++++--------------------------------------------
- gi/pygi-marshal-to-py.h |  48 ++--------------
- 5 files changed, 73 insertions(+), 339 deletions(-)
-
-commit 663fe5893bbc9f34bf8aa4da3cb6f9186a8233b1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Jul 19 18:00:40 2013 -0700
-
-    Move to Python basic type marshaling out of _pygi_argument_to_object
-
-    Move the marshaling of GI arguments to Python objects for basic types
-    into a new function. The required information for this marshaler
-    is a GITypeTag and GITransfer. Argument marshaling matching these
-    requirments are now found in: _pygi_argument_to_object_basic_type.
-    The new marshaler can be used with a generic argument cache marshaler
-    to unify all of the "basic type" marshaling.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c | 86
- +++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 63 insertions(+), 23 deletions(-)
-
-commit dd43a1e19440dbe025451d2e4e07a6074086498d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 14:16:36 2013 -0700
-
-    Override GValue.set/get_boxed with static C marshaler
-
-    Override boxed type get/set methods on GValue to use the static C
-    GValue marshaler. This works around the inability of the introspection
-    version of these methods to know what the held GValue type is.
-    With this, all boxed types will now marshal properly with GValues as
-    their storage.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/_gobject/gobjectmodule.c | 38 ++++++++++++++++++++++++++++++++++++++
- gi/overrides/GObject.py     |  9 +++++++++
- 2 files changed, 47 insertions(+)
-
-commit 2cff4827e6d15bcad630316a8a4e67968a70bbbf
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 14:10:20 2013 -0700
-
-    Refactor pyg_value_from_pyobject into two functions
-
-    Break pyg_value_from_pyobject into two functions. One which keeps
-    Python exceptions queued (pyg_value_from_pyobject_with_error) and
-    one which clears them (pyg_value_from_pyobject). This allows for
-    re-use for code which want to keep the errors around
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/_gobject/gobjectmodule.c     |  4 ++-
- gi/_gobject/pygobject-private.h |  1 +
- gi/_gobject/pygobject.h         |  2 ++
- gi/_gobject/pygtype.c           | 67
- ++++++++++++++++++++++++++++++++---------
- 4 files changed, 59 insertions(+), 15 deletions(-)
-
-commit 84e91a9da3522d042faca65fd2ada1ccaee60153
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 20:41:19 2013 -0700
-
-    Fix indentation for pyg_value_from_pyobject
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/_gobject/pygtype.c | 744
- +++++++++++++++++++++++++-------------------------
- 1 file changed, 372 insertions(+), 372 deletions(-)
-
-commit 6a29d9be14ec33d06816ade67a5ccf5c7a1cf398
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 13:32:39 2013 -0700
-
-    Add deprecation warning for marshaling arbitrary objects as pointers
-
-    Add deprecation warning for marshaling arbitrary objects to/from void
-    pointers with the exception of integers, PyCapsules, and None.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/pygi-marshal-from-py.c | 17 ++++++++++++++++-
- gi/pygi-marshal-to-py.c   | 10 ++++++++--
- 2 files changed, 24 insertions(+), 3 deletions(-)
-
-commit 077aefed8566adcb99d7570f52fe09c74c2098e5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 13:34:53 2013 -0700
-
-    Move PyGIDeprecationWarning to C for shared Python/C usage
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/__init__.py | 19 ++++---------------
- gi/gimodule.c  | 18 ++++++++++++++++++
- gi/pygi.h      |  2 ++
- 3 files changed, 24 insertions(+), 15 deletions(-)
-
-commit 90427107af36ea3c624b36967ee181ed13b9828f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jul 18 14:59:55 2013 -0700
-
-    Replace usage of __import__ with importlib.import_module
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682320
-
- gi/module.py | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit 6391a8e4f03d4010c0d7de79fc83138fd69e0e33
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Wed Jul 10 16:44:23 2013 -0500
-
-    Always unref the GiTypeInfo when generating an argument cache
-
-    We were leaking a GiTypeInfo when handling child arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703973
-
- gi/pygi-cache.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit ce0ad7066ebdb7018fdce58dc32bbaa715206a0c
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Wed Jul 10 12:10:16 2013 -0500
-
-    Unref interface info when fetching enums or flags
-
-    When calling g_type_info_get_interface, the resulting interface should
-    be dereferenced by calling g_base_info_unref.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703960
-
- gi/pygi-marshal-from-py.c | 8 +++++++-
- gi/pygi-marshal-to-py.c   | 3 +++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-commit a93755ddba9a1761b627583d7b9be63783c2c063
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Tue Jul 9 13:03:36 2013 -0600
-
-    Speed up MRO calculation
-
-    Optimize gi.type.mro() with the following observations and tricks:
-
-    1. Python prepares all the base classes before trying to calculate the
-       MRO of the current one (it first needs to populate __bases__, for
-       example). So we can assume that the base class MRO is already
-       available
-       in __mro__ and this will have been previously calculated (by us,
-       in the
-       case of gi classes). This avoids repeating a lot of MRO-calculating
-       work,
-       and also avoids (re)calculating MROs for inheritance chains
-       that don't
-       have any gi classes in them anyway.
-
-    2. With that simplification in place, we can avoid recursion, which
-    is not
-       all that great in Python...
-
-    3. ...except in the uncommon case of a Python2 old-style classes,
-    where
-       __mro__ is not available. There doesn't seem to be any existing
-       function to calculate or read MRO of old-style python classes,
-       so just
-       keep doing as before: calculate the C3 MRO of the old-style
-       class via
-       recursion. That behaviour is not really correct, and the
-       recursion is
-       not desirable, so we print a warning here.
-
-    This makes the "hello world" Sugar app start up approximately
-    0.5 seconds
-    faster on XO-1.5.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703829
-
- gi/types.py      | 30 +++++++++++++++++++++++++++---
- tests/test_gi.py | 16 ++++++++++++----
- 2 files changed, 39 insertions(+), 7 deletions(-)
-
-commit 7aca95781fc76f3e820e63325ccc07d128a60075
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Wed Jul 10 10:45:47 2013 -0600
-
-    tests: Add tests for MRO override
-
-    Add tests for the MRO override to prevent against unintended
-    behaviour changes.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703829
-
- tests/test_gi.py | 66
- ++++++++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 50 insertions(+), 16 deletions(-)
-
-commit a15333a36e31b76ea6b80251553840269ec5deb1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 13:34:13 2013 -0700
-
-    Add GIL safety to pyobject_copy for copying boxed PyObjects
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688081
-
- gi/_gobject/pygobject.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 097c116d43a21bebf8e4bccde9cacc551db1e1e5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Jul 6 09:48:35 2013 -0700
-
-    testhelper: Fix import requirement for GObject
-
-    Replace the importing of gi._gobject._gobject with
-    gi.repository.GObject
-    in tests/testhelpermodule.c
-
-    The testhelper module was only importing the static bindings
-    (gi._gobject._gobject) and not the overrides (gi.repository.GObject).
-    This was causing some tests to fail when test_thread was the first
-    test to run in the suite due to it registering new types based on
-    PyGObject_Type.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703647
-
- tests/testhelpermodule.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 0f6c571755e65b5e77d3d84e4516ef90d8ce0162
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jul 3 05:26:12 2013 -0700
-
-    Add marshalling of GI_TYPE_TAG_VOID held in a GValue to int
-
-    Replace assertion for this case with a simple marshalling of the
-    pointer value to a Python int. While not particularly useful
-    this allows some callbacks in WebKit to function without causing
-    a segfault.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694233
-
- gi/pygi-argument.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit e0084e7e73845fa2a2da29017d3622f361f11dfb
-Author: Cole Robinson <crobinso@redhat.com>
-Date:   Sat Feb 16 17:26:43 2013 -0500
-
-    GTK overrides: Make connect_signals handle tuple
-
-    This is used for passing extra arguments to callbacks during
-    signal emission in the form of:
-    builder.connect_signals({'on_clicked': (on_clicked, arg1, arg2)})
-
-    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693994
-
- gi/overrides/Gtk.py         |  51 ++++++++----
- tests/test_overrides_gtk.py | 196
- +++++++++++++++++++++++++++++---------------
- 2 files changed, 165 insertions(+), 82 deletions(-)
-
-commit 466567373289e6f141709f08efa80ba588d3d64a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 2 18:06:01 2013 -0700
-
-    Re-add support for passing GValue's by reference
-
-    Fix special casing when marshaling from a Python held GValue
-    to a GValue argument intended for a function call.
-    The re-factoring of GValue marshaling in commit #9e47afe459df942d9f
-    broke this by always making a copy of the GValue. This removed the
-    ability to retrieve values with functions like
-    gtk_style_context_get_style_property.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701058
-
- gi/pygi-argument.c        |  2 +-
- gi/pygi-marshal-from-py.c | 32 +++++++++++++++-----------------
- 2 files changed, 16 insertions(+), 18 deletions(-)
-
-commit 40a3cd18fd7111ae177f6ab716f78d131f59a1c0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 2 19:20:04 2013 -0700
-
-    tests: Add test for pass-by-reference GValue
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701058
-
- tests/test_gi.py | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 3b3251593ea107f06b160234b0ca5393cb39ac1b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Jul 2 23:02:17 2013 -0700
-
-    Clear return value of closures to zero when an exception occures
-
-    For return types other than void, set the ffi closure return argument
-    to 0 when a Python exception occures. This a good default in general
-    but also has the side affect of fixing failing idle callbacks
-    by causing them to be removed from main loops (after their stack
-    is printed).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=702552
-
- gi/pygi-closure.c | 14 ++++++++++++++
- tests/test_gi.py  |  8 ++++++++
- 2 files changed, 22 insertions(+)
-
-commit ae3439f1d22482d6a920a869d3d17e7054af6f80
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jul 3 10:40:28 2013 +0200
-
-    Don't use doctest syntax in docstrings for examples
-
-    These are not actual doctests, so don't use the >>> syntax there. Just
-    indent
-    them.
-
-    This fixes pyflakes 0.7 failures.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=701009
-
- gi/_gobject/propertyhelper.py | 11 +++++------
- gi/overrides/GObject.py       |  8 ++++----
- gi/overrides/Gtk.py           |  2 +-
- 3 files changed, 10 insertions(+), 11 deletions(-)
-
-commit b96a6dc968566d339a2dfd7dd631ae52d812302a
-Author: Garrett Regier <garrettregier@gmail.com>
-Date:   Tue Jul 2 06:07:15 2013 -0700
-
-    Add support for properties of type GInterface
-
-    Add support for G_TYPE_INTERFACE/GInterface to switch
-    statement which handles G_TYPE_OBJECT based properties.
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=703456
-
- gi/_gobject/gobjectmodule.c   |  1 +
- gi/_gobject/propertyhelper.py |  3 ++-
- tests/test_properties.py      | 16 ++++++++++++++++
- 3 files changed, 19 insertions(+), 1 deletion(-)
-
-commit 61b268e44af63d6d78feae42578bf75aa5cfd511
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 21 07:27:48 2013 +0200
-
-    pygtkcompat: Fix for missing methods on Windows
-
-    Deal with non-existing Gtk.Clipboard.get() and
-    GdkPixbuf.Pixbuf.new_from_file_at_scale() methods.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=702787
-
- pygtkcompat/pygtkcompat.py | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-commit 5e3ab0bb974cc785659666b871d795730b4f06b3
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Fri Jun 21 12:32:33 2013 +0800
-
-    gi/pygi-info.c: Avoid C99-style variable declaration
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=702786
-
- gi/pygi-info.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 94167e12c118c85cd3172f9f5824fe53e55bcc2d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed May 29 11:20:35 2013 +0200
-
-    GLib overrides: fix typo in deprecation message
-
-    Spotted by Dmitrijs Ledkovs, thanks!
-
- gi/overrides/GLib.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 86569b69ade0fe157fa87365e9369dde84cd5c90
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue May 28 17:57:20 2013 +0200
-
-    configure.ac: post-release version bump to 3.9.3
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 10f703189ed6a7104252907d1b1a114f26d79559
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue May 28 17:56:07 2013 +0200
-
-    release 3.9.2
-
- NEWS | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-commit af8d048442b924c72a1d0ae868ee63ccf292759d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri May 24 13:03:07 2013 +0200
-
-    examples/option.py: Port to GI and Python 3
-
- examples/option.py | 38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
-
-commit bef5939ca77f4d6939cd9229bd124dfe825b3bdb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 12 18:58:06 2013 -0700
-
-    Fix vfunc info search for classes with multiple inheritance
-
-    Ensure the search for vfunc GI info continues recursively even if the
-    current class being looked at does not contain GI info of type
-    InterfaceInfo. This more exhaustive search is needed for setups with
-    multiple sub-classes and multiple inheritance.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=700092
-
- gi/types.py      | 12 +++++++-----
- tests/test_gi.py |  1 -
- 2 files changed, 7 insertions(+), 6 deletions(-)
-
-commit 5b8dff59baa1a3e524dac7877dd5b33dea52b026
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun May 12 22:19:38 2013 -0700
-
-    Fix closure argument conversion for enum and flag in args
-
-    Replace incorrect cast and assignment of double with uint for flags
-    and enums.
-
- gi/pygi-closure.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 065503d5e284dc89bacd79d0d9a72eb739882bf8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat May 11 21:47:54 2013 -0700
-
-    tests: Add tests for overriding vfunc implementations
-
-    Add tests for overriding vfuncs for both single inheritance
-    and multiple inheritance with an interface (currently failing).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=700092
-
- tests/test_gi.py | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-commit c4e1112840004af264b4f2a052f333ea38f95cb6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat May 11 20:28:22 2013 -0700
-
-    Fix marshaling Python to FFI return value for enum and flags
-
-    Add break to GI_TYPE_TAG_INTERFACE case. This was falling through
-    causing
-    assignment of arg.v_pointer to the ffi return arg.
-
- gi/pygi-closure.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit a703217eaf4075e9720d4247351e1dfc4f553772
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Apr 19 06:37:24 2013 -0700
-
-    Remove half implemented GC in PyGIBaseInfo, PyGIStruct, and PyGIBoxed
-
-    Remove half implemented GC tracking from PyGIBaseInfo as it was not
-    needed (the implemented was also missing usage of
-    PyObject_GC_New/Track).
-    Ensure weakref list for PyGIBaseInfo is initialized to NULL and
-    cleared
-    properly.
-    Remove invalid calls to PyObject_GC_UnTrack and PyObject_ClearWeakRefs
-    for both PyGIStruct and PyGIBoxed as these types were not being
-    advertised as GC aware with Py_TPFLAGS_HAVE_GC.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677091
-
- gi/pygi-boxed.c  |  4 ----
- gi/pygi-info.c   | 20 +++++---------------
- gi/pygi-struct.c |  4 ----
- 3 files changed, 5 insertions(+), 23 deletions(-)
-
-commit 87e41db2e060acd689a2ac043bc1ac51007de6f3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri May 3 02:00:07 2013 -0700
-
-    Replace usage of pyg_begin_allow_threads with Py_BEGIN_ALLOW_THREADS
-
-    Replace all usage of pyg[lib]_begin_allow_threads with direct usage
-    of Py_BEGIN_ALLOW_THREADS.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699440
-
- gi/_glib/pyglib.h           |  4 ----
- gi/_glib/pygoptioncontext.c |  4 ++--
- gi/_gobject/pygobject.c     | 33 ++++++++++++++++-----------------
- gi/gimodule.c               |  4 ++--
- gi/pygi-invoke.c            |  4 ++--
- 5 files changed, 22 insertions(+), 27 deletions(-)
-
-commit c9e95663d05de98a9abd3d1479554b1f09753382
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu May 2 03:57:05 2013 -0700
-
-    Remove and deprecate API for setting of thread blocking functions
-
-    Remove pyglib_set_thread_block_funcs and deprecate
-    pyg_set_thread_block_funcs.
-    The thread block function APIs are no longer be neccessary because
-    PyGObject
-    can use the Python C API directly when working with threads.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699440
-
- gi/_glib/pyglib.c               | 41 -----------------------------------
- gi/_glib/pyglib.h               |  9 ++++----
- gi/_gobject/gobjectmodule.c     | 25 ++++++++-------------
- gi/_gobject/pygobject-private.h | 33 ----------------------------
- gi/_gobject/pygobject.h         | 48
- ++++++++++++++++++++---------------------
- gi/gimodule.c                   | 15 +++++++------
- 6 files changed, 46 insertions(+), 125 deletions(-)
-
-commit 05498a5732582a5ed1944bd1383af154ca5fc4e6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Apr 30 11:51:05 2013 -0700
-
-    configure.ac: Post-release bump to 3.9.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 902bb6685fd9c90c7d81127861a152b0fab4b107
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Apr 30 11:49:03 2013 -0700
-
-    release 3.9.1
-
- NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 49 insertions(+)
-
-commit f463d7cfaf65e0f3594ec15d897325f84225f1c5
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Apr 28 19:59:35 2013 -0700
-
-    gtk-demo: Wrap description strings at 80 characters
-
-    Wrap trailing demo description strings so they are easier to read
-    in a programming editor. The gtk-demo itself re-wraps this using
-    textwrap and the Gtk.TextView dynamic wrapping.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698547
-
- demos/gtk-demo/demos/Entry/search_entry.py       |  6 +++---
- demos/gtk-demo/demos/Icon View/iconviewbasics.py |  8 ++++----
- demos/gtk-demo/demos/Icon View/iconviewedit.py   |  5 +++--
- demos/gtk-demo/demos/Tree View/liststore.py      |  5 ++++-
- demos/gtk-demo/demos/images.py                   |  6 ++++--
- demos/gtk-demo/demos/menus.py                    | 20
- ++++++++++++++++----
- demos/gtk-demo/demos/pickers.py                  |  4 ++--
- demos/gtk-demo/demos/pixbuf.py                   |  5 +++--
- demos/gtk-demo/demos/rotatedtext.py              |  6 ++++--
- 9 files changed, 43 insertions(+), 22 deletions(-)
-
-commit f0d4b963c42ac31d4d17ec0f2271940df2568644
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Apr 27 22:30:35 2013 -0700
-
-    gtk-demo: Use textwrap to reformat description for Gtk.TextView
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698547
-
- demos/gtk-demo/gtk-demo.py | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-commit ed41e260dcf5745fcc0656412be3c4a520ee20fc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Apr 27 21:58:28 2013 -0700
-
-    gtk-demo: Use GtkSource.View for showing source code
-
-    Replace manual syntax highlighting of Gtk.TextView with usage of
-    GtkSource.View when available. Fall back to TextView with no
-    hightlighting when GtkSource is not available.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698547
-
- demos/gtk-demo/gtk-demo.py | 170
- ++++++++++++---------------------------------
- 1 file changed, 44 insertions(+), 126 deletions(-)
-
-commit 150104db47ac5ba32758fba0c156adaecc0fbcc0
-Author: Mike Ruprecht <mike.ruprecht@collabora.co.uk>
-Date:   Sun Apr 28 01:40:34 2013 -0500
-
-    Use correct class for GtkEditable's get_selection_bounds() function
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699096
-
- gi/overrides/Gtk.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 61663928259f6f48c11f6e43334a62dd2b3eb8e6
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Apr 25 05:27:35 2013 -0700
-
-    Test results of g_base_info_get_name for NULL
-
-    Block against potential NULL result when generating type hint with
-    _g_arg_get_pytype_hint.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698829
-
- gi/pygi-info.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-commit 0dff1940caf52ea5f1de27cc801ea6d4dab3a446
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sun Apr 21 19:09:59 2013 -0300
-
-    Remove g_type_init conditional call
-
-    It's deprecated in the glib version we depend on.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698763
-
- gi/_gobject/gobjectmodule.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-commit c84b071ed8d3b78b4e4a6aef12f5f8bb99bdc107
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sat Mar 30 20:59:44 2013 -0300
-
-    Update deps versions also in README
-
-    commit f957e33bc1ef2a4175bab85cfcd9b5faf092aa2f missed to update
-    that file
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698763
-
- README | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 4f25fa43e1e5c0f3cd22bcdadadb1d731f01fe34
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sat Mar 30 20:50:35 2013 -0300
-
-    Drop compat code for old python version
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698763
-
- gi/_glib/pyglib-python-compat.h | 12 ------------
- 1 file changed, 12 deletions(-)
-
-commit 8104fa04cac2cba74337e6c4b3ecf56fd6cbb80b
-Author: Niklas Koep <niklas.koep@gmail.com>
-Date:   Thu Apr 25 06:14:12 2013 +0200
-
-    Remove duplicate call to _gi.Repository.require()
-
-    repository.require() was called twice in IntrospectionModule's
-    constructor.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698797
-
- gi/module.py | 1 -
- 1 file changed, 1 deletion(-)
-
-commit f22b95033c0bcd99e9c70e6f0dc999f5e64b08a6
-Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon Oct 1 03:02:10 2012 -0700
-
-    Add ObjectInfo.get_class_struct()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685218
-
- gi/pygi-info.c   | 15 +++++++++++++++
- tests/test_gi.py |  4 ++++
- 2 files changed, 19 insertions(+)
-
-commit 2d34d35e5db06b0eb29cba91d0999b20a5c0b450
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Apr 22 03:43:23 2013 -0700
-
-    Change interpretation of NULL pointer field from None to 0
-
-    The usage of 0 is needed because these fields should generally
-    be used to store integer indices or hashes, not necessarily
-    pointers to actual data.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698366
-
- gi/pygi-argument.c       | 11 +----------
- tests/test_everything.py |  5 +++--
- 2 files changed, 4 insertions(+), 12 deletions(-)
-
-commit 8d61ad38eb90d639da08289c036ae4cb99336c2a
-Author: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
-Date:   Fri Mar 8 08:25:58 2013 +0330
-
-    Do not build tests until needed
-
-    Originally by [Alexandre Rostovtsev <tetromino@gmail.com>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698444
-
- tests/Makefile.am | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-commit f61f23b999ae6e27ca852753da906de4ab8e6e25
-Author: Kai Willadsen <kai.willadsen@gmail.com>
-Date:   Sun Apr 14 15:16:40 2013 +1000
-
-    pygi-convert: Support toolbar styles
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698477
-
- pygi-convert.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 7a92ade7ee5fe2f9eb8de2626c34650e2e5c06df
-Author: Kai Willadsen <kai.willadsen@gmail.com>
-Date:   Sun Apr 14 10:54:04 2013 +1000
-
-    pygi-convert: Support new-style constructors for Gio.File
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698477
-
- pygi-convert.sh | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 1e8120992dc103ac817351be3c150e6cb25f719f
-Author: Kai Willadsen <kai.willadsen@gmail.com>
-Date:   Sun Apr 14 10:22:55 2013 +1000
-
-    pygi-convert: Add some support for recent manager constructs
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698477
-
- pygi-convert.sh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 17d349f98d62ea7947c1553e0ef7e867301523aa
-Author: Kai Willadsen <kai.willadsen@gmail.com>
-Date:   Sun Apr 14 07:37:24 2013 +1000
-
-    pygi-convert: Check for double quote in require statement
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698477
-
- pygi-convert.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit cc8bd6bd3fdf99762aa3431ceee347a05f6f3200
-Author: Kai Willadsen <kai.willadsen@gmail.com>
-Date:   Sun Apr 14 07:37:00 2013 +1000
-
-    pygi-convert: Don't transform arbitrary keysym imports
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=698477
-
- pygi-convert.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 99872a18ed1468b2c85cc7b96a0d12f2ae5167f0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Apr 11 04:09:59 2013 -0700
-
-    Remove Python keyword escapement in Repository.find_by_name
-
-    Strip trailing underscore from module level items before
-    calling g_irepository_find_by_name. This fixes a problem
-    with GI module level items having the same name as a Python
-    keyword raising an AttributeError during access (Pango.break_).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697363
-
- gi/pygi-info.c                | 32 ++++++++++++++++++++++----------
- gi/pygi-info.h                |  2 ++
- gi/pygi-repository.c          | 16 ++++++++++++++++
- tests/test_overrides_pango.py |  5 +++++
- 4 files changed, 45 insertions(+), 10 deletions(-)
-
-commit c07404461b126206e369270b56e613f81369c70a
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 16:08:09 2013 -0600
-
-    Optimize signal lookup in gi repository
-
-    Now that we have GSignalQuery results available to us when connecting
-    signals, we already know which GType implements the signal in
-    question.
-
-    Therefore there is no need to traverse the class parent hierarchy
-    looking for this, which takes a considerable amount of CPU time.
-
-    There is also no need to canonicalize the signal name; both before
-    and after this patch, by the time we reach this point we have already
-    successfully looked up the signal name as presented from Python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696143
-
- gi/_gobject/pygobject.c  |  5 ++--
- gi/pygi-signal-closure.c | 59
- +++++++++++++-----------------------------------
- gi/pygi-signal-closure.h |  1 +
- gi/pygi.h                |  4 +++-
- 4 files changed, 23 insertions(+), 46 deletions(-)
-
-commit e220706b3e4d9fd454613fbfe1e60e7e1da94ae0
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 15:38:19 2013 -0600
-
-    Optimize connection of Python-implemented signals
-
-    Like properties, when working with signals we must detect if the
-    signal is implemented in a Python class or if it originates from the
-    gi repository, and act accordingly.
-
-    Asking the gi repository if it can find a signal that is implemented
-    in a Python class (it can't) takes a considerable amount of CPU time.
-
-    Use g_signal_query() to find out which GType implements the signal.
-    Then perform a simple test to see if this type is implemented at the
-    Python level, allowing us to to skip the GI querying in this case.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696143
-
- gi/_gobject/pygobject.c | 19 +++++++++++++++----
- 1 file changed, 15 insertions(+), 4 deletions(-)
-
-commit e91b35d72f93678a79623347dce271148d57046f
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 15:24:52 2013 -0600
-
-    Consolidate signal connection code
-
-    This code was repeated 4 times with very little variance;
-    consolidate it and add simple tests to ensure basic coverage.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696143
-
- gi/_gobject/pygobject.c  | 129
- +++++++++++++++--------------------------------
- tests/test_everything.py |  33 ++++++++++++
- 2 files changed, 74 insertions(+), 88 deletions(-)
-
-commit cd91e1d5db617d470acbf8c5bc74c11c92f946f6
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 15:11:16 2013 -0600
-
-    Fix setting of struct property values
-
-    "goto out" in this context means that an error occurred, but this
-    particular instance was sitting in the "good" codepath.
-
-    Fixes setting of struct property values.
-
- gi/pygi-property.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 8981ea0422c6837d488311dafe8937593372e736
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 14:25:45 2013 -0600
-
-    Optimize property get/set when using GObject.props
-
-    Skip GI repository lookup for properties defined on Python
-    defined GObject types.
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696143
-
- gi/_gobject/pygobject.c | 37 +++++++++++++++++++------------------
- 1 file changed, 19 insertions(+), 18 deletions(-)
-
-commit 266e389ff90d982151bae3ac22b9b8b0739f520f
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sat Apr 13 17:28:26 2013 +0200
-
-    configure.ac: Fix PYTHON_SO with Python3.3
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696646
-
- configure.ac | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit e54c2d1df3812a1789ee240b0ba71ddf77c2f90a
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Mon Mar 18 14:13:37 2013 -0600
-
-    Simplify registration of custom types
-
-    Use custom quark data to track Python created GTypes.
-
-    Remove previous mechanism to track registration of python-implemented
-    GTypes as it was unused (no custom registration was ever tracked).
-
-    Leave vtable pointer and set to NULL to avoid an ABI break.
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696143
-
- gi/_gobject/gobjectmodule.c     | 11 +++++--
- gi/_gobject/pygobject-private.h |  8 ++---
- gi/_gobject/pygobject.c         |  8 ++---
- gi/_gobject/pygobject.h         |  9 +++---
- gi/_gobject/pygtype.c           | 69
- +++--------------------------------------
- 5 files changed, 22 insertions(+), 83 deletions(-)
-
-commit 50702a09344825e3a8aa54365d78de807f989d88
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Sat Apr 13 16:04:17 2013 +0200
-
-    pygi-convert.sh: Add GStreamer rules
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=697951
-
- pygi-convert.sh | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-commit b289176e6b37cb2825bd555cea019b85b68d5c57
-Author: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date:   Sun Mar 10 15:04:40 2013 +0200
-
-    pygi-convert: Add rule for TreeModelFlags
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
- pygi-convert.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 09610bf42be76f65d7d2afe1c691f7b4a7c64e5b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Mar 29 03:20:44 2013 -0700
-
-    Unify interface struct to Python GI marshaling code
-
-    Add pygi_marshal_to_py_interface_struct used for direct gi method
-    call out args and vfunc in args.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c      |  72 ++++++-------------------------
- gi/pygi-marshal-to-py.c | 112
- +++++++++++++++++++++++++++++-------------------
- gi/pygi-marshal-to-py.h |   8 ++++
- 3 files changed, 91 insertions(+), 101 deletions(-)
-
-commit 6d3a0751e71ee3c37b3bb646723aed75971e5b39
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 28 22:41:51 2013 -0700
-
-    Unify Python interface struct to GI marshaling code
-
-    Add pygi_marshal_from_py_interface_struct used for direct gi method
-    call in args and vfunc out args.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        |  75 +++++++--------------
- gi/pygi-cache.c           |  12 +---
- gi/pygi-marshal-from-py.c | 167
- +++++++++++++++++++++++++++++-----------------
- gi/pygi-marshal-from-py.h |  11 +++
- 4 files changed, 141 insertions(+), 124 deletions(-)
-
-commit 1ea654b4d34e0d119556b232796cd9370b2572f1
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 28 06:17:15 2013 -0700
-
-    Unify Python float and double to GI marshaling code
-
-    Change _pygi_argument_from_object to use the cachers marshalers
-    (_pygi_marshal_from_py_float/double) directly instead of keeping a
-    copy of the code.
-    Refactor _pygi_marshal_from_py_float/double to use a common utility
-    _pygi_py_arg_to_double for initial error checking and conversion.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        | 26 ++++----------------------
- gi/pygi-marshal-from-py.c | 42 ++++++++++++++++++++----------------------
- 2 files changed, 24 insertions(+), 44 deletions(-)
-
-commit 2eb2a712864a1a685d19018e0860cf0da7c5c9ab
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 28 05:29:08 2013 -0700
-
-    Unify filename to Python GI marshaling code
-
-    Change _pygi_argument_to_object to use the cachers marshaler
-    (_pygi_marshal_to_py_filename) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c      | 22 ++--------------------
- gi/pygi-marshal-to-py.c |  6 ++----
- 2 files changed, 4 insertions(+), 24 deletions(-)
-
-commit 54aa043d96deb02589e13042a46917405ca53780
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 28 05:20:00 2013 -0700
-
-    Unify utf8 to Python GI marshaling code
-
-    Change _pygi_argument_to_object to use the cachers marshaler
-    (_pygi_marshal_to_py_utf8) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c      | 11 ++++-------
- gi/pygi-marshal-to-py.c |  4 +---
- 2 files changed, 5 insertions(+), 10 deletions(-)
-
-commit 03ff41ae4bb83858338d96cc6210092c7fb82464
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 28 05:10:45 2013 -0700
-
-    Unify unichar to Python GI marshaling code
-
-    Change _pygi_argument_to_object to use the cachers marshaler
-    (_pygi_marshal_to_py_unichar) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c | 19 ++-----------------
- 1 file changed, 2 insertions(+), 17 deletions(-)
-
-commit 594ad084c2cc21cebce209c11740e6d4866b0b82
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 16 19:49:59 2013 -0800
-
-    Unify Python unicode to filename GI marshaling code
-
-    Change _pygi_argument_from_object to use the cachers marshaler
-    (_pygi_marshal_from_py_filename) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c | 30 ++----------------------------
- 1 file changed, 2 insertions(+), 28 deletions(-)
-
-commit a62e8cdf90f7b03cfc8116125ef3557f9ad08dde
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 16 19:32:54 2013 -0800
-
-    Unify Python unicode to utf8 GI marshaling code
-
-    Change _pygi_argument_from_object to use the cachers marshaler
-    (_pygi_marshal_from_py_utf8) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c | 32 ++------------------------------
- 1 file changed, 2 insertions(+), 30 deletions(-)
-
-commit e253c73335fccabc61e0329f8528a90f79858c67
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Feb 16 19:16:43 2013 -0800
-
-    Unify Python unicode to unichar GI marshaling code
-
-    Change _pygi_argument_from_object to use the cachers marshaler
-    (_pygi_marshal_from_py_unichar) directly instead of keeping a
-    copy of the code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        | 34 ++--------------------------------
- gi/pygi-marshal-from-py.c |  9 +++++++++
- 2 files changed, 11 insertions(+), 32 deletions(-)
-
-commit 216caf590b262fed40d10bb34d020089d1197160
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Apr 4 15:57:12 2013 -0700
-
-    Fix enum and flags marshaling type assumptions
-
-    Replace assignments of GFlags and GEnum values to various GIArgument
-    members with v_uint and v_int respectively.
-
- gi/pygi-argument.c | 6 +++---
- gi/pygi-property.c | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-commit 4799ef1d0cb9a4b27c7952585d33b58ea9ec34ca
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Thu Apr 4 10:08:38 2013 +0200
-
-    Make AM_CHECK_PYTHON_LIBS not depend on AM_CHECK_PYTHON_HEADERS
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696648#c6
-
- m4/python.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit f82f755a0f419539c223e4a74e33145726c6e69f
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Thu Apr 4 09:05:48 2013 +0200
-
-    Use distutils.sysconfig to retrieve the python include path.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696648
-
- m4/python.m4 | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
-commit cf81dd66e6387bf27122a71176e91ca39beb6519
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Apr 4 06:47:56 2013 +0200
-
-    Use g_strdup() consistently
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696650
-
- gi/pygi-marshal-from-py.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6c22fea63fa6978c2a717ff12ff84d3aff776b5e
-Author: Christoph Reiter <reiter.christoph@gmail.com>
-Date:   Tue Mar 26 16:03:59 2013 +0100
-
-    Support PEP 3149 (ABI version tagged .so files)
-
-    Add a ABI suffix to the shared library retrieved from
-    distutils.sysconfig
-    instead of hardcoding it. This should also make things more robust
-    on Windows.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696646
-
- configure.ac            |  3 +++
- gi/Makefile.am          | 14 +++++++-------
- gi/_glib/Makefile.am    | 14 +++++++-------
- gi/_gobject/Makefile.am | 14 +++++++-------
- 4 files changed, 24 insertions(+), 21 deletions(-)
-
-commit 2259ccac8aa2ec23240e92e303ea3f2c53dc2a88
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 31 01:32:34 2013 -0700
-
-    Fix stack corruption due to incorrect format for argument parser
-
-    Fix call to PyArg_ParseTupleAndKeywords that used a format parser
-    of "l" meaning long (8 bytes) in combination with an output pointer
-    of guint (4 bytes). Change to use gulong with a format of "k".
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696892
-
- gi/_gobject/pygflags.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 48e52210ece0e144b4c959e773ea542a912358e7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 7 00:26:37 2013 -0800
-
-    Deprecate GLib and GObject threads_init
-
-    Remove a handful of Python threading related helper functions
-    from pyglib and pygobject. The binding internals required
-    GLib.threads_init to be called for PyGObject to work with
-    Python threads. This was removed as it should not be a requirement.
-    Using the Python threading module already initializes threading
-    for us (PyEval_InitThreads).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686914
-
- gi/_glib/glibmodule.c       | 16 --------
- gi/_glib/pyglib.c           | 94
- ---------------------------------------------
- gi/_glib/pyglib.h           | 28 +++++++-------
- gi/_gobject/gobjectmodule.c | 31 ++++-----------
- gi/overrides/GLib.py        |  8 +++-
- gi/overrides/GObject.py     |  2 +-
- 6 files changed, 28 insertions(+), 151 deletions(-)
-
-commit 89d05f91cee419d46cb5318d4a9001ec315a3475
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 25 09:03:51 2013 +0100
-
-    Drop support for Python 2.6
-
-    2.7 has been released long ago, nobody tests PyGObject with 2.6 any
-    more, and
-    this unblocks e. g. GNOME #682320.
-
-    Drop usage of PyCObject_* (which has been superseded by PyCapsule
-    for >= 2.7),
-    and drop Python 2.6 specific workarounds.
-
- configure.ac                    |  2 +-
- gi/_glib/pyglib-python-compat.h | 20 ------------------
- gi/_gobject/pygobject.h         |  6 ------
- gi/pygi.h                       |  4 ----
- m4/python.m4                    |  2 +-
- tests/runtests.py               | 45
- +----------------------------------------
- tests/test_gobject.py           |  1 -
- tests/test_signal.py            |  4 ----
- 8 files changed, 3 insertions(+), 81 deletions(-)
-
-commit 56347953abb1e214817186581eaf2b2d8762cf97
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 16:43:25 2012 +0200
-
-    Remove static PollFD bindings
-
-    Use the GLib API through GI instead, and provide an override to keep a
-    backwards compatible constructor syntax.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686795
-
- gi/_glib/Makefile.am  |  2 --
- gi/_glib/glibmodule.c |  2 --
- gi/_glib/pygsource.c  | 98
- ---------------------------------------------------
- gi/_glib/pygsource.h  | 36 -------------------
- gi/overrides/GLib.py  | 17 +++++++--
- 5 files changed, 15 insertions(+), 140 deletions(-)
-
-commit a93eb5ecc982b5fe1bdf8f78b15ba10351a63b89
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 25 08:44:24 2013 +0100
-
-    Drop test skipping due to too old g-i
-
-    We depend on gobject-introspection 1.35.9 now, which has all this API.
-
- tests/test_gi.py                | 24 ------------------------
- tests/test_object_marshaling.py | 14 --------------
- 2 files changed, 38 deletions(-)
-
-commit f957e33bc1ef2a4175bab85cfcd9b5faf092aa2f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 25 08:37:37 2013 +0100
-
-    Bump glib and g-i dependencies
-
-    Now require g-i 1.35.9 and glib 2.35.9, i. e. the current stable
-    GNOME 3.8
-    versions. This allows us to drop the conditional test suite skips
-    and drop the
-    static PollFD bindings.
-
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 252556d044322207429c0d0c269365f48e4d819a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 25 08:43:53 2013 +0100
-
-    configure.ac: post-release version bump to 3.9.1
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 5f82e007e2dcdbfd82a20d8c4d54f9cd7b3b77ac
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 25 08:12:10 2013 +0100
-
-    release 3.8.0
-
- NEWS | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit bb4fa093d59173f68a0b16e10016bafe7cd18f62
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Mar 20 23:45:01 2013 -0700
-
-    tests: Fix incorrect assumption when testing pyglib version
-
-    Replace version test of 3.7.2 with 3.0.0 as it is the only reasonable
-    value that can be used for a future proof unittest here.
-
- tests/test_glib.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 78b7b0bea3068b81ba67deea4d06b1fb27434841
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 18 14:02:29 2013 +0100
-
-    configure.ac: post-release bump to 3.8.0
-
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit defbd63e95faafaa84230f160bc95dad0f55e37d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 18 14:01:05 2013 +0100
-
-    release 3.7.92
-
- NEWS | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-commit a0844a896603c5c91bed24cf94106765f0ced74e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 17 23:22:38 2013 -0700
-
-    Fix stack smasher when marshaling enums as a vfunc return value
-
-    Add special case for marshaling GI_TYPE_TAG_INTERFACE with enum or
-    flag types. Default interfaces to marshal as a pointer.
-    Add explicit cases for GType and Unichar out/return marshaling.
-    Fix leaking of GIBaseInfo when marshaling interface as out arg.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=637832
-
- gi/pygi-closure.c | 69
- ++++++++++++++++++++++++++++++++++++++++++++++---------
- tests/test_gi.py  | 19 +++++++++++++++
- 2 files changed, 77 insertions(+), 11 deletions(-)
-
-commit 669e15c35213dbce6ceb0a4a3d474aae620910ce
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 17 15:37:09 2013 -0700
-
-    Change base class of PyGIDeprecationWarning based on minor version
-
-    Use RuntimeWarning as the base class of PyGIDeprecationWarning
-    for unstable (odd minor version) and use DeprecationWarning for
-    stable (even minor version). This is so PyGObject deprecations
-    behave the same as regular Python deprecations in stable releases.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=696011
-
- gi/__init__.py | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
-
-commit 755b2e6fc635489d98d48254ea60b2631b43dfbd
-Author: Alban Browaeys <prahal@yahoo.com>
-Date:   Thu Feb 28 18:57:21 2013 +0100
-
-    autogen.sh: Source gnome-autogen to fix out of source builddir
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694889
-
- autogen.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a38392a9d713b0001cf30066d337b1abbbbbc59e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Mar 5 12:22:15 2013 +0100
-
-    Add 3.7.91.1 NEWS entry
-
-    Forgot to push this back then.
-
- NEWS | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 85f8aae849dd0fb21de8722a3af9234ca20ea1e0
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 17 04:19:57 2013 -0700
-
-    pygtkcompat: Make gdk.Window.get_geometry return tuple of 5
-
-    Make get_geometry return a tuple of (x, y, width, height, depth)
-    as it did in pygtk 2.
-    Update pygtkcompat.enable_gtk() to default to version 3.0 because
-    version 2.0 core dumps trying to use introspection with gtk 2.
-
- pygtkcompat/pygtkcompat.py | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-commit 38683f721c33cc35f0260868e58643fd35f04cbe
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 17 02:08:03 2013 -0700
-
-    testhelpermodule: Fix build warning for PyGObject_Type redefinition
-
-    Remove dynamic retrieval of PyGObject_Type as it is available
-    in pygobject.h since commit 2656bc47 (causing this compile warning)
-
- tests/testhelpermodule.c | 14 +-------------
- 1 file changed, 1 insertion(+), 13 deletions(-)
-
-commit a3ec8867945da7722beebb7e77c6255ee3ba8bb8
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Mar 17 01:51:33 2013 -0700
-
-    pygtkcompat: Initialize hint to zero in set_geometry_hints
-
- pygtkcompat/pygtkcompat.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 471204953d6fc93b3d311afd133d40f7d75ec541
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Mar 15 04:33:22 2013 -0700
-
-    Remove incorrect bounds check with property helper flags
-
-    Remove bounds check for flags as it is not necessary for the
-    helper to make these kind of judgement calls in general.
-    e.g. leave it to marshaling/internals to complain about potential
-    problems. The flags were being bounds checked to a maximum
-    value of 32 (the intention was most likely to limit it to 32 bits).
-
- gi/_gobject/propertyhelper.py | 3 ---
- tests/test_properties.py      | 1 -
- 2 files changed, 4 deletions(-)
-
-commit 2656bc47ca1219b329066da1c2c58018ae624866
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 7 18:07:17 2013 -0800
-
-    Fix crash when setting property of type object to an incorrect type
-
-    Add type check when marshaling an object from Python for GObject
-    types.
-    Add PyGObject_Type as part of the pygobject API to check for this.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695420
-
- gi/_gobject/gobjectmodule.c     | 3 ++-
- gi/_gobject/pygobject.h         | 2 ++
- gi/pygi-marshal-from-py.c       | 8 ++++++++
- tests/test_object_marshaling.py | 4 ++++
- 4 files changed, 16 insertions(+), 1 deletion(-)
-
-commit 44587f42224a44a480629223c8d78a426bc32a12
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 7 17:59:02 2013 -0800
-
-    Remove skipping of object property tests
-
-    These were showing up as unexpected successes now that bug 675726
-    is fixed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695420
-
- tests/test_object_marshaling.py | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-commit 10214ba2d96fd6d66eeea159219f585abff8632a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Mar 7 15:34:49 2013 -0800
-
-    Give more informative error when setting property to incorrect type
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695420
-
- gi/_gobject/pygobject.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-commit 9ab6e5451aea43ed086c0d26324c4efed24476d7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Mar 5 12:04:55 2013 +0100
-
-    Revert "Drop gi.overrides.overridefunc()"
-
-    This reverts commit 1dc2bc9f65669417ae1964d70b85f115928b2963. External
-    modules
-    like GEdit plugins use @overrides for functions as well, we must
-    not break
-    them.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=695199
-
- gi/overrides/Gtk.py      |  7 ++++---
- gi/overrides/__init__.py | 24 ++++++++++++++++++++++--
- 2 files changed, 26 insertions(+), 5 deletions(-)
-
-commit 862de794bf01a66aa6d796c674bce375cad37ba7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 17:33:51 2013 +0100
-
-    configure.ac: Post-release bump to 3.7.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit bb12e652d661cf6ce931b44a89c11951894101bf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 17:27:50 2013 +0100
-
-    release 3.7.91
-
- NEWS | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-commit 25a6f90f28b065dd4f1cd352826598577402dc0b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 17:16:22 2013 +0100
-
-    Dot not clobber original Gdk/Gtk functions with overrides
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686835
-
- gi/overrides/Gdk.py | 3 ++-
- gi/overrides/Gtk.py | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-commit d50d16428edf42799489fe1befbc4ce56f0fa181
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 15:30:31 2013 +0100
-
-    tests: Reorganize GError and GClosure tests
-
-    Split TestGClosure.test_gclosure_in() into its three components.
-
-    Merge the various TestGError* classes into one, to match the structure
-    of the
-    other tests.
-
- tests/test_gi.py | 59
- +++++++++++++++++++++++++-------------------------------
- 1 file changed, 26 insertions(+), 33 deletions(-)
-
-commit 8cfd596c7849bf78a74fee04630fbbb104f02080
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 15:16:25 2013 +0100
-
-    Fix memory leaks in property setting/getting
-
-    Do not leak GValues and string arrays, free them properly. As we
-    always free
-    the intermediate GValues, use g_value_dup_boxed() instead of
-    g_value_get_boxed() when appropriate.
-
-    Detected by test_gi.TestPropertiesObject.test_strv test case.
-
- gi/pygi-property.c | 21 ++++++++++++++++-----
- 1 file changed, 16 insertions(+), 5 deletions(-)
-
-commit eec8c3a932d42e92ccaf7f97d3d90948842e263f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 12:43:24 2013 +0100
-
-    Fix memory leak in pyg_flags_get_value_nicks()
-
-    Discovered by test_gi.TestKeywords.test_uppercase() test.
-
- gi/_gobject/pygflags.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-commit 002a834dd993b82508a4fe262269befcf1a6d341
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 12:10:03 2013 +0100
-
-    Fix memory leak in _pygi_argument_to_array()
-
-    Free the originally allocated GArray data before setting it to
-    our already
-    existing C array.
-
-    Discovered by test_gi.TestStructure.test_boxed_struct_return test
-    case.
-
- gi/pygi-argument.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit d32b410a1b1fcca6d10d75fbd771ea789999da64
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Mar 4 10:19:34 2013 +0100
-
-    Fix leaking inout C arrays
-
-    g_*_info_invoke() changes the original state->in_args and state->args
-    C arrays
-    to the output values for (inout) arguments, thus losing the pointer
-    to the
-    originally allocated array. Remember that in state->args_data,
-    so that we can
-    free it in _pygi_marshal_cleanup_from_py_array().
-
-    Reproduced by test_gi.TestArray.test_array_fixed_inout test case.
-
- gi/pygi-marshal-cleanup.c | 6 ++++++
- gi/pygi-marshal-from-py.c | 4 ++++
- 2 files changed, 10 insertions(+)
-
-commit e4098cbc28ff9324fa851bca2e423da4e51b5091
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Mar 1 15:12:31 2013 +0100
-
-    Fix leak in _PyGI_ERROR_PREFIX()
-
-    Properly clean up our allocated py_error_prefix string.
-
-    Fixes memory leak in e. g. test_gi.TestArray.test_array_fixed_int_in.
-
- gi/pygi-private.h | 1 +
- 1 file changed, 1 insertion(+)
-
-commit b388c3e87ce86d26560337c88eb33d0a95647db8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Mar 1 15:01:06 2013 +0100
-
-    Fix leaking of boxed array elements
-
-    Commit 631d8ef879a copies struct array elements, but this needlessly
-    duplicates
-    and leaks the array element for boxed types. So only do it for
-    plain structs.
-
-    This fixes the memory leak with
-    test_gi.TestGValue.test_gvalue_flat_array_out.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693402
-
- gi/pygi-marshal-to-py.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 1dc2bc9f65669417ae1964d70b85f115928b2963
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Mar 1 14:04:34 2013 +0100
-
-    Drop gi.overrides.overridefunc()
-
-    This just adds an unnecessary extra function call and is not really
-    needed.
-    Drop it from the only remaining function which uses this
-    (Gtk.main_quit) and
-    drop overridefunc().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686835
-
- gi/overrides/Gtk.py      |  7 +++----
- gi/overrides/__init__.py | 24 ++----------------------
- 2 files changed, 5 insertions(+), 26 deletions(-)
-
-commit 1edc4ba31b3f9375ec3920aab5b71eb066ee3739
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Mar 1 14:02:02 2013 +0100
-
-    Add some tests for overridden Gdk/Gtk functions
-
-    Add tests for Gtk.main_quit, Gtk.stock_parse(), and Gdk.color_parse(),
-    as we
-    have overrides for them.
-
- tests/test_overrides_gdk.py |  7 +++++++
- tests/test_overrides_gtk.py | 15 +++++++++++++++
- 2 files changed, 22 insertions(+)
-
-commit 6f6c0ceff00fea83bc85756b10694f7c96039abc
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Mar 1 11:10:01 2013 +0100
-
-    Fix GLib.Source ref leak upon destruction
-
-    In GLib.Source.__del__(), manually unref the source if we are a
-    custom Source.
-    As we use a static binding to create it, the GI part won't unref it
-    for us,
-    leading to finalize() method not being called and the GSource
-    object leaking.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=510511
-
- gi/overrides/GLib.py |  4 ++++
- tests/test_source.py | 31 +++++++++++++++++++++++++++++++
- 2 files changed, 35 insertions(+)
-
-commit 91f76dd94fb0afc6888a821a31c3a4e2e053360e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Feb 28 15:08:56 2013 +0100
-
-    Add performance test for Gtk.ListStore.append
-
-    We are going to optimize this in various ways, so let's measure it.
-
- tests/test_overrides_gtk.py | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit b1ff74b085bdca72c272f019be4dd387073a991a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Feb 28 04:32:30 2013 -0800
-
-    Optimize GValue.get/set_value by setting GValue.g_type to a local
-
-    This increases performance by a factor of 2x for types later
-    in the dispatch.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694857
-
- gi/overrides/GObject.py | 98
- +++++++++++++++++++++++++------------------------
- 1 file changed, 51 insertions(+), 47 deletions(-)
-
-commit 105e6738ee249b64904da26ae45dd273ca4eeba8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Feb 28 11:43:47 2013 +0100
-
-    Fix leak of caller-allocated boxed values
-
-    Add a new "allocated_slice" argument to _pygi_boxed_new() which
-    specifies
-    whether its "boxed" pointer was allocated using a slice (by giving
-    its size) or
-    malloc (by specifying 0), as _pygi_boxed_new cannot determine that
-    itself any
-    more.
-
-    Use this in _pygi_marshal_to_py_interface_struct() for
-    caller-allocated boxed
-    values, as _caller_alloc() uses _pygi_boxed_alloc() for those
-    (i. e. slices),
-    which would otherwise leak.
-
-    Thanks to Mike Gorse <mgorse@suse.com> for the original patch!
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691501
-
- gi/gimodule.c           |  2 +-
- gi/pygi-argument.c      |  2 +-
- gi/pygi-boxed.c         | 14 ++++++++++----
- gi/pygi-boxed.h         |  3 ++-
- gi/pygi-marshal-to-py.c |  6 ++++--
- gi/pygi-source.c        |  3 ++-
- 6 files changed, 20 insertions(+), 10 deletions(-)
-
-commit 64bcca2d39fed1734ad1abbe291406387e901f5c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Feb 28 10:48:18 2013 +0100
-
-    Fix memory handling of caller-allocated boxed types
-
-    _pygi_marshal_to_py_interface_struct() and other places treat
-    subtypes of
-    G_TYPE_BOXED as boxed values and wrap them with _pygi_boxed_new(). Fix
-    _caller_alloc() and _cleanup_caller_allocates() to consider
-    G_TYPE_BOXED
-    subtypes as well and use the slice allocator instead of malloc()'ing
-    a struct.
-    This avoids trying to free an malloc'ed struct with g_slice_free()
-    and properly
-    cleans up the boxed values.
-
-    The leak was produced with:
-
-    G_SLICE=debug-blocks PYTHONPATH=. valgrind --tool=memcheck
-    --leak-check=full --show-possibly-lost=no \
-      python3 -c 'from gi.repository import Gtk; b=Gtk.TextBuffer();
-      (s,e) = b.get_bounds()'
-
- gi/pygi-invoke.c          | 2 +-
- gi/pygi-marshal-cleanup.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 4f5e8b7554b6388aa2d0eb4a3b285d99499163be
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 23:21:34 2013 +0100
-
-    Fix cleanup of GValue arrays
-
-    Commit bc1fd8 introduced a thinko: We must not change
-    item_arg_cache->from_py_cleanup, as it's a global cache. Revert
-    the original
-    change, and instead put the hack into
-    _pygi_marshal_cleanup_from_py_array(),
-    which now short-circuits
-    _pygi_marshal_cleanup_from_py_interface_struct_gvalue() to avoid
-    trying to release a slice which has never been allocated in
-    _pygi_marshal_from_py_array().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=672224
-
- gi/pygi-marshal-cleanup.c | 11 ++++++++++-
- gi/pygi-marshal-from-py.c | 10 +++-------
- 2 files changed, 13 insertions(+), 8 deletions(-)
-
-commit 70118c3840b10e1585d066a4be485c097cd23e99
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 21:52:43 2013 +0100
-
-    Revert "Mark caller-allocated boxed structures as having a slice
-    allocated"
-
-    This is wrong after all, as it sets slice_allocated to TRUE, but
-    doesn't set a
-    corresponding size. Also, poking in internal fields from that place
-    is ugly;
-    this should rather be fixed in gi/pygi-marshal-cleanup.c
-    _cleanup_caller_allocates().
-
-    This reverts commit dc3d21173b75232f7ea0b9913f7309486456a69d.
-
- gi/pygi-marshal-to-py.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-commit a51c72c771dafc0c13d7990f1ff3e428dca729a1
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 21:51:30 2013 +0100
-
-    Run tests with G_SLICE=debug_blocks
-
-    This will help finding regressions in slice management, like in
-    https://bugzilla.gnome.org/show_bug.cgi?id=691501
-
- tests/Makefile.am | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-commit 4f6ebcfe0605a7a593dc3f9dd322a4da9bd091a3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 18:30:23 2013 +0100
-
-     Add override helper for stripping boolean returns
-
-    Introduce a gi.overrides.strip_boolean_result() helper which checks
-    a boolean
-    return value and if True, return the remaining arguments, otherwise
-    return a
-    default. This pattern is being used by a lot of overrides, which get
-    significantly smaller and more consistent that way.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694431
-
- gi/overrides/Gdk.py      |  27 +-------
- gi/overrides/Gtk.py      | 156
- +++++++++--------------------------------------
- gi/overrides/__init__.py |  22 +++++++
- 3 files changed, 53 insertions(+), 152 deletions(-)
-
-commit 08c97b0bd3140921f1b5c74f7764e23d3a9bf0ee
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 15:39:23 2013 +0100
-
-    Drop obsolete pygobject_register_sinkfunc() declaration
-
-    There is no definition for this any more, nor is it being used
-    anywhere.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=639849
-
- gi/_gobject/pygobject-private.h | 2 --
- 1 file changed, 2 deletions(-)
-
-commit b6fefd625b843d4fc3dabc456584a2ad27a48c8c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 13:41:55 2013 +0100
-
-    Fix marshalling of C arrays with explicit length in signal arguments
-
-    We need _pygi_argument_to_array() from both closure marshalling
-    (where we have
-    the arguments as GIArgument array) and signal closure marshalling
-    (where we
-    have the arguments in a GValue array). Add an alternative
-    "args_values"
-    parameter to _pygi_argument_to_array() so that callers can specify
-    one or the
-    other depending on which type they have available.
-
-    This allows us to pass on the full argument list for signal closures,
-    so that
-    _pygi_argument_to_array() can access the explicit length argument
-    for an
-    array.
-
-    This fixes the GSettings:change-event signal.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=662241
-
- gi/pygi-argument.c       | 36 ++++++++++++++++++++++++++++--------
- gi/pygi-argument.h       |  1 +
- gi/pygi-closure.c        |  2 +-
- gi/pygi-info.c           |  4 ++--
- gi/pygi-signal-closure.c |  3 ++-
- tests/test_gio.py        | 18 ++++++++++++++++++
- 6 files changed, 52 insertions(+), 12 deletions(-)
-
-commit caeeeb7e4282e183eefc3c53b2d53c8c2bb7de89
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Feb 27 08:07:20 2013 +0100
-
-    Fix signedness, overflow checking, and 32 bit overflow of GFlags
-
-    GFlagsValue.value is a guint, so we must access it as unsigned
-    type. Define two
-    new macros PYGLIB_PyLong_FromUnsignedLong() and
-    PYGLIB_PyLong_AsUnsignedLong()
-    for that purpose, and consistently use them for handling flag
-    values. Use the
-    checked variant of these functions which produce OverflowErrors
-    instead
-    of the unchecked PYGLIB_PyLong_AS_LONG().
-
-    Insert zero padding after the PyLongObject in PyGFlags and
-    PyGEnum. Without
-    this, the directly adjacent GType field seems to confuse
-    PyLong_FromUnsignedLong() and includes the GType into the numeric
-    value.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693121
-
- gi/_glib/pyglib-python-compat.h |  8 +++++++
- gi/_gobject/gobjectmodule.c     |  2 +-
- gi/_gobject/pygflags.c          | 52
- +++++++++++++++++++++++++----------------
- gi/_gobject/pygobject-private.h | 10 ++++----
- gi/_gobject/pygobject.h         |  4 ++--
- gi/_gobject/pygtype.c           |  6 ++---
- tests/test_overrides_gdk.py     | 15 ++++++++++++
- 7 files changed, 67 insertions(+), 30 deletions(-)
-
-commit b3a3da37e369f3f5d434c8dc9f3c7f1e74d537ac
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Tue Feb 26 16:15:36 2013 +0800
-
-    gi/pygi-marshal-from-py.c: Fix build on Visual C++
-
-    Since Visual C++ does not provide the INFINITY and NAN constants
-    in its
-    math.h (they are items defined by C99), provide fallback
-    implementations
-    for it here.  The INFINITY constant can be provided with HUGE_VAL,
-    since
-    we are using INFINITY to check the value of a variable of double
-    type, and
-    we could use a rather simple workaround for NAN.
-
-    Also avoid declaring variables in the middle of the block.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692856
-
- gi/pygi-marshal-from-py.c | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
-commit 5210e3d5bb7936a21b6a2c938ede505bf1d848c9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 26 16:42:19 2013 +0100
-
-    Fix some style issues with previous patch
-
- gi/pygi-cache.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 999679beaa9f5b36d9483abdbd30cd5e113b6bf6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 26 10:15:22 2013 +0100
-
-    Raise DeprecationWarning on deprecated callables
-
-    Check if a callable is marked as deprecated and raise a
-    DeprecationWarning in
-    that case.
-
-    Notes:
-     - Python hides DeprecationWarning by default, you need to enable
-     them with -Wd
-     - The deprecation message is currently not in the typelib (bug
-     #694728)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=665084
-
- gi/pygi-cache.c  | 14 ++++++++++++++
- tests/test_gi.py | 10 ++++++++++
- 2 files changed, 24 insertions(+)
-
-commit 9f8258cfdcf562aa6cf37b9e66075b7f6a6ed97a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 18 00:39:45 2013 -0800
-
-    pygtkcompat: Add Widget.window, scroll_to_mark, and window methods
-
-    Fix gi.pygtkcompat attempting relative import in Python < 3.0.
-    Add Gtk.Widget.window property which uses get_window()
-    Add Gtk.TextView.scroll_to_mark with defaults
-    Add Gtk.window_list_toplevels and Gtk.window_set_default_icon_name
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694067
-
- gi/pygtkcompat.py          |  2 ++
- pygtkcompat/pygtkcompat.py | 14 ++++++++++++++
- 2 files changed, 16 insertions(+)
-
-commit e8e2bbee7bb79039bbd9a968f7db88438bd937f9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Dec 16 02:56:06 2012 -0800
-
-    pygtkcompat: Add Gtk.Window.set_geometry_hints which accepts keyword
-    arguments
-
-    Monkey patch a keyword argument version of set_geometry_hints onto
-    Gtk.Window.
-    This version is compatible with pygtk and takes keywords instead of a
-    Gdk.Geometry and Gdk.GeometryMask.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694067
-
- pygtkcompat/pygtkcompat.py | 44
- ++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
-
-commit 1ca0e142709843cdae9ca965dfa6cc292ef53ab5
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 26 10:09:47 2013 +0100
-
-    tests: Fix warning behaviour
-
-    -Werror::* does not seem to do what it says on the tin, these
-    options are
-    ignored entirely apparently. Just keep -Wd to actually show all
-    warnings
-    including DeprecationWarning, which is hidden by default.
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e7ea6952c7a2d8da68ed8b66770d889cd756df9a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 26 08:49:10 2013 +0100
-
-    Ship pygobject.doap for autogen.sh
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=694591
-
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 80ed803dab3ad914d7214a475e3c6ed743dfdccc
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Feb 19 03:07:19 2013 -0800
-
-    Fix crashes in various GObject signal handler functions
-
-    Fix crashes in a large amount of signal handler functions exposed
-    on the GObject module. This is possible now that the underlying
-    GObject pointer is exposed to Python as a PyCapsule which marshaling
-    can handle. The following functions in the GObject module have been
-    verified:
-
-    signal_handler_unblock
-    signal_handler_disconnect
-    signal_handler_is_connected
-    signal_stop_emission
-    signal_stop_emission_by_name
-    signal_has_handler_pending
-    signal_connect_closure
-    signal_connect_closure_by_id
-    signal_handler_find
-    signal_handlers_destroy
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=633927
-
- gi/_gobject/gobjectmodule.c |  57 ++--------------
- gi/overrides/GObject.py     | 158
- ++++++++++++++++++++++++++++++++++----------
- tests/test_signal.py        | 121 ++++++++++++++++++++++++++++++++-
- 3 files changed, 247 insertions(+), 89 deletions(-)
-
-commit e9c578c1d47375cb2249ccdd86873faad04b89e1
-Author: Olivier Crête <olivier.crete@collabora.com>
-Date:   Fri Sep 14 21:29:53 2012 -0400
-
-    pygi-closure: Protect the GSList prepend with the GIL
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684060
-
- gi/pygi-closure.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 6e0a32f6d9febbd782dc56a619974f009e79abd9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Feb 20 01:21:32 2013 -0800
-
-    generictreemodel: Fix bad default return type for get_column_type
-
- pygtkcompat/generictreemodel.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 8ec5c335e223bdf00c7bb6c9aac3e7ac7791e38e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 19 12:23:13 2013 +0100
-
-    configure.ac: post-release bump to 3.7.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f2fb7f6142cd7112db9c2526d7f1c642a50cfc2a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 19 12:19:35 2013 +0100
-
-    Release 3.7.90
-
- NEWS         | 17 +++++++++++++++++
- configure.ac |  2 +-
- 2 files changed, 18 insertions(+), 1 deletion(-)
-
-commit 840c871441cb215f24cc6e7ed26b9f38e5aad0df
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 18 01:46:22 2013 -0800
-
-    overrides: Fix inconsistencies with drag and drop target list API
-
-    Add support to Gtk.Widget.drag_dest_set_target_list and
-    Gtk.Widget.drag_source_set_target_list to accept iterables containing
-    mixed TargetEntry or a tuple of (target, flags, info).
-    Add support to Gtk.TreeView.enable_model_drag_source and
-    Gtk.TreeView.enable_model_drag_dest to accept a list of
-    Gtk.TargetEntry
-    items.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680640
-
- gi/overrides/Gtk.py         | 40 +++++++++++++++++++++++++++++-----------
- tests/test_overrides_gtk.py | 32 ++++++++++++++++++++++++++++++++
- 2 files changed, 61 insertions(+), 11 deletions(-)
-
-commit 62e94b0f87845bb7a1cfddf70dcdc89ff7a80bf7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 18 03:19:34 2013 -0800
-
-    tests: Add test_marshaling_object to Makefile.am
-
- tests/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit a10fb7216de57046d1ecacb73dd032eaadcbad09
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Wed Aug 29 03:46:23 2012 -0700
-
-    pygtkcompat: Add pygtk compatible GenericTreeModel implementation
-
-    Add Python implementation of the GenericTreeModel that was
-    available in pygtk. The implementation attempts a better job
-    than the original at ref counting by guaranteeing no leaks
-    upon deletion of the model itself. Or by using the extra "node"
-    argument to the row_deleted signal. The model is available in
-    the pygtkcompat package directly as
-    pygtkcompat.generictreemodel.GenericTreeModel or with as
-    gtk.GenericTreeModel when pygtkcompat.enable_gtk() is set.
-
-    Add file list and tree demos making use of GenericTreeModel
-    to gtk-demo.
-
-    Auto-expand gtk-demo app tree to give a better overview of
-    the demos available.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682933
-
- .../gtk-demo/demos/Tree View/treemodel_filelist.py | 234 ++++++++++++
- .../gtk-demo/demos/Tree View/treemodel_filetree.py | 279 ++++++++++++++
- demos/gtk-demo/gtk-demo.py                         |   2 +-
- gi/pygtkcompat.py                                  |   2 +-
- pygtkcompat/Makefile.am                            |   1 +
- pygtkcompat/generictreemodel.py                    | 420
- +++++++++++++++++++++
- pygtkcompat/pygtkcompat.py                         |   3 +
- tests/Makefile.am                                  |   1 +
- tests/test_generictreemodel.py                     | 406
- ++++++++++++++++++++
- 9 files changed, 1346 insertions(+), 2 deletions(-)
-
-commit 871878c7a1e18fbdbf0744e0dd52cbcc6b610cdb
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 18 02:54:14 2013 -0800
-
-    overrides: Add support for iterables besides tuples for TreePath
-    creation
-
-    Allow Gtk.TreePath to accept any iterable for creation of the path.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682933
-
- gi/overrides/Gtk.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 93c1536b45f56c20b6d874c41c4cacd2b6cdca0a
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 15 22:56:29 2013 -0800
-
-    Unify Python callable to GClosure GI marshaling code
-
-    Add pygi_marshal_from_py_gclosure which can be used for direct
-    gi method
-    call args and vfunc out args.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        | 14 +-----------
- gi/pygi-marshal-from-py.c | 55
- ++++++++++++++++++++++++++++-------------------
- gi/pygi-marshal-from-py.h |  3 +++
- 3 files changed, 37 insertions(+), 35 deletions(-)
-
-commit 9e47afe459df942d9ffc4f71b39f1443976293df
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 15 20:56:12 2013 -0800
-
-    Unify Python object to GValue GI marshaling code
-
-    Add pygi_marshal_from_py_g_value which can be used for direct
-    gi method
-    call args and vfunc out args. The new method also adds an
-    "is_allocated"
-    parameter that will be used to fix leaks in the future.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        | 43 +++++++--------------------
- gi/pygi-marshal-from-py.c | 74
- ++++++++++++++++++++++++++++++++---------------
- gi/pygi-marshal-from-py.h |  5 ++++
- 3 files changed, 65 insertions(+), 57 deletions(-)
-
-commit 15cd7be5ad80e2411d6c13b04f5e2c33e4f5605e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Feb 15 23:07:57 2013 -0800
-
-    Rename pygi_marshal_from_py_object to make it more explicit
-
-    Rename pygi_marshal_from_py_object to pygi_marshal_from_py_gobject
-    to make it more explicit and give consistency with future refactoring.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693405
-
- gi/pygi-argument.c        |  2 +-
- gi/pygi-marshal-from-py.c | 22 +++++++++++++---------
- gi/pygi-marshal-from-py.h |  6 +++---
- 3 files changed, 17 insertions(+), 13 deletions(-)
-
-commit 84103dfabd05742d1a18729663a609e9bf7c45f8
-Author: Niklas Koep <niklas.koep@gmail.com>
-Date:   Fri Feb 15 21:23:01 2013 -0800
-
-    Prefix __module__ attribute of function objects with gi.repository
-
-    This allows gi module methods to work with pydoc and help().
-    Additionally correct typo in two docstrings of the same module.
-
-    Co-authored-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693839
-
- gi/overrides/__init__.py | 3 ++-
- gi/types.py              | 6 +++---
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-commit f6d4d2da676ae63d7a24dd172775b488ce665fe4
-Author: Jonathan Ballet <jon@multani.info>
-Date:   Thu Feb 14 07:50:02 2013 +0100
-
-    configure.ac: only enable code coverage when available
-
-    When building with an older gnome-common which does not yet provide
-    code
-    coverage support, disable it instead of breaking the configure script.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693328
-
- configure.ac | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-commit 42cbff60e2032f715d9be6ab280954211899e03c
-Author: Jonathan Ballet <jon@multani.info>
-Date:   Tue Feb 12 23:03:00 2013 +0100
-
-    Correctly set properties on object with statically defined properties
-
-    Fix failures in GObject.Object.set_properties() when used with
-    statically defined properties:
-
-    * Calling the method was raising a "SystemError: error return without
-    exception set" since `result` was (most of the time) still NULL at the
-    end of pygobject_set_properties()
-
-    * Calling the method with several properties would only set one of
-    the properties, since the function was exiting too early.
-
-    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693618
-
- gi/_gobject/pygobject.c | 19 +++++++++++--------
- tests/test_gi.py        |  6 ++++++
- 2 files changed, 17 insertions(+), 8 deletions(-)
-
-commit 2384769810a61d6ed08d8742b7ae976ebfaa8cb5
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Feb 11 18:08:37 2013 +0100
-
-    autogen.sh: Use gnome-autogen.sh
-
-    We depend on gnome-common now anyway, so use gnome-autogen.sh. This
-    will result
-    in a much better error message when gnome-common is not installed,
-    too.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693328
-
- autogen.sh | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-commit c107bb1f9275a748b494d3f32818f227e07cadf0
-Author: Christoph Reiter <christoph.reiter@gmx.at>
-Date:   Mon Feb 11 10:07:47 2013 +0100
-
-    GTK tests: Add and use context manager for realized widgets
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693377
-
- tests/test_overrides_gtk.py | 91
- +++++++++++++++++++++++++--------------------
- 1 file changed, 50 insertions(+), 41 deletions(-)
-
-commit e6670ee26b7682e6213f71deef813ce2e7cd6730
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Feb 11 08:55:19 2013 +0100
-
-    _pygi_marshal_from_py_array: Fix uninitialized variable
-
- gi/pygi-marshal-from-py.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a37bfdcb3d9dcc8bcdd8126ad55d80fab4729c62
-Author: Christoph Reiter <christoph.reiter@gmx.at>
-Date:   Mon Feb 11 08:34:42 2013 +0100
-
-    Skip some vfunc tests with gi 1.34
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693374
-
- tests/test_object_marshaling.py | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit aff2ea1b681c3019f7dbdc841c2e33de78dbb88f
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Feb 10 13:40:45 2013 -0800
-
-    Remove workaround for g_struct_info_get_size reporting incorrect size
-
-    Remove workaround for g_struct_info_get_size reporting incorrect size
-    for boxed GValues. Verified this now returns the correct size of 24.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=622711
-
- gi/pygi-boxed.c | 31 +++++++++++++------------------
- 1 file changed, 13 insertions(+), 18 deletions(-)
-
-commit 5efe2e5c8458d9f4d72329ea1209d96b5ebecfb4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 4 20:50:10 2013 -0800
-
-    Fix reference leaks with transient floating objects
-
-    Unify and refactor caller and callee GObject argument marshalers.
-    Combine code from the large switch statement used to marshal
-    arguments to and from vfuncs/closures with the marshalers used
-    for direct calls to gi functions. This fixes a reference leak
-    when marshalling GObjects to Python with transfer=full due to
-    the diverging code paths.
-    Replace ability in gobject_new_full to optionally sink objects
-    with ability to optionaly "steal" objects. This fits the premise
-    that binding layers should always sink objects initially. The
-    steal argument is then used for marshalling arguments which are
-    transfer=full.
-    Add hacks and comments to work around GTK+ bugs 693393 and 693400.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687522
-
- gi/_gobject/gobjectmodule.c     | 10 +++++--
- gi/_gobject/pygobject-private.h |  2 +-
- gi/_gobject/pygobject.c         | 45 ++++++++++++++++++++----------
- gi/_gobject/pygobject.h         |  8 ++++--
- gi/pygi-argument.c              | 52 +++++++++++++++++------------------
- gi/pygi-marshal-from-py.c       | 61
- +++++++++++++++++++++++++++++++++++++----
- gi/pygi-marshal-from-py.h       |  6 ++++
- gi/pygi-marshal-to-py.c         | 45 +++++++++++++++---------------
- gi/pygi-marshal-to-py.h         |  5 ++++
- tests/test_object_marshaling.py | 44 ++++++++++++++---------------
- 10 files changed, 181 insertions(+), 97 deletions(-)
-
-commit bd54b8ab30fc957849e7f57e9ee4c4b41aa37013
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Feb 6 12:56:44 2013 -0800
-
-    tests: Fix spelling mistakes in new vfunc object marshalling tests
-
- tests/test_object_marshaling.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-commit cd96fd8b8e10add9890f36ec237bb78548de7002
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 5 07:53:38 2013 +0100
-
-    configure.ac: post-release bump to 3.7.6
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 92b1404e61f46348168f32720eff4a482531e5e3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Feb 5 07:46:46 2013 +0100
-
-    release 3.7.5.1
-
- NEWS         | 3 +++
- configure.ac | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit a3a30559240077194f23c4651d6f382fa59b7d63
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Feb 4 15:16:37 2013 -0800
-
-    Fix API break with pygobject.h
-
-    Move pygobject_new_full after everything in the public API table.
-    This fixes a break that went in along with bug 675726.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675726
-
- gi/_gobject/gobjectmodule.c | 5 +++--
- gi/_gobject/pygobject.h     | 2 +-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-commit b3ca7e27494c35620995840d777037a097082661
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Feb 4 19:53:26 2013 +0100
-
-    configure.ac: post-release bump to 3.7.6
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 77f638411314218748f349b337a36e2864eed1f4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Feb 4 19:37:14 2013 +0100
-
-    release 3.7.5
-
- NEWS | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-commit 50da4fca1435f8c27072e15875227c5e7fb9b7e4
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Feb 3 23:56:14 2013 -0800
-
-    Fix pointer cast warning that was missed in bug 675726
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675726
-
- gi/_gobject/pygobject.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b31d8a952cd57dc92b06a381e054199660a2d570
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jan 31 02:35:36 2013 -0800
-
-    Move various signal methods from static bindings to gi and python
-
-    Move disconnect, handler_is_connected, handler_block, handler_unblock,
-    and stop_emission from static to gi python overrides.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692918
-
- gi/_gobject/pygobject.c | 90
- -------------------------------------------------
- gi/overrides/GObject.py | 44 +++++++++++++++++-------
- tests/test_signal.py    | 19 ++++++-----
- 3 files changed, 42 insertions(+), 111 deletions(-)
-
-commit 3a6a4a7a21a0f5e851518b7912d8ff455aa3ede4
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Fri Feb 1 21:09:26 2013 +0100
-
-    GLib overrides: Support unpacking 'maybe' variants
-
-    Automatically unpack 'maybe' variants to None or to their actual value
-    as we do for other kind of variants
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=693032
-
- gi/overrides/GLib.py         | 5 +++++
- tests/test_overrides_glib.py | 8 ++++++++
- 2 files changed, 13 insertions(+)
-
-commit 9bc3e6807f6c14fb0e132a90ff8f9984229896f6
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Mon Jan 21 16:45:52 2013 -0600
-
-    Fix ref count leak when creating pygobject wrappers for input args
-
-    Only sink input references for closures and vfuncs when transfer is
-    everything. This fixes cases where incoming floating references for
-    callbacks need to maintain their floating state throughout the
-    callback so they don't leak a strong reference. Re-introduce a
-    working "sink" argument to pygobject_new_full which allows for this.
-    Change existing callers to always sink in order maintain behavior.
-
-    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675726
-
- gi/_gobject/gobjectmodule.c     |  5 +--
- gi/_gobject/pygobject.c         |  7 ++--
- gi/_gobject/pygobject.h         |  2 ++
- gi/pygi-argument.c              | 13 +++----
- tests/test_object_marshaling.py | 76
- +++++++++++++++++++++++++++++++++++++----
- 5 files changed, 85 insertions(+), 18 deletions(-)
-
-commit a53a9176a3f87cfb26f3ad98ea746ada0f1a39fa
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Jan 31 01:50:44 2013 -0800
-
-    Add tests for signal stop_emission, disconnect, and
-    handler_is_connected
-
-    Add tests for methods which will be moving from static bindings to gi
-    by using the new __gpointer__ attribute of GObject.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692918
-
- tests/test_signal.py | 51
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 50 insertions(+), 1 deletion(-)
-
-commit df18f9cc3828d1bcf6b6cdf26af786fd9f36d77e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 30 21:37:07 2013 -0800
-
-    Add __gpointer__ property to GObject static binding
-
-    Add access to the underlying C GObject pointer by wrapping it in a
-    PyCapsule/PyCPointer and exposing it as __gpointer__.
-    Add special case marshaling for gi parameters annotated as gpointer
-    to accept a PyCapsule and extract the underlying pointer as the arg.
-    This allows usage of methods like GObject.signal_handler_disconnect
-    which we can start replacing the static bindings with.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692918
-
- gi/_gobject/pygobject.c   | 11 +++++++++--
- gi/pygi-marshal-from-py.c |  6 +++++-
- 2 files changed, 14 insertions(+), 3 deletions(-)
-
-commit 571e0cb246baa4ef7db179b20da6b325f358fe5b
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jan 27 01:22:37 2013 -0800
-
-    Prefix names of typeless enums and flags for GType registration
-
-    Prefix names given to g_flags_register_static and
-    g_enum_register_static
-    with "Py". This avoids conflicts with GTypes of the same name being
-    registered later by a library which does not provide a "get-type"
-    annotation.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692515
-
- gi/gimodule.c    | 10 ++++++++--
- tests/test_gi.py |  4 ++--
- 2 files changed, 10 insertions(+), 4 deletions(-)
-
-commit 97f48f5dcabc8dad4480727a78416b1c2a220777
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Jan 30 04:35:32 2013 -0800
-
-    Add tests for vfunc object arguments and returns
-
-    Add tests which use different combinations of floating, transfer full,
-    transfer none, and held wrapper as in, out, or return arguments
-    to vfuncs.
-    Most of these are marked as skip or expectedFailure due to various
-    bugs
-    noted on the tests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687522
-
- gi/overrides/GObject.py         |  15 +-
- tests/test_object_marshaling.py | 540
- ++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 550 insertions(+), 5 deletions(-)
-
-commit 73a83186329ede7702501d5bc49df269482461e4
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Jan 30 17:48:12 2013 +0100
-
-    Cosmetic fix to last patch
-
- gi/pygi-argument.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-commit 9e0c41509d62e8df7d0d82608a8be75f3defe05c
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Fri Jan 25 13:05:18 2013 +0800
-
-    gi/pygi-info.c, gi/pygi-repository.c: Deal with C99isms
-
-    Drop the array forward static declarations. They are not necessary
-    and are not
-    valid in C89.
-
-    Also move declarations of variables to the top of their respective
-    blocks.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692856
-
- gi/pygi-info.c       | 18 ++++++++++--------
- gi/pygi-repository.c |  2 --
- 2 files changed, 10 insertions(+), 10 deletions(-)
-
-commit 2e7c458ef6377a872043634b47737ef12eed744a
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Fri Jan 25 13:00:48 2013 +0800
-
-    Move variable declaration to top of blocks (C99ism)
-
-    Move variable declarations to the top of their respective blocks,
-    so that these
-    code will build under C89 compilers such as Visual C++.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692856
-
- gi/pygi-argument.c        | 10 ++++++----
- gi/pygi-closure.c         | 23 +++++++++++++++--------
- gi/pygi-invoke.c          |  3 ++-
- gi/pygi-marshal-cleanup.c |  3 ++-
- gi/pygi-property.c        |  3 ++-
- 5 files changed, 27 insertions(+), 15 deletions(-)
-
-commit 20fc5aa7514215fc7807adceb603d17f7943304a
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Fri Jan 25 12:58:26 2013 +0800
-
-    gi/pygobject-external.h: Remove GCCism
-
-    We can use G_GNUC_UNUSED from GLib that does the same purpose of
-    __attribute__ ( (unused)) when we are using a GCC that provides this.
-
-    The GLib headers that defines that macro should have already been
-    included
-    before this header is included (due to use of gboolean).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692856
-
- gi/pygobject-external.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 5d2f453f3fdb167a4b4a833011ae777bfd228eb9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 30 14:59:11 2013 +0100
-
-    tests: Update test_double() after e65c1248
-
-    Commit e65c1248 introduced support for NaN and Â±inf as valid
-    float values,
-    rendering the "expect ValueError on 2*double" check broken. Just
-    remove it.
-
- tests/test_everything.py | 1 -
- 1 file changed, 1 deletion(-)
-
-commit b8bf4ec6c2478275dc9c813946a90b82ded6d9ce
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 23 07:14:16 2013 +0100
-
-    Do not immediately initialize Gdk and Gtk on import
-
-    Raising an exception if Gdk/Gtk cannot be imported makes it
-    impossible to
-    merely import a module for e. g. nosetests without actually running
-    it.
-
-    Programs who want to provide a proper error message should check
-    Gtk.initialized explicitly after importing. Check initialized
-    status in
-    Window.__init__() instead to provide a reasonably early error message
-    for most
-    programs.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692300
-
- gi/overrides/Gdk.py | 2 --
- gi/overrides/Gtk.py | 5 +++--
- 2 files changed, 3 insertions(+), 4 deletions(-)
-
-commit 93d5cc2986cb3d3d979694b1beb1719d2d8fed53
-Author: Chun-wei Fan <fanchunwei@src.gnome.org>
-Date:   Fri Jan 25 12:49:18 2013 +0800
-
-    gi/overrides/Glib.py: Fix running on Windows/non-Unix
-
-    The definition of self._signal_source uses a Unix-specific GLib
-    API, which
-    does not exist or have a direct equivilant on Windows.
-
-    Only define and use that variable when we aren't on Windows.
-
- gi/overrides/GLib.py | 18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
-
-commit e65c124893ceaa9c97eb4c8c743fbeb756b9a6e6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 23 14:56:02 2013 +0100
-
-    Accept Â±inf and NaN as float and double values
-
-    Also fix the broken error message when a float value is out of range.
-    PyErr_Format() does not support float macros.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=692381
-
- gi/pygi-marshal-from-py.c | 37 +++++++++++++++++++------------------
- tests/test_gobject.py     | 14 ++++++++++++++
- 2 files changed, 33 insertions(+), 18 deletions(-)
-
-commit a52245381fab3c2aebd330cc9c5e717a93c9607d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 23 14:28:42 2013 +0100
-
-    Fix repr() of GLib.Variant
-
-    When using a standard constructor like GLib.Variant.new_*(), the
-    object does
-    not have a format_string property, and previously repr() would
-    crash. Fall back
-    to get_type_string() instead.
-
-    Also drop the unintended type annotations in repr().
-
- gi/overrides/GLib.py         |  6 +++++-
- tests/test_overrides_glib.py | 15 ++++++++++++++-
- 2 files changed, 19 insertions(+), 2 deletions(-)
-
-commit 2270cf15012005362dc47456213c5d9e7f6ed28a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 23 14:14:29 2013 +0100
-
-    Fix gtk-demo for Python 3
-
-    It was crashing with
-
-       package = __import__(packagename, globals(), locals(),
-       [modulename], -1)
-      ValueError: level must be >= 0
-
-    Using level zero works with both Python 2 and 3.
-
- demos/gtk-demo/gtk-demo.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b24d07577da1e17c8e27f758fc1a23d7f2d0f668
-Author: Colin Walters <walters@verbum.org>
-Date:   Tue Jan 22 10:49:57 2013 -0500
-
-    build: Add autogen.sh to EXTRA_DIST
-
-    So downstreams that patch the autotools can use it.
-
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit ed7fb99efa81854d947ae548d41a03f5275c5884
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jan 17 08:23:02 2013 +0100
-
-    Define GObject.TYPE_VALUE gtype constant
-
- gi/overrides/GObject.py | 4 +++-
- tests/test_gobject.py   | 4 ++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-commit fd32acdd97f49f086a8ad5cf2b65862c4e6ccc44
-Author: Olivier Crête <olivier.crete@collabora.com>
-Date:   Mon Sep 17 15:37:04 2012 -0400
-
-    gobject: Go through introspection on property setting
-
-    Consider introspected properties in object.set_property().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684062
-
- gi/_gobject/pygobject.c  | 18 +++++++++++++++++-
- tests/test_properties.py | 13 ++++++++++---
- 2 files changed, 27 insertions(+), 4 deletions(-)
-
-commit 9a2060f26c2cc2f9ef79ab6fb9f512c317004856
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Tue Jan 15 20:04:46 2013 -0600
-
-    Clean up caller-allocated GValues and their memory
-
-    When space for a GValue is allocated by the caller (as in
-    gtk_tree_model_get_value), we need to free the space allocated for the
-    value along with its contents. The GValue is not needed after
-    Pyg_value_as_pyobject is called, so call _cleanup_caller_allocates and
-    have it unset the value and deallocate the memory.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691820
-
- gi/pygi-marshal-cleanup.c | 20 ++++++++++++++++++--
- 1 file changed, 18 insertions(+), 2 deletions(-)
-
-commit 45b7975d0a3d78f01f1112ae7b3f4208f15694d8
-Author: Dmitry Shachnev <mitya57@ubuntu.com>
-Date:   Wed Jan 16 13:44:42 2013 +0400
-
-    tests: define correct unittest.skipIf for python 2.6
-
- tests/runtests.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 4706cd686ea1b25260c9ecc77abd324d6e4cf505
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 16 09:17:13 2013 +0100
-
-    tests: More robust tree view realization
-
-    With current GNOME git head, the Gtk.TreeViews were not realized
-    enough any
-    more to receive property values. Put them into a Gtk.Dialog now and
-    show it to
-    ensure that they are realized.
-
- tests/test_overrides_gtk.py | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-commit 90c6f596df2a96f9c8059ae9157bc467a80b7574
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 15 10:42:49 2013 +0100
-
-    Drop deprecated g_thread_create()
-
-    Replace with g_thread_new(). This is available with glib >= 2.32,
-    and we
-    already require >= 2.34.
-
- tests/test-thread.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 98504273dead9eade6e53c2297bcaec7bea6265a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 15 10:37:52 2013 +0100
-
-    Drop usage of deprecated GStaticPrivate
-
-    Replace with GPrivate.
-
- gi/_gobject/gobjectmodule.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 655e2eece14f5de3baf4505f524d17484b8b5a75
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 15 10:29:47 2013 +0100
-
-    Don't call g_type_init() with glib >= 2.35.x
-
-    This fixes a deprecation warning.
-
- gi/_gobject/gobjectmodule.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 206e736380ba798c68de09f661d75c8e27451117
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 15 09:47:11 2013 +0100
-
-    Use GNOME_COMPILE_WARNINGS from gnome-common
-
-    As we are now using gnome-common anyway for the code coverage macro,
-    also use
-    GNOME_COMPILE_WARNINGS, and only manually specify the extra options
-    that we
-    want beyond that.
-
-    This also enables -Wstrict-prototypes.
-
- configure.ac | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-commit 137679426ff39507e15f08e9e6428d851fee06b7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 15 09:46:01 2013 +0100
-
-    Fix function prototypes and static functions
-
-    These cause errors/warnings with -Wstrict-prototypes.
-
- gi/_glib/pyglib-python-compat.h | 2 ++
- gi/pygi-foreign.c               | 2 +-
- gi/pygi-marshal-from-py.c       | 4 ++--
- gi/pygi-marshal-to-py.c         | 4 ++--
- gi/pygi-source.c                | 2 +-
- gi/pygi-source.h                | 2 +-
- 6 files changed, 9 insertions(+), 7 deletions(-)
-
-commit d47927f1701a11aec8566425f22688c5df73d7f2
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 17:38:23 2013 +0100
-
-    configure.ac: post-release bump to 3.7.5
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit bd6da84a4aec74e47f5d70e8ed18695c37e746c6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 17:30:48 2013 +0100
-
-    release 3.7.4
-
- NEWS | 38 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 38 insertions(+)
-
-commit c90ef9dfac7dd51ec82c99c3605915996bea0f73
-Author: Simonas Kazlauskas <simonas@kazlauskas.me>
-Date:   Tue Dec 4 15:45:00 2012 +0200
-
-    Allow setting values through GtkTreeModelFilter
-
-    Previously, trying to set a value through filter throwed an exception
-    that the
-    model has no set_value() method. You had to first retrieve the
-    deepest child
-    model and set value to it.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=689624
-
- gi/overrides/Gtk.py         |  5 +++++
- tests/test_overrides_gtk.py | 11 +++++++++++
- 2 files changed, 16 insertions(+)
-
-commit b092630efc691a6f7ae94ae896193254f5a961a6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 12:37:18 2013 +0100
-
-    tests: Add (failing) test case for GParamSpec arguments
-
-    This reproduces
-    https://bugzilla.gnome.org/show_bug.cgi?id=682355
-
- tests/test_gi.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 52d84b5da7f9fd4f65faea4e6fe3d250f937a208
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 12:20:27 2013 +0100
-
-    tests: Skip struct string member tests with g-i 1.34
-
-    We still support building against gobject-introspection 1.34, so
-    skip tests
-    which do not work with that version yet.
-
- tests/test_gi.py | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-commit f9429192cb1002725a11a75a7b8f9300375b9caf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 12:15:27 2013 +0100
-
-    Support GParamSpec signal arguments from Python
-
-    In pyg_value_from_pyobject(), recognize both the real GI
-    GObject.ParamSpec type
-    as well as the statically wrapped _gobject.GParamSpec type.
-
-    This fixes marshalling GObject.ParamSpec signal/vfunc arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683099
-
- gi/_gobject/pygtype.c    |  6 +++++-
- tests/test_signal.py     | 12 ++++++++++++
- tests/testhelpermodule.c | 13 +++++++++++++
- 3 files changed, 30 insertions(+), 1 deletion(-)
-
-commit 99f72925c7de76611f7592bce9d8217a9ff46809
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 11:48:11 2013 +0100
-
-    pygobject_emit(): Fix cleanup on error
-
-    Dot not try to unset GValues which have not been initialized yet,
-    when type
-    conversion fails for a parameter.
-
- gi/_gobject/pygobject.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit acef1d3266d11b2465d61185a55526df879a5c62
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Dec 31 19:01:57 2012 -0800
-
-    Add signal emission methods to TreeModel which coerce the path
-    argument
-
-    Override TreeModel row_changed, row_inserted, row_has_child_toggled,
-    row_deleted, and rows_reordered methods to accept python iterables as
-    the path parameter. This is for compatibility with pygtk and
-    consistency
-    with the rest of the TreeModel and TreePath overrides.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682933
-
- gi/overrides/Gtk.py         | 31 ++++++++++++++++++++++++++++---
- tests/test_overrides_gtk.py | 27 +++++++++++++++++++++++++++
- 2 files changed, 55 insertions(+), 3 deletions(-)
-
-commit 9cfba517e1a6dced5e66786b28ed5e101b7b4a29
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 10:36:36 2013 +0100
-
-    Simplify overrides and tests using the new GObject.Value override
-
-    The previous commit added support for constructing a GObject.Value
-    with a given
-    GType and Python object conversion. Use this to simplify the Gtk
-    override and
-    the tests that construct GValues.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=677473
-
- gi/overrides/Gtk.py         | 88
- +++------------------------------------------
- tests/test_gi.py            | 26 +++++---------
- tests/test_overrides_gtk.py |  2 +-
- tests/test_signal.py        | 12 ++-----
- 4 files changed, 17 insertions(+), 111 deletions(-)
-
-commit f62b98398177991bfdbe0b6753342e79e6cf170a
-Author: Bastian Winkler <buz@netbuz.org>
-Date:   Mon Jan 14 10:26:08 2013 +0100
-
-    Add override for GValue
-
-    Override GValue with a custom constructor and set_value()/get_value()
-    methods. This allows you to call
-
-    >>> GObject.Value(GObject.TYPE_FLOAT, 42.23)
-
-    instead of
-
-    >>> value = GObject.Value()
-    >>> value.init(GObject.TYPE_FLOAT)
-    >>> value.set_float(42.23)
-
-    This is especially useful for overrides that need to convert a Python
-    value to a expected type like G_TYPE_FLOAT.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677473
-
- gi/overrides/GObject.py | 127
- +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gobject.py   |  47 +++++++++++++++++-
- 2 files changed, 172 insertions(+), 2 deletions(-)
-
-commit dc3d21173b75232f7ea0b9913f7309486456a69d
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Thu Jan 10 15:48:30 2013 -0600
-
-    Mark caller-allocated boxed structures as having a slice allocated
-
-    When a C function takes a pointer and fills it with a boxed structure
-    (ie,
-    gtk_tree_store_insert_with_values), pygi should deallocate the slice
-    when the
-    box is no longer being used.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=699501
-
- gi/pygi-marshal-to-py.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 0c496d230fee7fd3ada90ee9af10e0bc1e29ee12
-Author: Olivier Crête <olivier.crete@collabora.com>
-Date:   Fri Sep 14 21:31:32 2012 -0400
-
-    pygi-property: Support boxed GSList/GList types
-
-    Note that this does not yet work for construct properties.
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684059
-
- gi/pygi-property.c | 10 ++++++++--
- tests/test_gi.py   | 21 +++++++++++++++++++++
- 2 files changed, 29 insertions(+), 2 deletions(-)
-
-commit 074f10d815453e58f4bee2f440c5db799add3876
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 07:48:31 2013 +0100
-
-    test_gio: Fix for Python 2
-
-    Python 2 does not yet take an "encoding" argument for str(), while
-    Python 3
-    requires it. Use a less fancy static test string instead.
-
- tests/test_gio.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 734979d0c8317201148a7e94a323225fba2d1635
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 07:40:10 2013 +0100
-
-    tests: Add missing backwards compat methods for Python 2.6
-
-    Define skipIf(), assertLess(), and assertLessEqual() for running
-    the tests with
-    Python 2.6.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691646
-
- tests/runtests.py | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-commit dc0dafd1f6ca3ebbf04210768a45587387e44551
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jan 14 07:34:46 2013 +0100
-
-    tests: Stop using assertSequenceEqual()
-
-    assertSequenceEqual() does not yet exist in Python 2.6, and is
-    not necessary
-    either as assertEqual() on sequences automatically does list
-    comparison.
-
-    Part of https://bugzilla.gnome.org/show_bug.cgi?id=691646
-
- tests/test_gtype.py  | 6 ++----
- tests/test_signal.py | 6 ++----
- 2 files changed, 4 insertions(+), 8 deletions(-)
-
-commit 0a5587b6a56d417a6703e342f153596f08cd5889
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Jan 13 18:19:51 2013 -0800
-
-    Allow setting TreeModel values to None
-
-    Change TreeModel.set_value to use an empty but initialized GValue when
-    None is used as the value argument. This allows clearing of cell data
-    which was not accessible due to auto-coercion.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684094
-
- gi/overrides/Gtk.py         | 11 ++++++++---
- tests/test_overrides_gtk.py |  8 ++++++++
- 2 files changed, 16 insertions(+), 3 deletions(-)
-
-commit 5ae129da436793478750f0dc9427a174a980e10b
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Thu Jan 10 16:42:17 2013 -0600
-
-    Set clean-up handler for marshalled arrays
-
-    Arrays did not have a cleanup handler set in some cases, resulting
-    in a leak.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691509
-
- gi/pygi-cache.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 58bd307c57d542a8f69867dea2d0a0eb51230c7b
-Author: Vadim Rutkovsky <vrutkovs@redhat.com>
-Date:   Fri Jan 11 15:41:27 2013 +0100
-
-    Support setting string fields in structs
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678401
-
- gi/pygi-info.c   |  3 ++-
- tests/test_gi.py | 16 ++++++++++++++++
- 2 files changed, 18 insertions(+), 1 deletion(-)
-
-commit f2bcaa43c1158040a8c2cbc3a2ba5070d126a410
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jan 11 14:58:44 2013 +0100
-
-    Re-enable test_gi.TestPropertiesObject.test_char test
-
-    The gobject-introspection bug got fixed:
-    https://bugzilla.gnome.org/show_bug.cgi?id=691524
-
- tests/test_gi.py | 14 +++-----------
- 1 file changed, 3 insertions(+), 11 deletions(-)
-
-commit 9a8c49087cf400e01c1f78241fa4d74b4d15f54e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jan 11 09:46:56 2013 +0100
-
-    tests: Re-enable test_callback_scope_call_array() check
-
-    Drop the expected failure from test_callback_scope_call_array()
-    and just add
-    the explicit array length arguments. While it would look cleaner to
-    not pass
-    them, it is probably not worth breaking the API for this.
-
- tests/test_everything.py | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-commit 609636424b5f9b659e99a4bb53a48c165187c430
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jan 11 09:13:36 2013 +0100
-
-    Permit plain integers for "gchar" values
-
-    Similar to guchar/guint8, allow plain integers (withing correct
-    boundaries) as
-    values for gchar/gint8 types.
-
-    This is covered by the test_gi.TestPropertiesObject.test_char
-    test when
-    removing the "expected failure" flag.
-
- gi/_gobject/pygtype.c | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-commit a558d3d3a9274aeccfc54705bf5effdf71dee06b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jan 11 09:09:41 2013 +0100
-
-    Allow single byte values for int8 types
-
-    When fixing gobject-introspection to consider "gchar" as signed (see
-    https://bugzilla.gnome.org/show_bug.cgi?id=691524), we must also
-    permit a
-    single-element "bytes" array as a valid value for int8, not just
-    for uint8.
-
-    This is caught by the test_overrides_gtk.TestTreeModel.test_tree_store
-    test.
-
- gi/pygi-argument.c        |  4 ++--
- gi/pygi-marshal-from-py.c | 34 +++++++++++++++++++++-------------
- 2 files changed, 23 insertions(+), 15 deletions(-)
-
-commit aa7f6cd12fe403acb2cffc7890724af7abb9b990
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Thu Jan 10 14:11:56 2013 -0600
-
-    Fix invalid memory access handling errors when registering an
-    enum type
-
-    Don't free the name until we are done with it.
-
- gi/gimodule.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit ecd235959317d39b6d598662c00829e0ec717b17
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jan 10 16:42:46 2013 +0100
-
-    Fix (out) arguments in callbacks
-
-    Do not ignore the first argument in _pygi_closure_set_out_arguments().
-    Presumably that has been done to skip over "self", but callbacks
-    are not
-    required to have a self argument. As self is never (out), we can
-    safely include
-    it in the loop.
-
- gi/pygi-closure.c | 2 +-
- tests/test_gi.py  | 4 ----
- 2 files changed, 1 insertion(+), 5 deletions(-)
-
-commit d8e241e24a816691acbd592775b73defd9aa4f44
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jan 10 15:14:05 2013 +0100
-
-    Fix C to Python marshalling of struct pointer arrays
-
-    Do not treat an array of pointers to values like an array of values on
-    marshalling from C. This makes the test_array_boxed_struct_return()
-    test case
-    work.
-
- gi/pygi-marshal-to-py.c | 5 +++--
- tests/test_gi.py        | 2 --
- 2 files changed, 3 insertions(+), 4 deletions(-)
-
-commit 60544b02f6f98c0b212625ae83b94a4c6debddeb
-Author: Simonas Kazlauskas <simonas@kazlauskas.me>
-Date:   Tue Jan 8 23:22:54 2013 +0200
-
-    Add tests for GFile
-
-    Most notably this commit contains a test for
-    Gio.File.replace_contents_async(),
-    which currently fails. Disable the tests for now as it breaks the
-    other tests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690525
-
- tests/test_gio.py | 64
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 64 insertions(+)
-
-commit 118c5eaad045580455515876ba73b9537a8468b4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jan 10 13:56:11 2013 +0100
-
-    Rename test_overrides_gio.py to test_gio.py
-
-    As we want to add more tests for non-overridden API.
-
- tests/Makefile.am                            | 2 +-
- tests/{test_overrides_gio.py => test_gio.py} | 0
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-commit 8117e6bce73581e89211371708ff7d5de7d870d4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jan 10 12:13:16 2013 +0100
-
-    Don't let Property.setter() method names define property names
-
-    Defining property names in install_properties() is too late when using
-    @propname.setter decorators; their method names don't define a
-    property name,
-    nor are they even required to be a valid property identifier.
-
-    So change the logic to already fix the property name when using
-    a setter
-    decorator and use that instead of the member name in
-    install_properties().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688971
-
- gi/_gobject/propertyhelper.py | 29 ++++++++++++++++++++++-------
- tests/test_properties.py      | 18 ++++++++++++++++++
- 2 files changed, 40 insertions(+), 7 deletions(-)
-
-commit c0bd060521cc1b481995648dbe286b7e2f9ecd80
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jan 9 10:39:36 2013 +0100
-
-    tests: Force UTF-8 file name encoding
-
-    The test_gi.TestFilename tests fail if the environment specifies
-    a non-UTF8
-    file name encoding. Force it to "UTF-8" for the tests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691355
-
- tests/runtests.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit c02a00ae9599a661076630b21b7e24e78fb88c29
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jan 8 16:56:40 2013 +0100
-
-    Use g-i stack allocation API
-
-    Where possible, i. e. when not keeping references across functions,
-    use the
-    _load_() methods instead of the _get_() ones from
-    gobject-introspection, which
-    is faster and less prone to memory leaks:
-
-      g_callable_info_get_arg () â†’ g_callable_info_load_arg ()
-      g_callable_info_get_return_type() â†’
-      g_callable_info_load_return_type ()
-      g_arg_info_get_type() â†’ g_arg_info_load_type ()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=615982
-
- gi/pygi-argument.c | 16 ++++------
- gi/pygi-closure.c  | 88
- ++++++++++++++++++++++++------------------------------
- 2 files changed, 45 insertions(+), 59 deletions(-)
-
-commit 23d1f14f553069740465c82eaa937b877c41e0cb
-Author: Ray Strode <rstrode@redhat.com>
-Date:   Wed Dec 19 13:04:32 2012 -0500
-
-    pyg_value_from_pyobject: support GArray
-
-    This commit adds support for marshalling a python list (or other
-    sequence)
-    returned from signal handlers to GArray, if necessary.
-
-    This parallels the implementation written to marshal to (the now
-    deprecated)
-    GValueArray.
-
-    This fixes a crash in rhythmbox as seen downstream here:
-    https://bugzilla.redhat.com/show_bug.cgi?id=872851
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690514
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/pygtype.c    | 60
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_everything.py | 22 ++++++++++++++++++
- 2 files changed, 82 insertions(+)
-
-commit 2089dbb117bae769b0303411c2630b6f86dc7d2d
-Author: Marko Lindqvist <cazfi74@gmail.com>
-Date:   Fri Jan 4 07:01:29 2013 +0100
-
-    Fix obsolete automake macros
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=691101
-
- configure.ac | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 6c02ab0ad720780f176192fdc6372aaa178812fd
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Dec 31 02:53:07 2012 -0800
-
-    Change dynamic enum and flag gtype creation to use namespaced naming
-
-    Use the combination of g_base_info_get_namespace and
-    g_base_info_get_name
-    as the name for registering enum and flag types with glib through
-    g_enum_register_static and g_flags_register_static. This avoids
-    conflicts
-    with types like GLib.SeekType and Gst.SeekType. Add better exceptions
-    and memory cleanup for invalid registration problems.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690455
-
- gi/_gobject/pygenum.c |  6 ++--
- gi/gimodule.c         | 78
- ++++++++++++++++++++++++++++++++++++++++++++-------
- tests/test_gi.py      | 35 +++++++++++++++++++++++
- 3 files changed, 106 insertions(+), 13 deletions(-)
-
-commit 692c80e11a05e2fb0515580acb22fd6fe65cede1
-Author: Dan Horák <dan@danny.cz>
-Date:   Fri Dec 28 22:12:32 2012 +0100
-
-    Fix test for GBytes.compare()
-
-    The result of the compare method is defined as equal, less than or
-    greater than zero
-    and the test must match to that. The underlaying memcmp() function
-    can return other
-    values than -1, 0 and 1. For example on architectures where it is
-    implemented directly
-    via a CPU instruction like on s390(x) where I can see -2 as a result
-    instead of the
-    "expected" -1.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690837
-
- tests/test_gi.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 948dbcb223249a08f4398d4ad8861e92e3de0dfa
-Author: Jonathan Ballet <jon@multani.info>
-Date:   Thu Dec 27 16:04:51 2012 +0100
-
-    Fix Gtk.UIManager.add_ui_from_string() override for non-ASCII chars
-
-    The length argument is the size of the buffer in bytes, not in
-    characters.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690329
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py         | 2 +-
- tests/test_overrides_gtk.py | 7 +++++++
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-commit 53bc12a87da824cbfb006a4fd65731edec12ecc7
-Author: Mike Gorse <mgorse@suse.com>
-Date:   Wed Dec 19 20:51:03 2012 -0500
-
-    Don't dup strings before passing them to type registration functions
-
-    Strings passed to g_enum_register_static and g_flags_register_static
-    are
-    eventually passed to g_quark_from_string, which dups the string
-    passed to it if
-    needed and does not take ownership of it, so passing in a
-    dynamically-allocated
-    string without freeing it results in a small leak.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690532
-
- gi/gimodule.c | 2 --
- 1 file changed, 2 deletions(-)
-
-commit 9454c01f2b1b82d43eea0f72fe9a28ef50065fc9
-Author: Carlos Garnacho <carlos@lanedo.com>
-Date:   Tue Dec 18 22:47:09 2012 +0100
-
-    Fix marshalling of arrays of boxed struct values
-
-    This fixes methods like gtk_selection_set_with_data().  In such cases
-    data is passed as an array of struct pointers, so it must be converted
-    to an array of structs.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=656312
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-marshal-from-py.c |  6 ++++++
- tests/test_gi.py          | 12 ++++++++++++
- 2 files changed, 18 insertions(+)
-
-commit 231d5a7cfc73518b4e2b0c926d4c1ce9a804797e
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Dec 18 02:03:41 2012 -0800
-
-    Add reference counting tests for Object.bind_property
-
-    Add tests which ensure transform callbacks and user_data
-    are propertly ref-counted.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690397
-
- tests/test_gobject.py | 40 ++++++++++++++++++++++++++++++++++++----
- 1 file changed, 36 insertions(+), 4 deletions(-)
-
-commit c29e11812d176b1f057074c9bab22c9614ae4f8c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Dec 18 11:43:04 2012 +0100
-
-    testhelpermodule.c: Do not unref called method
-
-    In _wrap_test_gerror_exception(), do not unref the method
-    arguments. This
-    causes a crash when being run with the stricter refcounting/memory
-    checks with
-    debug-enabled Python builds.
-
- tests/testhelpermodule.c | 1 -
- 1 file changed, 1 deletion(-)
-
-commit ff0d9106bcd02a6b2c67cc3722481218c599a9f4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 23:20:50 2012 +0100
-
-    configure.ac: post-release bump to 3.7.4
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 061b23d14386c0e54d2c3af113554231bbe85f16
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 23:18:31 2012 +0100
-
-    release 3.7.3
-
- NEWS | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit a242f02823a63c9dca5d0b1ce84b031221053690
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 23:11:29 2012 +0100
-
-    Add (failing) tests for callbacks with out arguments
-
-    Most of these fail and need marshalling fixes.
-
- tests/test_gi.py | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
-
-commit 449b1ef0d94450c1e457770a093abd6d6c9e6291
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 22:50:59 2012 +0100
-
-    Add tests for internal API
-
-    These cover functions like pygobject_new(), pyg_value_from_pyobject()
-    and
-    pyg_value_as_pyobject() that are wrapped by testhelpermodule.c. With
-    that these
-    functions can be tested in isolation without the whole GI stack
-    around them.
-
- tests/Makefile.am          |  1 +
- tests/test_internal_api.py | 73
- ++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 74 insertions(+)
-
-commit e44312139426f51e576ef9e880819542cc224383
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 18:02:15 2012 +0100
-
-    Add support for caller-allocated GArray out arguments
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=690041
-
- gi/pygi-cache.c  |  2 +-
- gi/pygi-invoke.c | 57
- ++++++++++++++++++++++++++++++--------------------------
- tests/test_gi.py |  5 +++--
- 3 files changed, 35 insertions(+), 29 deletions(-)
-
-commit f262320ac22b48a9d007c425633f3ca426b7fb4a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 16:18:24 2012 +0100
-
-    Add (failing) test for caller-allocated GArray return value
-
-    Call new GIMarshallingTests.garray_utf8_full_out_caller_allocated()
-    function
-    which reproduces https://bugzilla.gnome.org/show_bug.cgi?id=690041.
-
-    The test is failing and causing a segfault right now, so disable it
-    until this
-    actually works.
-
- tests/test_gi.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 1cb4c30c3cf19690210010d39b6272965f489c58
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Dec 17 15:56:44 2012 +0100
-
-    GLib overrides: Avoid calling deprecated GLib.unix_signal_add_full()
-
-    glib 2.35.x fixed the API to be GLib.unix_signal_add(). Call the
-    modern API if
-    available, but fall back to GLib.unix_signal_add_full() until we
-    depend on glib
-    2.36.
-
- gi/overrides/GLib.py | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-commit 945263a89c3adee61f95d4211cf13b254ad6d51f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 30 14:17:18 2012 +0100
-
-    Re-support calling GLib.io_add_watch with an fd or Python file
-
-    This does not strictly adhere to the GLib API, but it's very
-    convenient and
-    unlike the other modes, does not change the number or order of
-    arguments. So
-    let's keep support for this and drop the deprecation warning.
-
- gi/overrides/GLib.py | 9 +++------
- 1 file changed, 3 insertions(+), 6 deletions(-)
-
-commit 263b9f97e748746e1d26847a82a4d6e53a42798a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 30 09:04:20 2012 +0100
-
-    Robustify test_glib.TestGLib.test_io_add_watch_pyfile
-
-    Use a longer timeout to avoid races on slow architectures, and cut
-    the main
-    loop as soon as we received all expected events.
-
- tests/test_glib.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit 8e4e822cb273db4eb7e6e40f4739eeebee00798a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 30 08:44:56 2012 +0100
-
-    test_overrides_gtk: Ignore GVFS warnings from FileChooserDialog
-
-    Do not cause GVFS warnings from Gtk.FileChooserDialog (which may
-    concern
-    unavailable monitor backends in the test environment) to fail
-    the tests.
-
- tests/test_overrides_gtk.py | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-commit d47283936b4c0b5e8b6ede8886c4badbf6d6e694
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 16:45:49 2012 +0100
-
-    pygtkcompat: Work around IndexError on large flags
-
-    On 32 bit systems pygtkcompat currently fails with
-
-      File "pygtkcompat/pygtkcompat.py", line 74, in _install_enums
-        name = flag.value_names[-1].replace(modname + '_', '')
-    IndexError: cannot fit 'int' into an index-sized integer
-
-    on 32 bit systems as some flags in Gdk are too large to fit into a
-    32 bit
-    "long". Work around this crash until this gets fixed properly
-    (marked as
-    FIXME).
-
- pygtkcompat/pygtkcompat.py | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-commit 3fa31b1a7936c556e76bd8a42030567c6a867e0d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 14:11:29 2012 +0100
-
-    Fix pyg_value_from_pyobject() range check for uint
-
-    We cannot use PYGLIB_PyLong_AsLong() for the range check, as on 32
-    bit machines
-    this overflows large uints. Use PyLong_AsLongLong() separately to
-    check for
-    negative values, and PyLong_AsUnsignedLong() for the actual
-    conversion.
-
- gi/_gobject/pygtype.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-commit 05d767a602571805e80099f1db47ad4164575c53
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 13:30:56 2012 +0100
-
-    Fix tests to work with g-i 1.34.2
-
-    Do not try to call GIMarshallingTests API which isn't present
-    when running
-    against g-i 1.34.2. This can be dropped when the g-i dependency gets
-    bumped to
-    1.35.x.
-
- tests/test_gi.py | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-commit a107c928ef85b4e3b9075a408774b74879586029
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 13:13:14 2012 +0100
-
-    Fix wrong refcount for GVariant property defaults
-
-    Drop the bogus DECREF for the GVariant default argument, as we need
-    to keep it
-    around in the class. Otherwise the refcount drops to zero, and
-    the next
-    garbage collection run causes segfaults.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=689267
-
- gi/_gobject/gobjectmodule.c | 1 -
- 1 file changed, 1 deletion(-)
-
-commit 9b7dd1318cf540d5f8d03655da03534ed72707ec
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 11:44:22 2012 +0100
-
-    test_gi: Fix TestFilename failure under C locale
-
- tests/test_gi.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 37ab227555ba8628b4fa99aa286bd046208745ed
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 11:16:26 2012 +0100
-
-    Fix array arguments on 32 bit
-
-    In _pygi_argument_from_object() we never put the actual element
-    GType into the
-    constructed array. The array contains GIArguments, or bytes in the
-    case of
-    passing a string as an array.
-
-    This happened to work on 64 bit machines where GIArgument and char*
-    have the
-    same size, but not on 32 bit machines
-    (test_gi.TestPropertiesObject.test_strv
-    fails there).
-
- gi/pygi-argument.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit 7bd852fc82f92dac8723e18b61a56ed1b1a1b81c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 10:20:27 2012 +0100
-
-    test_gi: Disable failing check in test_module_name()
-
-    When calling this under some conditions, such as
-
-      TEST_NAMES='test_thread test_gi.TestOverrides'
-
-    then the module name of GObject.InitiallyUnowned comes out as
-    "importlib._bootstrap" instead of "gi.repository.GObject". To be
-    investigated.
-    Add a couple of other tests to ensure that it is not broken in
-    general.
-
- tests/test_gi.py | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-commit 94a6cc93a104b22dcee2ac73cae36b83a4b5d9c1
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 09:40:32 2012 +0100
-
-    test_gdbus: Drop failure if timeout=0 works differently
-
-    In some test environments we do not actually get a timeout exceptions
-    with
-    timeout=0, but a different error message. So only ensure that we
-    get the right
-    kind of error.
-
- tests/test_gdbus.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit c3b2f5fee573aa03a8a9563efbbbc1bc4fa25da7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 29 09:29:05 2012 +0100
-
-    test_glib: Drop some assumptions about XDG dirs
-
-    Some directories do not exist in minimal test environments, and this
-    is not
-    important for testing that calling these GLib functions works.
-
- tests/test_glib.py | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-commit e45c690bc83b6d513887649de88965a9752e316d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 28 12:20:31 2012 +0100
-
-    Add backwards compatible API for GLib.unix_signal_add_full()
-
-    This was renamed to GLib.unix_signal_add() in
-    http://git.gnome.org/browse/glib/commit/?id=fca30c3e165
-
-    Provide a backwards compatible shim with a deprecation message.
-
- gi/overrides/GLib.py | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 00b9ea32d766ae486249f402d9dee511fd9f53a9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 26 08:11:36 2012 +0100
-
-    Drop MININT64/MAXUINT64 workaround
-
-    g-i 1.34.2 properly handles 64 bit constants now, so bug 685022 has
-    been fixed
-    properly now. Drop the workaround in the overrides to manually
-    set these
-    constants.
-
- gi/overrides/GLib.py | 7 -------
- 1 file changed, 7 deletions(-)
-
-commit d16604f64d25d18409270d7537fc993113b65c19
-Author: Simonas Kazlauskas <simonas@kazlauskas.me>
-Date:   Fri Nov 23 19:57:56 2012 +0200
-
-    Fix maximum and minimum ranges of TYPE_(U)INT64 properties
-
-    In corner case where properties use values 2 ** 62 < Â±x < 2 ** 63 for
-    TYPE_INT64 and 2 ** 63 < x < 2 ** 64 for TYPE_UINT64 they will raise
-    warnings even tough values are valid.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688949
-
- gi/_gobject/propertyhelper.py |  6 +++---
- tests/test_properties.py      | 11 ++++-------
- 2 files changed, 7 insertions(+), 10 deletions(-)
-
-commit 93e9e309d8ba54884881cfca203e8bc355c2727e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 21 12:58:07 2012 +0100
-
-    Test virtual methods with in and out arguments
-
-    ... and both caller and callee out argument allocation.
-
-    This came up in https://bugzilla.gnome.org/show_bug.cgi?id=688783
-
- tests/test_gi.py | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-commit 25a9cfb043448efbab9168ef66f852cc34b9909b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 20 07:00:44 2012 +0100
-
-    Ship pygi-convert.sh in tarballs
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688697
-
- Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 4a8d31e6f56a3f1360bdb880ffd9a6eb139c02d8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 15:25:38 2012 +0100
-
-    Post-release version bump to 3.7.3
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit d0ed62afbc4cada0bf6abc4f8754e5a8d73036e4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 15:13:28 2012 +0100
-
-    release 3.7.2
-
- NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 47 insertions(+)
-
-commit 29dc7425dd7584411b52ef07b50f929ed119a000
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 14:37:02 2012 +0100
-
-    Fix distcheck
-
-    Commit e617f76e forgot to rename the file in EXTRA_DIST
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 567aae6e7c56bb89f53fcfccb1b0bc732f85b847
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 14:34:13 2012 +0100
-
-    tests: Fix unicode vs. str issues in Python 2
-
-    Some of the tests assumed a system default encoding of UTF-8, which
-    is not true
-    in Python 2 unless pygtkcompat is imported. Commit e617f76 uncovered
-    this.
-
- tests/test_gi.py        |  8 ++++----
- tests/test_iochannel.py | 16 +++++++++-------
- 2 files changed, 13 insertions(+), 11 deletions(-)
-
-commit 509e5ac1a6dd8504e89c33c559fe4f72156a1ddf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 14:20:56 2012 +0100
-
-    tests: Fix previous commit to fail properly on test failures
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e617f76e5b0c301c3ae92e1091aa86792de4d8e8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 14:09:14 2012 +0100
-
-    tests: Run pygtkcompat tests separately
-
-    pygtkcompat changes the global namespace, in particular patching
-    Gdk and Gtk
-    overrides. Run the tests in a separate process so that the main
-    tests are not
-    potentially affected by the pygtkcompat test.
-
-    runtests.py runs all tests/test_*.py by default, so rename to
-    compat_test_pygtk.py and run that explicitly after successfully
-    running the
-    main tests.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=688219
-
- tests/Makefile.am                                   | 3 +++
- tests/{test_pygtkcompat.py => compat_test_pygtk.py} | 0
- 2 files changed, 3 insertions(+)
-
-commit 8180b8092f99b7c9f0dee1742418efdbd23ab330
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Thu Nov 15 02:51:52 2012 -0800
-
-    Move pygtkcompat into sibling package of gi
-
-    Move the pygtkcompat module out of the gi package and into
-    a sibling package as follows:
-
-    pygobject/
-      gi/
-      pygtkcompat/
-
-    This allows for pygtkcompat to grow without affecting the gi package.
-    Add deprecation message to gi/pygtkcompat.py
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688219
-
- Makefile.am                |   2 +-
- configure.ac               |   1 +
- gi/pygtkcompat.py          | 524
- +++------------------------------------------
- pygtkcompat/Makefile.am    |  15 ++
- pygtkcompat/__init__.py    |  20 ++
- pygtkcompat/pygtkcompat.py | 501
- +++++++++++++++++++++++++++++++++++++++++++
- tests/test_pygtkcompat.py  |   6 +-
- 7 files changed, 565 insertions(+), 504 deletions(-)
-
-commit f736694d09e9d0fca4769d9f1f34ec34e6354d87
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 13:59:20 2012 +0100
-
-    Bump g-i dependency to >= 1.34.2
-
-    We need this for updated GLib annotations and new test API.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f6c994c76cd8010460b76bf455e1a341348d735b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 19 10:39:26 2012 +0100
-
-    test_gi: Fix failing tests with g-i 1.34.x
-
-    Skip tests which require g-i test API from 1.35.x when building
-    with g-i
-    1.34.x.
-
- tests/test_gi.py | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit 8ce0d028fe79e2ce52cfecbb682afba6651a7a70
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 11:57:21 2012 +0100
-
-    test_gi: Add tests for type "filename"
-
- tests/test_gi.py | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
-
-commit 3408a151e49d9520f54ad9bc04f620c7777125ec
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 11:09:33 2012 +0100
-
-    Drop foreign GVariant registration/support
-
-    This is dead code. We have tests for GVariant in and out method
-    arguments,
-    callback arguments and return values, properties, etc to ensure that
-    this stays
-    working.
-
- gi/Makefile.am             |  2 --
- gi/pygi-foreign-gvariant.c | 63
- ----------------------------------------------
- gi/pygi-foreign-gvariant.h | 41 ------------------------------
- gi/pygi-foreign.c          |  8 +-----
- 4 files changed, 1 insertion(+), 113 deletions(-)
-
-commit 47c46d847bb69ebc139d5e0b6c609da6f27201f2
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 10:33:24 2012 +0100
-
-    test_properties.py: Fix PEP-8 errors
-
- tests/test_properties.py | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit 78f49e6253500bfa382ce6c07412613d8f7f9d7f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 10:14:36 2012 +0100
-
-    Add support for GVariant properties defined in Python
-
- gi/_gobject/gobjectmodule.c   | 13 +++++++
- gi/_gobject/propertyhelper.py | 11 ++++--
- tests/test_properties.py      | 81
- +++++++++++++++++++++++++++++++++++++------
- 3 files changed, 91 insertions(+), 14 deletions(-)
-
-commit f3b77f4304be20b7422c262b973f3eeb540c4bf6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 09:33:43 2012 +0100
-
-    pyg_value_from_pyobject(): Simplify GVariant type check
-
-    Use pyg_type_from_object_strict() instead of the much more expensive
-    and local
-    pyg_get_gvariant_type().
-
- gi/_gobject/pygtype.c | 23 +----------------------
- 1 file changed, 1 insertion(+), 22 deletions(-)
-
-commit 0c0fb8ef88a2c61cf95cd1cb96f6d5f296cad5fc
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 09:27:42 2012 +0100
-
-    test_everything: Add test for callback returning wrong type
-
-    This covers the "expected a GVariant, got something else" check in
-    pyg_value_from_pyobject().
-
- tests/test_everything.py | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-commit 84db7109dfbaf443758a5a4871ee385686d2703d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 08:42:53 2012 +0100
-
-    Add type checking to GVariant argument assignment
-
- gi/pygi-argument.c | 7 ++++++-
- tests/test_gi.py   | 5 ++---
- 2 files changed, 8 insertions(+), 4 deletions(-)
-
-commit e944caf5ff53143a98dd4a5578530996358013ec
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 08:22:35 2012 +0100
-
-    Add support for GVariant properties defined in C
-
-    Note that trying to assign a non-GVariant value to a GVariant property
-    currently crashes.
-
- gi/pygi-property.c |  6 +++++-
- tests/test_gi.py   | 21 +++++++++++++++++++++
- 2 files changed, 26 insertions(+), 1 deletion(-)
-
-commit 614cc9594cb34d92a6d4b00773427d4fb023c65e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 07:09:58 2012 +0100
-
-    test_unknown.py: Check property interface
-
-    NB that the property implementation in test-unknown.c does not
-    actually do
-    anything, we just want to assert that the properties are properly
-    registered.
-
- tests/test_unknown.py | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-commit 9d7771affcf788d251cced65da56fc2773a278b3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 07:01:24 2012 +0100
-
-    Fix previous commit for Python 2
-
- gi/pygi-foreign-cairo.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 997d4e70b2793039d916acf8921087576622152e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 06:57:04 2012 +0100
-
-    pygi-foreign-cairo.c: Use official py3cairo API
-
-    Do not clobber py3cairo's Pycairo_CAPI global variable, and use
-    import_cairo()
-    instead of our own code.
-
- gi/pygi-foreign-cairo.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit cec5d1a55347b81c1ae4ddc47ea2b4fbf964d239
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 06:47:23 2012 +0100
-
-    Drop dead code from pygi-callbacks.[hc]
-
-    _pygi_create_callback() and _pygi_scan_for_callbacks() are not
-    used anywhere.
-    _pygi_destroy_notify_create() fits better in pygi-marshal-from-py.c,
-    so move it
-    there, and drop pygi-callbacks.[hc] completely.
-
- gi/Makefile.am            |   2 -
- gi/pygi-callbacks.c       | 217
- ----------------------------------------------
- gi/pygi-callbacks.h       |  48 ----------
- gi/pygi-marshal-from-py.c |  44 ++++++++++
- gi/pygi-private.h         |   1 -
- 5 files changed, 44 insertions(+), 268 deletions(-)
-
-commit 55070cc9c98993ccda7ebcb05783fad182b2eb11
-Author: Carlos Garnacho <carlos@lanedo.com>
-Date:   Tue Nov 13 18:24:28 2012 +0100
-
-    Fix marshalling of arrays of struct pointers to Python
-
-    Fill in the pointer to the struct, not the pointer to the
-    array position. This makes the GdkAtom** argument in
-    gtk_clipboard_wait_for_targets() work.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678620
-
- gi/pygi-marshal-to-py.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit fc021516552b1720bacc4afe6b7a610c413194c4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 14 06:27:17 2012 +0100
-
-    test_atoms.py: Add test for out array
-
-    This reproduces https://bugzilla.gnome.org/show_bug.cgi?id=678620
-
- tests/test_atoms.py | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit e2790d22610aae773635d4caef2458082a307283
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 13 16:38:36 2012 +0100
-
-    Fix Gdk.Atom str()/repr() fallback
-
-    Fix regression in commit 6713618: If an atom does not have a name,
-    do not
-    recursively call our own str()/repr() methods, but just print
-    "Gdk.Atom<atom_id>".
-
- gi/overrides/Gdk.py | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-commit 9879fd41a7d8d72f8db9cadf5b1ee29fc4d5d6bf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 13 13:16:14 2012 +0100
-
-    test_gi: Stop using GLib.bytes.unref_to_array()
-
-    This method isn't safe for GI, and should be (skip)ed. Use get_data()
-    instead
-    which is safe and works fine.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=688242
-
- tests/test_gi.py | 6 ------
- 1 file changed, 6 deletions(-)
-
-commit 671361841de797ef62b59d1d7568fc3d431898c7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 13 12:56:11 2012 +0100
-
-    Fix Gdk.Atom to have a proper str() and repr()
-
-    Gdk.Atom is not proper GType'd class, so we cannot override the
-    whole class.
-    Just override its __str__() and __repr__() methods so that printing
-    atoms shows
-    something sensible. For nameless/invalid atoms, fall back to the old
-    <void at 0xdeadbeef> output to help with debugging.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678620
-
- gi/overrides/Gdk.py | 21 +++++++++++++++++++++
- tests/test_atoms.py | 12 ++++++++++++
- 2 files changed, 33 insertions(+)
-
-commit 56e62858e9c2bdde3186f5cf4e83be94fb4e5306
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 13 02:53:34 2012 -0800
-
-    Make sure g_value_set_boxed does not cause a buffer overrun with
-    GStrvs
-
-    Add NULL terminator to gchar** passed to g_value_set_boxed to
-    make sure it does not overrun memory in pygi_set_property_value_real.
-    Add MALLOC_CHECK_=3 to "make check" which prints an error and aborts
-    in these cases.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688232
-
- gi/pygi-property.c | 8 ++++++--
- tests/Makefile.am  | 1 +
- 2 files changed, 7 insertions(+), 2 deletions(-)
-
-commit ca11ec124fdd3fb2b67efdeb3ac93aaeb8b3fd83
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 12 08:35:28 2012 +0100
-
-    types.py: Fix PEP-8 violation
-
- gi/types.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit df589458358d7e7bf178dff4e6ad937a70f806e3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 11 22:26:19 2012 -0800
-
-    Fix leaks with GValues holding boxed and object types
-
-    Expose read access to PyGIBoxed.free_on_dealloc.
-    Add GObject.Value.__del__ override and call unset() to
-    correctly free reference counts.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688137
-
- gi/overrides/GObject.py |  9 +++++++++
- gi/pygi-boxed.c         | 12 ++++++++++++
- tests/test_gi.py        |  2 --
- 3 files changed, 21 insertions(+), 2 deletions(-)
-
-commit c01c95b9fb3d726385efac945f6d1270ae65d109
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 11 19:46:15 2012 -0800
-
-    Add expectantly failing unittests for GValue boxed/object leaks
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688137
-
- tests/test_gi.py | 80
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 80 insertions(+)
-
-commit 13629f5a9c9a7022f3521a3616d9ce8fa4a6161b
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Thu Aug 16 15:09:08 2012 -0700
-
-    Add doc strings showing method signatures for gi methods
-
-    Add signature based doc string to all methods pulled in from
-    introspection. For example: Gtk.SpinButton.get_icon_area.__doc__
-    get_icon_area(self, icon_pos:Gtk.EntryIconPosition) ->
-    icon_area:cairo.RectangleInt
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=681967
-
- gi/overrides/GIMarshallingTests.py |   1 +
- gi/pygi-info.c                     | 103
- +++++++++++++++++++++++++++++++++----
- gi/pygi-type.c                     |  60 +++++++++++++++++++++
- gi/pygi-type.h                     |   1 +
- gi/types.py                        |  92
- ++++++++++++++++++++++++++-------
- tests/test_gi.py                   |  30 +++++++++++
- 6 files changed, 259 insertions(+), 28 deletions(-)
-
-commit 7b7277f3cc099280f8e2d6cf6693490290fedc24
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Nov 9 19:17:03 2012 -0800
-
-    Set Property instance doc string and blurb to getter doc string
-
-    Assign Property getter __doc__ strings or explicit blurb parameters
-    to the Property instances __doc__ attribute. This clobbers the
-    default Property classes lengthy and unhelpful doc string in the case
-    of instances.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=688025
-
- gi/_gobject/propertyhelper.py | 10 +++++++---
- tests/test_properties.py      | 14 ++++++++++----
- 2 files changed, 17 insertions(+), 7 deletions(-)
-
-commit c5343d329ebb452d97afac30e4120ebab8477556
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 12 07:47:02 2012 +0100
-
-    tests: Fix for Python 2
-
-    Add quirks for Python 2's string handling, and disable the
-    Everything.test_array_gint8_in() as there seems to be no way of
-    creating a byte
-    array in Python 2.
-
- tests/test_everything.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-commit 964f33ca3a74bfb7d850f136d0844ac1551d36e9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 10 15:52:15 2012 +0100
-
-    test_everything: Add tests for more Regress data and container types
-
-    Add more tests for Regress' data and container type test API.
-
-    This detects a number of bugs, which have been marked as expected
-    failure, or
-    disabled completely for the cases where they cause crashes:
-
-     * unsigned enums with values >= 0x80000000 do not work
-     * nested ghashes in return values do not work
-     * array length arguments in callbacks are passed instead of
-     suppressed
-
- tests/test_everything.py | 156
- ++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 154 insertions(+), 2 deletions(-)
-
-commit 476e29d1ba3eda92cc021710017bce4ec252e5b5
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 18:45:22 2012 +0100
-
-    test_everything: Add tests for Regress type tests
-
-    Add tests for all the data type handling tests of g-i's Regress
-    module.
-
- tests/test_everything.py | 183
- +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 183 insertions(+)
-
-commit 0d7974396e8379b518403983d9d13629066680d7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 18:44:50 2012 +0100
-
-    Add GObject.G_MINSSIZE
-
- gi/_gobject/gobjectmodule.c | 1 +
- gi/overrides/GObject.py     | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-commit b800a6903300dbe9435ed8eb3677eb9c0536ec31
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 16:02:00 2012 +0100
-
-    Fix marshalling of GByteArrays
-
-    In _pygi_marshal_from_py_array(), set the array length after copying
-    the data
-    in the GI_TYPE_TAG_UINT8 case (which applies for GByteArrays),
-    otherwise it
-    will always come out as zero length.
-
-    Enable the TestGByteArray.test_bytearray_none_in() test case as that
-    works now.
-
- gi/pygi-marshal-from-py.c | 1 +
- tests/test_gi.py          | 3 +--
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit fa568949c46dd4b537357f1af74d1f675294b760
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 15:23:37 2012 +0100
-
-    Fix marshalling of ssize_t to smaller ints
-
-    Add missing marshalling cases for (u)int8 and (u)int16. This fixes the
-    TestArray.test_array_in test, so drop the expected failure.
-
- gi/pygi-marshal-from-py.c | 30 +++++++++++++++++++++++++++++-
- tests/test_gi.py          |  2 --
- 2 files changed, 29 insertions(+), 3 deletions(-)
-
-commit 5a5940a0a0704be8e222d4cad6cedda1ad3e0f71
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 09:37:00 2012 +0100
-
-    test_gi: Enable GByteArray constructor tests
-
-    GByteArray annotations have been fixed in GLib now, enable the
-    test case.
-
-    Drop the redundant disabled_test_bytearray_none_in_from_bytes()
-    test, as this
-    is the same as disabled_test_bytearray_none_in().
-
- tests/test_gi.py | 16 ++++------------
- 1 file changed, 4 insertions(+), 12 deletions(-)
-
-commit e2c545896ab08b1f1885b502a8472db83f193d08
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 09:11:38 2012 +0100
-
-    test_gi: Enable GBytes test cases
-
-    GBytes annotations are fixed in GLib now, enable the test case and
-    add more
-    for g_bytes_new_take() and g_bytes_{compare,equal}().
-
-    Please note that calling unref_to_array() on a GBytes object that
-    we created
-    ourselves currently causes a double free crash, so disable that part
-    for now.
-
- tests/test_gi.py | 30 +++++++++++++++++++++++++-----
- 1 file changed, 25 insertions(+), 5 deletions(-)
-
-commit 1ba4e201f86ffa28c645d7c9eea99cf31080ea43
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 08:26:29 2012 +0100
-
-    test_gi: Add missing data type tests from GIMarshallingTests
-
-    Add tests for types time_t, GBytes, GByteArray, and various variants
-    of passing
-    around GValues, flags, enums, arrays, and boxed structs. This tests
-    API which
-    is provided by GIMarshallingTests, but which we did not cover yet.
-
-    This detects a number of bugs in annotations and our
-    marshalling. These have
-    been marked as expected failure, or disabled completely for the
-    cases where
-    they cause crashes.
-
- tests/test_gi.py | 152
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 152 insertions(+)
-
-commit 0456d9c892b76ed79134230a4a8610a23c602964
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 06:44:46 2012 +0100
-
-    autogen.sh: Only enable code coverage if lcov is installed
-
-    Otherwise we break minimal build environments.
-
- autogen.sh | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-commit 76a3acebf73f930c541d0f30249f67d254f948ab
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Nov 9 06:41:58 2012 +0100
-
-    Lower autoconf dependency to 2.68 again
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit f1a5f1b92d577c542d4258e63e595d4da9acd484
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Nov 8 14:54:30 2012 +0100
-
-    Add support for lcov code coverage
-
-    Use gnome-common's new code coverage flags. Default to enabling
-    code coverage
-    in autogen.sh (but not for dist).
-
-    To use this, run "make check-code-coverage" after building.
-
- .gitignore   | 1 +
- Makefile.am  | 2 ++
- autogen.sh   | 2 +-
- configure.ac | 6 ++++++
- 4 files changed, 10 insertions(+), 1 deletion(-)
-
-commit e46af4aba220cfaf4b84a9be847f3363da556993
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 17:14:22 2012 +0100
-
-    Update documentation files
-
-    Update AUTHORS to have the current maintainers.
-
-    Update HACKING to drop Tomeu's GNOME login (this should be set in
-    ~/.ssh/config)
-
-    Update INSTALL to current upstream version.
-
- AUTHORS |  13 ++-
- HACKING |   4 +-
- INSTALL | 380
- +++++++++++++++++++++++++++++++++++++++++++---------------------
- 3 files changed, 267 insertions(+), 130 deletions(-)
-
-commit 06f5ed0ebabce34eca6bc6de80221cba6453feec
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 17:08:11 2012 +0100
-
-    Quiesce automake output
-
-    Use $(AM_V_GEN) with custom $(LINK) commands, and avoid error
-    messages about
-    existing symlinks on rebuilds.
-
- gi/Makefile.am          | 2 +-
- gi/_glib/Makefile.am    | 2 +-
- gi/_gobject/Makefile.am | 2 +-
- tests/Makefile.am       | 6 +++---
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
-commit 37270de8ead0b281a1824ff204a4aa9686a7225b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 16:50:07 2012 +0100
-
-    Drop unused variable, fail builds on those
-
-    Build with -Werror=unused-variable, as these could hide programming
-    errors or
-    incomplete refactoring, and are not platform dependent.
-
-    Drop unused variable in pyg_type_add_interfaces().
-
- configure.ac                | 1 +
- gi/_gobject/gobjectmodule.c | 1 -
- 2 files changed, 1 insertion(+), 1 deletion(-)
-
-commit 495fd98555e0c89724bb8fa9478dc096c5d61e22
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 16:37:04 2012 +0100
-
-    configure.ac: Drop maintainer mode, modernize libtool declarations
-
-    Use all arguments of AC_INIT.
-
-    AM_MAINTAINER_MODE is discouraged now, drop it.
-
-    Use LT_PREREQ and LT_INIT for libtool initialization instead of
-    the older
-    declarations.
-
-    See https://live.gnome.org/GnomeGoals/ModernAutotools
-
- configure.ac | 19 ++++++-------------
- 1 file changed, 6 insertions(+), 13 deletions(-)
-
-commit 059d0cb879fe5a7b0296ec21f3bfcb64c8596cb0
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 16:21:13 2012 +0100
-
-    autoupdate configure.ac
-
-    Result of "autoupdate", with slight manual beautification.
-
-    See https://live.gnome.org/GnomeGoals/ModernAutotools
-
- configure.ac | 21 +++++++++------------
- 1 file changed, 9 insertions(+), 12 deletions(-)
-
-commit a932446e6648ecd98c9038298b18c6fbd36c01aa
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Mon Nov 5 14:26:05 2012 -0300
-
-    pygi-convert: remove deprecated GLib â†’ GObject conversions
-
-    Using these functions from the GObject module is deprecated now,
-    they should be
-    used from GLib.
-
- pygi-convert.sh | 5 -----
- 1 file changed, 5 deletions(-)
-
-commit 21076d4b8f3ec8e253ca236fa3b20b07fde237fe
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Nov 7 03:49:24 2012 -0800
-
-    Use hasattr when testing for __info__ when finding vfuncs
-
-    Change gi.types.find_vfunc_info_in_interface to use hasattr
-    when finding vfuncs. Using '__info__' in __dict__ was skipping
-    overridden interfaces which don't directly contain the __info__.
-
- gi/types.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1b5c9b3d1499b3bc59afb297672abc671e175546
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Nov 7 12:05:24 2012 +0100
-
-    tests: Ensure that the fatal mask is always reset
-
-    On test case failures the fatal mask might be left in a wrong state,
-    so ensure
-    with "finally" that it is reset on failed tests as well, to avoid
-    hiding other
-    failures.
-
- tests/test_gi.py            | 11 ++++++-----
- tests/test_overrides_gtk.py | 33 +++++++++++++++++++--------------
- tests/test_pygtkcompat.py   |  6 ++++--
- tests/test_signal.py        |  6 ++++--
- 4 files changed, 33 insertions(+), 23 deletions(-)
-
-commit 463f660cd6bb78ae7f2ea7c70c0491e6b4744942
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Nov 6 21:34:06 2012 -0800
-
-    Replace GObject notify methods with introspection and python
-
-    Replace static context managers for freeze_notify and
-    handler_block with python context managers. Remove notify,
-    freeze_notify, thaw_notify static methods as the introspection
-    versions work fine.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=672727
-
- gi/_gobject/pygobject.c | 173
- ++----------------------------------------------
- gi/overrides/GObject.py |  61 +++++++++++++++--
- tests/test_gobject.py   |  26 ++++++--
- tests/test_signal.py    |  13 +++-
- 4 files changed, 91 insertions(+), 182 deletions(-)
-
-commit 3fcd987272a779e5ee9173a2c3a043b4b7475842
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Oct 23 13:56:32 2012 -0700
-
-    Add support for overriding GObject.Object
-
-    Shift pygi module mechanics so the introspection generated 'Object'
-    class becomes derived from the static GObject class. Add initial
-    GObject.Object override which sets all static methods back essentially
-    leapfrogging the introspection methods. This sets the stage for having
-    the ability to remove static methods piecemeal in favor of
-    introspection/python in future commits.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=672727
-
- gi/module.py             | 30 +++++++++++---------
- gi/overrides/GObject.py  | 74
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygobject-external.h  | 10 +------
- gi/types.py              |  7 +++++
- tests/test_gobject.py    | 31 ++++++++++++++++----
- tests/testhelpermodule.c |  2 +-
- 6 files changed, 126 insertions(+), 28 deletions(-)
-
-commit 4da6f93d86b104941c5533c3da5edb4a00ec62e9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 13:55:21 2012 +0100
-
-    Bump glib dependency to >= 2.34.2
-
-    We need 2.34.2 or 2.35.2 as we now depend on the GIOChannel annotation
-    fixes.
-
- README       | 2 +-
- configure.ac | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 85c8dd7a9bc81fb5df5abc6d8a95f966955ec775
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 11:28:42 2012 +0100
-
-    Update README
-
-    Point to python-hackers-list instead of the old pygtk list, update
-    required
-    versions, and point to wiki page and IRC.
-
- README | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-commit 6d8b29ba56fb085948a155c75af36dcea9c71da8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 11:21:32 2012 +0100
-
-    Add --with-python configure option
-
-    This behaves like setting $PYTHON, but also works in build systems
-    like jhbuild
-    which do not support setting environment variables.
-
-    Update README accordingly.
-
- README       | 15 +++++++++------
- configure.ac | 43 ++++++++++++++++++++++++++++++++++---------
- 2 files changed, 43 insertions(+), 15 deletions(-)
-
-commit 4e5556a5238a3b86da9a0e40fd0e23004ed6af75
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 10:39:27 2012 +0100
-
-    python.m4: Add python3.3, do not prefer unversioned "python"
-
-    Add python 3.3 to the search list.
-
-    http://www.python.org/dev/peps/pep-0394/ broke the well-defined
-    meaning of
-    "python", so use that as last fallback if more specific versions do
-    not exist.
-
- configure.ac | 2 +-
- m4/python.m4 | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit e71c046ed8f5b06e6b7383ddc0fc18f06de6abee
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 09:48:50 2012 +0100
-
-    m4: Update py-compile to current upstream version
-
-    Update py-compile to current versions from automake 1.11.6.
-
- m4/py-compile | 81
- +++++++++++++++++++++++++++++++++++------------------------
- 1 file changed, 48 insertions(+), 33 deletions(-)
-
-commit 8406b39f4e9ff98e0d59e880dde3ddb5e5131726
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 09:57:00 2012 +0100
-
-    m4: Update introspection.m4 to current upstream version
-
- m4/introspection.m4 | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 4ffa61b7c39cf038440dc9acfe8d214c9b77c3a6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Nov 6 09:53:15 2012 +0100
-
-    option.py: Fix PEP-8 error
-
- gi/_glib/option.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 2cbb54e79c23b96486d4a2bfa170460df5bd6c84
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Mon Nov 5 18:27:56 2012 -0800
-
-    Remove DynamicGLibModule and DynamicGObjectModule
-
-    Move final bits of _glib static binding imports directly into
-    the GLib override. Change _glib/option use the .so directly
-    rather than the staged variables in _glib/__init__.py.
-    Remove DynamicGLibModule and DynamicGObjectModule and update
-    unittest.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687488
-
- gi/_glib/__init__.py | 11 ----------
- gi/_glib/option.py   | 16 +++++++-------
- gi/importer.py       | 12 ++---------
- gi/module.py         | 60
- ----------------------------------------------------
- gi/overrides/GLib.py | 14 ++++++++++++
- tests/test_gi.py     |  9 ++------
- 6 files changed, 26 insertions(+), 96 deletions(-)
-
-commit 901c1b6e3722a9cd999e4948297e2c460f101d20
-Author: Daniel Drake <dsd@laptop.org>
-Date:   Thu Nov 1 14:46:22 2012 +0000
-
-    Fix property lookup in class hierarchy
-
-    Commit 4bfe7972546413f46f5c36737ff03bb5612c1921 introduced a bug where
-    a Python subclass of a gi-provided base class overrides a property
-    from the
-    base class.
-
-    The new behaviour in the above commit causes pygobject to seek
-    the property
-    in the base class and try to read it from there (resulting in
-    confusion)
-    rather than noticing that the property is overridden and present
-    in the
-    Python object instance.
-
-    To provide a nicer solution here, we can exploit the fact that
-    g_object_class_find_property() will traverse the hierarchy in order to
-    find the right GParamSpec, and the returned GParamSpec can tell
-    us exactly
-    which GType introduces the property. The strategy is:
-
-     1. Find pspec with g_object_class_find_property()
-     2. Find the class that owns that property (pspec->owner_type)
-     3. See if girepository owns that class.
-     3a. If yes, get property from there.
-     3b. If not, get property "directly"
-
-    And the same for property setting.
-
-    Now that _pygi_lookup_property_from_g_type is always passed the
-    type that
-    implements the property, it no longer has to go recursing through
-    parent
-    classes, which was the original cause of confusion.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686942
-
- gi/_gobject/pygobject.c  |  92 +++++++++++++++++++++++----------
- gi/pygi-property.c       | 130
- ++++++++++++++++++++++-------------------------
- gi/pygi-property.h       |   4 +-
- gi/pygi.h                |  12 ++---
- tests/test_properties.py |  30 +++++++++++
- 5 files changed, 164 insertions(+), 104 deletions(-)
-
-commit efcb0f9fda65e24ae98438d61487d06db9eac1b1
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 16:14:01 2012 +0100
-
-    Move property and signal creation into _class_init()
-
-    We must not add class interfaces after g_type_class_ref() has been
-    called the
-    first time. Move signal and property creation from pyg_type_register()
-    into
-    pyg_object_class_init(), and drop the hack of registering interfaces
-    twice.
-
-    This changed class initialization order now exposes GLib's warning
-    about
-    unknown signals, so adjust
-    test_signal.TestGSignalsError.test_invalid_name() to
-    not abort on that.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686149
-
- gi/_gobject/gobjectmodule.c | 177
- ++++++++++++++++++--------------------------
- tests/test_signal.py        |   6 +-
- 2 files changed, 75 insertions(+), 108 deletions(-)
-
-commit 655a5002ffaa088b775adbc59e5125444f7bc1ca
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sat Nov 3 13:21:52 2012 -0300
-
-    Remove unused macro definitions
-
-    PYGLIB_*_VERSION are not used anywhere any more, remove those.
-    (dropped in commit 8d52bceb1)
-
- gi/_glib/glibmodule.c | 5 -----
- 1 file changed, 5 deletions(-)
-
-commit fa054fd15b8874760bee97d9af168a2969e6ece4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 5 14:38:07 2012 +0100
-
-    testhelpermodule.c: Drop obsolete g_thread_init()
-
-    We already require a new enough glib version as we dropped
-    g_thread_init() in
-    the main code a long time ago. But for formality's sake, bump glib
-    requirement
-    to >= 2.32.
-
- configure.ac             | 4 ++--
- tests/testhelpermodule.c | 1 -
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-commit 2e57530a27a44e94927d487cf2f2d9e543777654
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 5 14:37:11 2012 +0100
-
-    pygi-source.c: Drop dead code
-
- gi/pygi-source.c | 2 --
- 1 file changed, 2 deletions(-)
-
-commit 2a24c9ccd59bff719fa817a0ec5c959f6da03e1c
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 4 22:22:53 2012 -0800
-
-    Move TYPE constants from _gobject to GObject
-
-    Clear out TYPE constants from _gobject/__init__.py and move them
-    into the
-    GObject overrides. Disperse class imports among modules that use
-    them instead
-    of using _gobject/__init__.py as a staging area (e.g. GInterface).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687487
-
- gi/_gobject/__init__.py  | 30 ------------------------------
- gi/_gobject/constants.py |  2 +-
- gi/module.py             | 38 +++++++++++++++++++++++++-------------
- gi/overrides/__init__.py |  9 ++++++---
- gi/types.py              | 10 ++++++----
- 5 files changed, 38 insertions(+), 51 deletions(-)
-
-commit c2aa6f0d0ed4c4e60f081b106dc7a65513963fce
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 5 13:10:05 2012 +0100
-
-    Move G_MIN/MAX constants into GObject overrides
-
-    These really ought to come from GLib's typelib, but are not right
-    now so we
-    need to keep the static bindings for those. But drop them from
-    gi/_gobject/ and
-    move them into the overrides where they belong.
-
- gi/_gobject/__init__.py       | 17 -----------------
- gi/_gobject/constants.py      | 21 ---------------------
- gi/_gobject/propertyhelper.py |  2 +-
- gi/overrides/GObject.py       |  9 +++++++++
- tests/test_gi.py              | 32 ++++++++++++++++----------------
- 5 files changed, 26 insertions(+), 55 deletions(-)
-
-commit 12b84727edc36f686a7031b5c4c6bf662838908d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 5 11:04:54 2012 +0100
-
-    Replace static OPTION_* constants with GI
-
-    Drop static definitions of GLib.OPTION_* constants and use the ones
-    from GI
-    instead.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686765
-
- gi/_glib/__init__.py    | 13 -------------
- gi/_glib/glibmodule.c   | 32 --------------------------------
- gi/_glib/option.py      | 46
- ++++++++++++++++++++++++----------------------
- gi/overrides/GLib.py    | 13 +++++++++++++
- gi/overrides/GObject.py |  2 +-
- 5 files changed, 38 insertions(+), 68 deletions(-)
-
-commit 7372e3c9ecb8e836894c32975eab8c4107ba0b28
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Nov 5 10:14:52 2012 +0100
-
-    tests: Do not use deprecated assertRaisesRegexp()
-
-    Use assertRaisesRegex() instead and provide 2.7 compatibility in
-    tests/runtests.py.
-
- tests/runtests.py    | 3 +++
- tests/test_signal.py | 8 ++++----
- 2 files changed, 7 insertions(+), 4 deletions(-)
-
-commit da2106902eb3dabebdff1674743cb3040566a745
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 4 02:57:29 2012 -0800
-
-    Move gobject static functions and constants to gi
-
-    Replace the following functions with gi and overrides:
-    type_children, type_interfaces, signal_list_ids, signal_list_names,
-    signal_lookup, signal_name, type_parent. Assign SIGNAL_* and
-    PARAM_* from gi SignalFlags and ParamFlags respectively.
-    Move module level assignments of a number of static functions to
-    the GObject.py overrides file.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687487
-
- docs/reference/pygobject-functions.xml |  25 ---
- gi/_gobject/__init__.py                |  72 +--------
- gi/_gobject/gobjectmodule.c            | 272
- ---------------------------------
- gi/overrides/GObject.py                | 208 ++++++++++++++++++++++++-
- gi/overrides/__init__.py               |   5 +-
- tests/test_signal.py                   |  11 +-
- 6 files changed, 215 insertions(+), 378 deletions(-)
-
-commit f4acd6a9d14248d459708f61fd01f6d4735f087d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Nov 4 02:52:19 2012 -0800
-
-    Make unitests for gobject functions moving to gi more strict
-
-    Add expected failure test for invalid SystemError's coming from
-    signal_lookup and signal_list_ids. Remove excessive type_name
-    tests and type_from_name tests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687487
-
- tests/test_gtype.py  | 53
- ----------------------------------------------------
- tests/test_signal.py | 40 ++++++++++++++++++++++++---------------
- 2 files changed, 25 insertions(+), 68 deletions(-)
-
-commit 3267808318b284814e52f2803b17af56fca648ad
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 14:17:25 2012 +0100
-
-    [API change] Remove static filename_from_utf8() binding
-
-    Replace static GLib.filename_from_utf8() with GI. The old static
-    binding always
-    tried to convert the result to an Unicode object, which will fail
-    if the result
-    is not UTF-8 encoded (which is the whole point of this function
-    really!), so
-    return bytes now.
-
-    Although the static binding was rather useless before, this is
-    technically an
-    API break.
-
- docs/reference/pyglib-functions.xml | 32 --------------------------------
- gi/_glib/__init__.py                |  1 -
- gi/_glib/glibmodule.c               | 26 --------------------------
- gi/_gobject/__init__.py             |  1 -
- gi/overrides/GLib.py                |  8 ++++++++
- gi/overrides/GObject.py             |  3 ++-
- tests/test_glib.py                  |  8 ++++++++
- 7 files changed, 18 insertions(+), 61 deletions(-)
-
-commit 8d52bceb1e0aa0dc79cf77f36dda9f953f170459
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 13:14:15 2012 +0100
-
-    Drop static glib_version and pyglib_version constants
-
-    Use the GLib version from GI instead, and the already existing
-    gi.version_info.
-
- docs/reference/pyglib-constants.xml    | 50
- ----------------------------------
- docs/reference/pygobject-constants.xml | 19 -------------
- gi/_glib/__init__.py                   |  2 --
- gi/_glib/glibmodule.c                  | 21 --------------
- gi/_gobject/__init__.py                |  1 -
- gi/overrides/GLib.py                   |  8 +++++-
- gi/overrides/GObject.py                |  3 +-
- tests/test_glib.py                     | 12 ++++++++
- 8 files changed, 21 insertions(+), 95 deletions(-)
-
-commit 9f96325e75f7c5f88789ea3f74a068e73cfde1a2
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 12:12:44 2012 +0100
-
-    Drop static G_MININT8 and related constants
-
-    Use the introspected constants from GLib instead.
-
- gi/_gobject/__init__.py     | 12 ------------
- gi/_gobject/constants.py    | 12 ------------
- gi/_gobject/gobjectmodule.c | 18 +-----------------
- gi/overrides/GObject.py     | 17 +++++++++++++++++
- tests/test_gobject.py       |  4 ++++
- 5 files changed, 22 insertions(+), 41 deletions(-)
-
-commit 3354c4eda0f098d1a8f744264ef9a2565a38b50d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 11:58:40 2012 +0100
-
-    test_gobject: Add test case for min/max int constants
-
-    Related to https://bugzilla.gnome.org/show_bug.cgi?id=685022
-
- tests/test_gobject.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit d70cb32789e057fe5a16e61a0cce77d9c54a3ee1
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sat Oct 27 15:37:32 2012 -0300
-
-    Use g_object_info_find_signal()
-
-    Replace our custom code with a call to the corresponding
-    gobject-instrospection
-    function.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687371
-
- gi/pygi-signal-closure.c | 21 ++++-----------------
- 1 file changed, 4 insertions(+), 17 deletions(-)
-
-commit ae6d0aada9587cd4dca168375527b80785b604a0
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 11:23:06 2012 +0100
-
-    GLib overrides: code cleanup
-
-    Factorize the logic to handle zero or multiple user_data arguments
-    into
-    user_data_varargs_shim(), and put code that handles deprecated API
-    into the
-    corresponding "then" branches, to improve readability.
-
- gi/overrides/GLib.py | 87
- ++++++++++++++++++++++++++++------------------------
- 1 file changed, 47 insertions(+), 40 deletions(-)
-
-commit d7f095b01e7208273703c880f4f0dfcc1a152a9a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat Nov 3 09:33:08 2012 +0100
-
-    Restore actual GLib API after previous fix
-
-    Re-fix the acceptance of priority as first argument for idle_add(),
-    io_add_watch() and timeout_add(), as that is the real GLib API. Ensure
-    that
-    this keeps supporting the backwards compatible API with supplying
-    multiple user
-    data arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687047
-
- gi/overrides/GLib.py    | 117
- +++++++++++++++++++++++++-----------------------
- tests/test_iochannel.py |  74 +++++++++++++++++++++++++++---
- tests/test_source.py    |  30 +++++++++++++
- 3 files changed, 158 insertions(+), 63 deletions(-)
-
-commit 648b653d85bf3bc28dc59c6d309f15d388076af9
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Fri Nov 2 21:01:38 2012 -0700
-
-    Add unittests for module level type and signal functions
-
-    Add tests for the following methods: signal_list_ids,
-    signal_name, signal_lookup, signal_query, type_children,
-    type_from_name, type_name, type_is_a, and type_interfaces.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687487
-
- tests/Makefile.am    |   1 +
- tests/test_gtype.py  | 106
- +++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_signal.py |  43 +++++++++++++++++++++
- 3 files changed, 150 insertions(+)
-
-commit 80db2a50feab9898d7c5f88ea27aadc3dfb5bec3
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Oct 30 18:33:44 2012 -0700
-
-    Fix GLib override incompatibilities with old static API
-
-    Change idle_add, timeout_add, timeout_add_seconds, and
-    io_add_watch to accept *args and **kwargs as arguments
-    to the callback functions instead of only accepting a single
-    user_data arg. This ensures the new overridden introspection
-    methods are backwards compatible with the static versions
-    they replaced.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687047
-
- gi/overrides/GLib.py    | 98
- ++++++++++++++++++++++++++++---------------------
- tests/test_iochannel.py | 37 +++++++++++++++++--
- 2 files changed, 90 insertions(+), 45 deletions(-)
-
-commit 9c6399bbf75c312b1ef4933d079712ea5b05a935
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Tue Oct 30 12:01:44 2012 -0700
-
-    Fix IOChannel unittests for python 2.7
-
-    Use __future__ unicode_literals to minimize difference
-    between python 2.7 and 3. Comparisons need to encode arguments as
-    'UTF-8' for testing readline operations.
-    Add backwards compatible "next" to support the python 2.7 iteration.
-    Change isinstance(channel, file) to hasattr(channel, 'fileno') to
-    support all python versions (and duck typing).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687047
-
- gi/overrides/GLib.py    | 4 +++-
- tests/test_iochannel.py | 1 +
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit 0f94a0a4ebd2bbfd06d8f9a2bb2b17dabf7678ef
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 29 23:00:31 2012 +0100
-
-    Allow calling io_add_watch with a file object
-
-    The old static bindings allowed that, so we need to allow it to
-    maintain
-    backwards compatibility. Deprecate this mode as well, so that we
-    can get rid of
-    it at some point.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=687047
-
- gi/overrides/GLib.py |  7 +++++++
- tests/test_glib.py   | 26 ++++++++++++++++++++++++++
- 2 files changed, 33 insertions(+)
-
-commit 3ba67fd41944309077eb81c4c03397519ed29dc4
-Author: John Ralls <jralls@ceridwen.us>
-Date:   Mon Oct 29 14:57:22 2012 -0700
-
-    Fix duplicate symbols error on OSX
-
- gi/pygi-source.c | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 5a367aa067e369f2b1e713199614e3426fecc10e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 17:42:34 2012 +0100
-
-    Drop removed markup-escape-text() from reference documentation
-
- docs/reference/pyglib-functions.xml | 36
- ------------------------------------
- 1 file changed, 36 deletions(-)
-
-commit 057b3d3791e6f1947004f2482c0ae40529de03ae
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 17:41:03 2012 +0100
-
-    Drop some dead code from gi/_glib/glibmodule.c
-
- gi/_glib/glibmodule.c | 45 ---------------------------------------------
- 1 file changed, 45 deletions(-)
-
-commit 7b12803bce3418bb487127f497f022c973f35888
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 17:37:29 2012 +0100
-
-    Remove static get_current_time() binding
-
-    Use GLib.get_real_time() through GI instead. Deprecate the function,
-    as
-    GLib.get_real_time() should be called directly.
-
- docs/reference/pyglib-functions.xml | 26 --------------------------
- gi/_glib/__init__.py                |  1 -
- gi/_glib/glibmodule.c               | 11 -----------
- gi/_glib/pyglib.c                   | 16 ----------------
- gi/_glib/pyglib.h                   |  1 -
- gi/_gobject/__init__.py             |  1 -
- gi/overrides/GLib.py                |  8 ++++++++
- gi/overrides/GObject.py             |  2 +-
- tests/test_glib.py                  |  6 +++++-
- 9 files changed, 14 insertions(+), 58 deletions(-)
-
-commit b3dfb780b3a74f6933e3afcd2ba512b36dfbe514
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 17:23:23 2012 +0100
-
-    Add more tests for GLib.spawn_async()
-
-    Check spawn_async() with getting stdin/out/err pipes and specifying
-    envp.
-
- tests/test_subprocess.py | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-commit 70d78eee4a04dcaefea4615fe351e33fa717dffa
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 14:15:05 2012 +0100
-
-    Remove static child_add_watch() binding
-
-    Use the GLib API through GI instead, and provide override to keep
-    backwards
-    compatible API. Also allow using the actual GLib API, and deprecate
-    the old
-    static API of calling without a priority as first argument.
-
- docs/reference/pyglib-functions.xml | 61 ---------------------------
- gi/_glib/__init__.py                |  1 -
- gi/_glib/glibmodule.c               | 72 -------------------------------
- gi/_gobject/__init__.py             |  1 -
- gi/overrides/GLib.py                | 46 ++++++++++++++++++++
- gi/overrides/GObject.py             |  2 +-
- tests/test_mainloop.py              |  2 +-
- tests/test_subprocess.py            | 84
- ++++++++++++++++++++++++++++++++++---
- 8 files changed, 127 insertions(+), 142 deletions(-)
-
-commit 4b16427714b850e33c6020d8de1833bae19a3b87
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun Oct 28 13:44:23 2012 +0100
-
-    test_subprocess: Cover more child_watch_add() cases
-
-    Verify that priority is set correctly, and also test calling without
-    userdata.
-
- tests/test_subprocess.py | 24 +++++++++++++++++++-----
- 1 file changed, 19 insertions(+), 5 deletions(-)
-
-commit 83ff5938612d37d52f112867a472777dd6786d69
-Author: Colin Walters <walters@verbum.org>
-Date:   Sat Oct 27 12:22:53 2012 -0400
-
-    gi/__init__.py: Pacify pep8 style checker
-
-    It was complaining about finding only 1 blank line.  Regression
-    likely introduced by f976d05b.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686991
-
- gi/__init__.py | 1 +
- 1 file changed, 1 insertion(+)
-
-commit f976d05b04f26e733d19988e68989e340eb3a29e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 26 10:39:28 2012 +0200
-
-    Use a custom deprecation warning to make them visible by default
-
-    DeprecationWarning is not shown by default, and is thus rather
-    useless for
-    developers. Use a custom PyGIDeprecationWarning class and derive
-    it from
-    RuntimeWarning to make it visible.
-
- gi/__init__.py           | 5 +++++
- gi/overrides/GLib.py     | 5 +++--
- gi/overrides/Gtk.py      | 5 +++--
- gi/overrides/__init__.py | 4 ++--
- gi/pygtkcompat.py        | 4 ++--
- tests/Makefile.am        | 2 +-
- tests/test_glib.py       | 5 +++--
- tests/test_gobject.py    | 3 ++-
- tests/test_iochannel.py  | 5 +++--
- tests/test_source.py     | 3 ++-
- 10 files changed, 26 insertions(+), 15 deletions(-)
-
-commit 366f5d2d3902c6293d0031e0b7dc5d6641a05ac7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 26 09:26:17 2012 +0200
-
-    Remove static io_add_watch() binding
-
-    Use the GLib API through GI instead, and provide override to keep
-    backwards
-    compatible API. Also allow using the actual GLib API, and deprecate
-    all other
-    variants:
-     - calling with an fd as first argument instead of an IOChannel
-     - calling without a priority as second argument
-
- docs/reference/pyglib-functions.xml | 106
- ------------------------------------
- gi/_glib/__init__.py                |   1 -
- gi/_glib/glibmodule.c               |  98
- ---------------------------------
- gi/_gobject/__init__.py             |   1 -
- gi/overrides/GLib.py                |  51 ++++++++++++++---
- gi/overrides/GObject.py             |   3 +-
- tests/test_glib.py                  |  15 ++++-
- tests/test_iochannel.py             |  70 +++++++++++++++++++++++-
- 8 files changed, 126 insertions(+), 219 deletions(-)
-
-commit 284de1eb5c37a3f6caa7d846dbd439f1eac410a2
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 26 08:48:35 2012 +0200
-
-    Add tests for GLib.io_add_watch()
-
- tests/test_glib.py | 36 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 36 insertions(+)
-
-commit 15e717ce2c2a26c02c913f79bc7cf6876d943e92
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 25 15:55:46 2012 +0200
-
-    Remove static GIOChannel bindings
-
-    Use the GLib API through GI instead, and provide overrides to keep
-    backwards
-    compatible API, including its bugs.
-
-    We still need to keep a static wrapper around
-    g_io_channel_read_chars() until
-    we teach PyGObject to correctly handle caller allocated out array
-    arguments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686795
-
- gi/_glib/Makefile.am    |   2 -
- gi/_glib/__init__.py    |   1 -
- gi/_glib/glibmodule.c   |   2 -
- gi/_glib/pygiochannel.c | 748
- ------------------------------------------------
- gi/_glib/pygiochannel.h |  29 --
- gi/_gobject/__init__.py |   1 -
- gi/gimodule.c           |  72 +++++
- gi/overrides/GLib.py    |  95 +++++-
- 8 files changed, 161 insertions(+), 789 deletions(-)
-
-commit 0bfa6b44b808d9f8f55199216c29c1aec96c7719
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 25 12:59:46 2012 +0200
-
-    test_iochannel.py: Fix data type of IOFlags
-
-    ~GLib.IOFlags.NONBLOCK yields an int instead of a GLib.IOFlags,
-    so ensure that
-    the result is of type GLib.IOFlags again.
-
- tests/test_iochannel.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 25d12afd06863ce223a161ba1317bfe5503bca5c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 25 08:24:31 2012 +0200
-
-    Add environment variable to disable pep8 checks
-
-    pep8 takes quite long for "make check". Skip it if $SKIP_PEP8 is
-    set, which
-    makes the test/fix turnaround time faster.
-
- tests/Makefile.am | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-commit e9624ed1d38c777de2b430e3b0fbae2acbf34956
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Wed Oct 24 04:31:26 2012 -0700
-
-    [API add] Add get_introspection_module for getting un-overridden
-    modules
-
-    Add gi.module.get_introspection_module to explicitly get a
-    wrapped module pulled in through introspection without static
-    and python override handling. This API is intended for python
-    overrides to use rather than having them access
-    gi.importer.modules['<name>']._introspection_module directly.
-    Replace aforementioned usage in all overrides.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686828
-
- gi/module.py                       | 38
- +++++++++++++++++++++++++++++++++++---
- gi/overrides/GIMarshallingTests.py |  4 ++--
- gi/overrides/GLib.py               |  4 ++--
- gi/overrides/Gdk.py                |  6 +++---
- gi/overrides/Gio.py                |  4 ++--
- gi/overrides/Gtk.py                |  5 +++--
- gi/overrides/Pango.py              |  4 ++--
- tests/test_overrides.py            | 29 +++++++++++++++++++++++++++++
- 8 files changed, 78 insertions(+), 16 deletions(-)
-
-commit e6e047ef9b8575c852b3cdc3f5d4dfbb548cc648
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 15:16:13 2012 +0200
-
-    test_option: Use public API
-
-    Use GLib.option, not gi._glib.option.
-
- tests/test_option.py | 42 ++++++++++++++++++++----------------------
- 1 file changed, 20 insertions(+), 22 deletions(-)
-
-commit 6a586af41b8740c4ba590591d1068d80071ff2dc
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 14:12:05 2012 +0200
-
-    Drop static SPAWN_* constants
-
-    Use the introspected constants instead, which are identical. Add
-    backwards
-    compatible aliases.
-
-    These constants are covered by tests/test_subprocess.py.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686765
-
- docs/reference/pyglib-constants.xml    | 68
- ----------------------------------
- docs/reference/pyglib-functions.xml    | 26 ++++++-------
- docs/reference/pygobject-constants.xml | 67
- ---------------------------------
- gi/_glib/__init__.py                   |  7 ----
- gi/_glib/glibmodule.c                  | 15 --------
- gi/_gobject/__init__.py                |  7 ----
- gi/overrides/GLib.py                   |  6 +++
- gi/overrides/GObject.py                |  6 ++-
- tests/test_subprocess.py               |  6 ++-
- 9 files changed, 29 insertions(+), 179 deletions(-)
-
-commit 0137a7af7bf69421e0c8e94120a1f8cff01fbeea
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 13:59:31 2012 +0200
-
-    Drop static IO_* constants
-
-    Use the introspected constants instead, which are identical. Add
-    backwards
-    compatible aliases.
-
-    These constants are covered by tests/test_iochannel.py.
-
- docs/reference/pyglib-constants.xml | 52
- -------------------------------------
- gi/_glib/__init__.py                | 19 --------------
- gi/_glib/glibmodule.c               | 32 -----------------------
- gi/_gobject/__init__.py             | 18 -------------
- gi/overrides/GLib.py                | 18 ++++++++++++-
- gi/overrides/GObject.py             |  8 +++++-
- tests/test_iochannel.py             |  1 +
- tests/test_source.py                |  2 +-
- 8 files changed, 26 insertions(+), 124 deletions(-)
-
-commit 0e1a6ccee45ae2239da1c44de1866596343165ba
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 12:50:50 2012 +0200
-
-    Fix various bugs in GLib.IOChannel
-
-    - Fix segfault when using an IOChannel as an iterator: PyIter_Next()
-    returns
-      NULL on the last element, instead of raising a StopIteration.
-
-    - The default encoding of a stream is 'UTF-8', not NULL. NULL means
-    that the
-      stream is being used in binary mode; in that case, we should not
-      attempt to
-      do any automagic conversion to an Unicode object. As this special
-      case is
-      inconsistent and has never worked anyway, and the current buggy
-      implementation breaks binary streams, just drop it without
-      replacement.
-      (Introduced in commit de9eae4dfcce8)
-
-    These bugs were uncovered by the previously committed tests.
-
- gi/_glib/pygiochannel.c | 25 +++++--------------------
- 1 file changed, 5 insertions(+), 20 deletions(-)
-
-commit a98c37937a4f7cb81a0b02c023d12097f386a22c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 12:49:04 2012 +0200
-
-    Add tests for GLib.IOChannel
-
-    This did not have any code coverage at all. The tests uncover a
-    range of bugs,
-    which will be fixed in the next commit.
-
- tests/Makefile.am       |   1 +
- tests/test_iochannel.py | 262
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 263 insertions(+)
-
-commit 1b27432abf6004553e9476d5ffeb2bf603534419
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 08:50:37 2012 +0200
-
-    Remove static idle_add/timeout_add bindings
-
-    Use the GLib functions through GI instead. Add overrides to ensure
-    that default
-    arguments continue to work as before, and that callbacks are called
-    without an
-    userdata argument if it wasn't specified.
-
- docs/reference/pyglib-functions.xml | 165
- ------------------------------------
- gi/_glib/__init__.py                |   3 -
- gi/_glib/glibmodule.c               | 139 ------------------------------
- gi/_gobject/__init__.py             |   3 -
- gi/overrides/GLib.py                |  31 +++++++
- gi/overrides/GObject.py             |   3 +-
- tests/test_source.py                |  19 +++++
- 7 files changed, 52 insertions(+), 311 deletions(-)
-
-commit 2357f4a0237feabcf6886f2a448aa3f42f6781b9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 09:14:57 2012 +0200
-
-    Add tests for priority argument of idle_add/timeout_add
-
-    There is a potential to treat the priority as user data in a call like
-    "GLib.idle_add(cb, GLib.PRIORITY_HIGH)". The current static bindings
-    force
-    using a keyword argument for the priority (but silently ignore it
-    if you
-    specify both userdata and priority as a positional argument).
-
-    Test the correct handling of priority as well.
-
- tests/test_source.py | 63
- ++++++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 59 insertions(+), 4 deletions(-)
-
-commit dceb4d60e210cb1531ad81935733a3f0be0c8edb
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 08:40:50 2012 +0200
-
-    Drop old ChangeLog.pre-2.18
-
-    This is ancient by now, quite sizable, and the complete history can
-    always be
-    seen in the git log.
-
- ChangeLog.pre-2.18 | 3608
- ----------------------------------------------------
- Makefile.am        |    1 -
- 2 files changed, 3609 deletions(-)
-
-commit 127ef91f1563caa346bc2ac2adb064487a84e6a0
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 08:39:05 2012 +0200
-
-    Fix PEP-8 whitespace in previous commit
-
- tests/test_source.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 0bc0b55be0dae7528c2fc7439d672ad4e417335d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 08:33:49 2012 +0200
-
-    Add tests for idle_add()/timeout_add with and without user data
-
-    This is implicitly spread over various test cases, but let's test
-    it explicitly
-    to ensure that the behaviour stays consistent when moving this to GI.
-
- tests/test_source.py | 35 +++++++++++++++++++++++++++++++++++
- 1 file changed, 35 insertions(+)
-
-commit d0a0332feb7946f4bb6b43211d6fe3ae67e7dba5
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 08:05:43 2012 +0200
-
-    tests: consitent naming style
-
-    Stop mixing camel case and underline naming, use the latter
-    consistently
-    in all tests.
-
- tests/test_gobject.py     | 64
- +++++++++++++++++++++++------------------------
- tests/test_interface.py   |  4 +--
- tests/test_option.py      | 14 +++++------
- tests/test_pygtkcompat.py | 32 ++++++++++++------------
- tests/test_signal.py      | 10 ++++----
- tests/test_source.py      | 23 ++++++++---------
- tests/test_subprocess.py  |  2 +-
- tests/test_thread.py      |  2 +-
- tests/test_unknown.py     |  2 +-
- 9 files changed, 76 insertions(+), 77 deletions(-)
-
-commit 4b460e2eb18b8340fe99252063fdb08b0c222968
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Oct 24 07:28:10 2012 +0200
-
-    Work around wrong 64 bit constants in GLib Gir
-
-    GLib's gir currently has wrong constants for MININT64 and MAXUINT64;
-    explicitly
-    set them in an override, until this gets fixed properly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685022
-
- gi/overrides/GLib.py | 8 ++++++++
- tests/test_gi.py     | 9 +++++++++
- 2 files changed, 17 insertions(+)
-
-commit f30efd2619911c89ca873fac6bec06a1b60fab82
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 13:32:14 2012 +0200
-
-    Mark GLib.Source.get_current_time() as deprecated
-
-    This method has been deprecated in GLib long ago. We have a workaround
-    implementation using GLib.get_real_time(), but eventually this should
-    go away.
-
- gi/overrides/GLib.py | 5 ++++-
- tests/test_source.py | 8 +++++++-
- 2 files changed, 11 insertions(+), 2 deletions(-)
-
-commit 483c86267f2623eaa88d6a9e685c96ec3ba4f121
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 08:56:19 2012 +0200
-
-    Mark GLib API that is exposed in GObject as deprecated
-
-    A lot of API in GObject really belongs into GLib and is just there for
-    historical/backwards compatible reasons. Mark these methods as
-    deprecated so
-    that at some point we can drop them.
-
- gi/overrides/GObject.py  |  3 ++-
- gi/overrides/__init__.py | 13 +++++++++++++
- tests/test_gobject.py    | 24 ++++++++++++++----------
- 3 files changed, 29 insertions(+), 11 deletions(-)
-
-commit 191cf45af44850fc29f2392ae2f0042aed6d13a9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 19 09:55:05 2012 +0200
-
-    Remove static MainLoop, MainContext, and some GSource bindings
-
-    glib's MainLoop and MainContext are fully introspectable these days,
-    so remove
-    our static bindings. This reduces our code, as well enables GLib
-    API which
-    hasn't been available through the static bindings before.
-
-    This also requires dropping our custom static types for GLib Source,
-    Timeout,
-    and Idle. The latter two work fine with introspection and just
-    need tiny
-    overrides for a backwards compatible API. g_source_new() is not
-    introspectable,
-    though, so we need to keep our static wrappers for that. Move
-    them from
-    gi/_glib/pygsource.c to gi/pygi-source.c, so that it can use the
-    GI API.
-
-    Note that gi/_glib/pygsource.[hc] is still required for the static
-    PollFD type
-    which is used by the static IOChannel binding. Once the latter
-    goes away,
-    PollFD can be dropped as well.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686443
-
- docs/Makefile.am                      |   6 +-
- docs/reference/pyglib-classes.xml     |   2 -
- docs/reference/pyglib-constants.xml   |  53 ---
- docs/reference/pyglib-functions.xml   |  58 ---
- docs/reference/pyglib-maincontext.xml | 152 --------
- docs/reference/pyglib-mainloop.xml    | 202 -----------
- gi/Makefile.am                        |   2 +
- gi/_glib/Makefile.am                  |   4 -
- gi/_glib/__init__.py                  |  12 -
- gi/_glib/glibmodule.c                 |  45 +--
- gi/_glib/pyglib.c                     |  15 -
- gi/_glib/pyglib.h                     |   1 -
- gi/_glib/pygmaincontext.c             | 126 -------
- gi/_glib/pygmaincontext.h             |  40 ---
- gi/_glib/pygmainloop.c                | 362 -------------------
- gi/_glib/pygmainloop.h                |  36 --
- gi/_glib/pygsource.c                  | 640
- ----------------------------------
- gi/_glib/pygsource.h                  |   3 -
- gi/_gobject/__init__.py               |  13 -
- gi/gimodule.c                         |   9 +
- gi/overrides/GLib.py                  | 116 +++++-
- gi/overrides/GObject.py               |  10 +-
- gi/pygi-private.h                     |   1 +
- gi/pygi-source.c                      | 247 +++++++++++++
- gi/pygi-source.h                      |  31 ++
- tests/test_glib.py                    |  22 +-
- tests/test_gobject.py                 |   2 +
- tests/test_source.py                  |   3 -
- 28 files changed, 437 insertions(+), 1776 deletions(-)
-
-commit 326218a20681c1f2234a6eea1ed800382be57626
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Wed Sep 19 15:37:14 2012 -0700
-
-    Deprecate void pointer fields as general PyObject storage.
-
-    Complete deprecation of gpointer struct fields as general
-    PyObject storage. Only int types are now allowed.
-    Assignment of anything other than an int or None raises
-    a TypeError stating the error and  associated bug URL.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683599
-
- gi/pygi-argument.c          | 25 ++++++++++++++++-----
- gi/pygi-info.c              | 28 ++++--------------------
- tests/test_everything.py    | 53
- +++++++++++++++++++++++++--------------------
- tests/test_overrides_gtk.py | 41 -----------------------------------
- 4 files changed, 54 insertions(+), 93 deletions(-)
-
-commit 3dba328010a4ffd9259700ffec95871c7341d491
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 11:59:08 2012 +0200
-
-    Add some MainLoop, MainContext, and Source test cases
-
-    These cover the remaining static API and behaviour, so that we
-    have good
-    regression tests for converting them to GI.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=686443
-
- tests/test_glib.py     | 21 +++++++++++++++++++++
- tests/test_gobject.py  | 11 +++++++++++
- tests/test_mainloop.py | 16 ++++++++++++++++
- tests/test_source.py   | 44 ++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 92 insertions(+)
-
-commit 7635340271df0a135873459e6a2a365fd4b187a2
-Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Feb 9 18:37:33 2011 +0100
-
-    [API change] Do not bind gobject_get_data() and gobject_set_data()
-
-    They will basically cause a crash if misused, and you can always use a
-    python member attribute instead.
-
-    These methods were marked as deprecated for 3.4 and throwing a
-    warning, so
-    let's remove them for good now.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=641944
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- docs/reference/pygobject.xml | 63
- --------------------------------------------
- gi/_gobject/pygobject.c      | 44 -------------------------------
- 2 files changed, 107 deletions(-)
-
-commit cfec113e3b3eabf8db834f48b2f16792d1e841a3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 08:17:40 2012 +0200
-
-    Add test for GLib.get_current_time()
-
-    This adds a plausibility test, as well as ensuring the documented
-    return type.
-    This will be useful if/once we drop the static _glib binding.
-
- tests/test_glib.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit fb473b31054744e5ab59e9d4ed3b74571e27d3ff
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 07:48:52 2012 +0200
-
-    Drop unnecessary static _glib bindings
-
-    Drop static pyglib bindings which have straightforward and working
-    GLib GI
-    bindings. Add tests for all dropped functions to ensure they keep
-    working.
-
- docs/reference/pyglib-constants.xml |  59 -------
- docs/reference/pyglib-functions.xml | 270 ------------------------------
- gi/_glib/__init__.py                |  24 ---
- gi/_glib/glibmodule.c               | 319
- ------------------------------------
- gi/_gobject/__init__.py             |   9 -
- gi/overrides/GLib.py                |  16 ++
- gi/overrides/GObject.py             |  32 ++++
- gi/overrides/Makefile.am            |   1 +
- tests/Makefile.am                   |   1 -
- tests/test_glib.py                  |  46 ++++++
- tests/test_gobject.py               |   4 +
- tests/test_uris.py                  |  16 --
- 12 files changed, 99 insertions(+), 698 deletions(-)
-
-commit 126a10f765af3d3a6f08ce5db7ed9f3ef647848f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Oct 23 06:12:08 2012 +0200
-
-    Fix OverflowError in source_remove()
-
-    GSource IDs are unsigned, so we must use 'I' for parsing then, not
-    'i'.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684526
-
- gi/_glib/glibmodule.c |  2 +-
- tests/test_source.py  | 13 ++++++++++++-
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
-commit 15f7442bd0c45db25073e3d8494094f1c284ffa4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 22 13:38:23 2012 +0200
-
-    Fix TestSource.testSources() test case
-
-    PyGObject has established the assumption that the destruction of
-    a GLib.Source
-    Python object does not destroy the actual GSource, as shown in
-    TestSource.setup_timeout(), TestTimeout.test504337(), and
-    https://bugzilla.gnome.org/show_bug.cgi?id=504337.
-
-    So we need to explicitly destroy our MySource and Idle objects
-    after using
-    them, as their callbacks always return True and we do not want them
-    to spill
-    over into other tests.
-
-    Also fix the assertions to actually verify that MySources' callback
-    was callied
-    (pos > 0, not pos >= 0), and use the unittest comparison API instead
-    of a
-    simple assert statement.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686627
-
- tests/test_source.py | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-commit b984a5fe0d065818a153f259db4dbde79534f084
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 22 17:38:56 2012 +0200
-
-    configure.ac: post-release bump to 3.7.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ce0825f58c3eba6084143e430605ffb597622369
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 22 17:37:17 2012 +0200
-
-    release 3.7.1
-
- NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 42 insertions(+)
-
-commit a93763337ba7f952d787c42f45bfbb3ff02cc80d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 22 17:33:12 2012 +0200
-
-    Bump version to 3.7.1
-
-    Let's follow the real GNOME versioning from now on.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 3fb13cc05a281970c3a624c2dd152996031b482c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 22 11:36:49 2012 +0200
-
-    test_mainloop code cleanup
-
-    Ensure that sys.excepthook is always restored, even if the test
-    fails. Use the
-    assert{True,False,Equal} unittest API instead of simple asserts for
-    more useful
-    failure messages.
-
- tests/test_mainloop.py | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-commit 31061f20083aa60919f6763a12addbf2b052cab7
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sun Oct 21 18:55:24 2012 -0700
-
-    Change install_properties to not use getattr on classes
-
-    The usage of getattr for accessing a classes __gproperties__
-    variable can be problematic due to the potential of it returning
-    the parent classes variable when it does not exist on the sub-class.
-    Similar to the fix for
-    https://bugzilla.gnome.org/show_bug.cgi?id=686496,
-    cls.__dict__.get is used to ensure this does not happen.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686559
-
- gi/_gobject/propertyhelper.py | 2 +-
- tests/test_properties.py      | 6 ++++--
- 2 files changed, 5 insertions(+), 3 deletions(-)
-
-commit 438d3e68f19e2af5d027e18842ab05e0421d088d
-Author: Simon Feltman <sfeltman@src.gnome.org>
-Date:   Sat Oct 20 19:56:04 2012 -0700
-
-    Move property install function into propertyhelper.py
-
-    Move _install_properties() into gi/_gobject/propertyhelper.py
-    and add unittests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686559
-
- gi/_gobject/__init__.py       | 45 +++----------------------------
- gi/_gobject/propertyhelper.py | 45 +++++++++++++++++++++++++++++++
- tests/test_properties.py      | 63
- +++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 111 insertions(+), 42 deletions(-)
-
-commit 695a9077aa8f40357e050f090caa5e2b8c5c9593
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sat Oct 20 03:11:07 2012 -0700
-
-    Fix Signal decorator to not use base class gsignals dict
-
-    Fix install_signals to not use the parent classes __gsignals__
-    dict if one does not exist on the given class.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686496
-
- gi/_gobject/signalhelper.py |  2 +-
- tests/test_signal.py        | 43
- +++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 44 insertions(+), 1 deletion(-)
-
-commit 1ff04e846d50b948df6fa3260c548ef4f4779c58
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 19 09:05:01 2012 +0200
-
-    tests: Consistently use GLib.MainLoop
-
-    ... instead of mixing GObject.MainLoop and GLib.MainLoop.
-
- tests/test_everything.py |  4 ++--
- tests/test_gdbus.py      | 11 +++++------
- 2 files changed, 7 insertions(+), 8 deletions(-)
-
-commit ff7e7401b4cf50532fef70263f7559ea513b8333
-Author: Kalev Lember <kalevlember@gmail.com>
-Date:   Wed Oct 17 18:27:14 2012 +0200
-
-    Install the .egg-info files into correct multilib directory
-
-    This makes sure the .egg-info files end up in the same python
-    top level
-    directory as the rest of the gi .py files.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686315
-
- Makefile.am | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 91e4cb2063d4e83fb1f6586a4396471d64f234f4
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Mon Oct 15 04:03:50 2012 -0700
-
-    Fix leaked vfunc return values
-
-    Simple fix to dec ref returned values from closures wrapping
-    python functions.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=686140
-
- gi/pygi-closure.c |  1 +
- tests/test_gi.py  | 21 +++++++++++++++++++--
- 2 files changed, 20 insertions(+), 2 deletions(-)
-
-commit 75e373b99c3cb66dd60b13c803e5f7eec77cc415
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Oct 15 07:42:05 2012 +0200
-
-    Skip Regress tests with --disable-cairo
-
-    We need cairo to build g-i's Regress library, gir, and typelib. Update
-    configure.ac to only require cairo if --disable-cairo was not
-    given. With
-    --disable-cairo, skip building the Regress library and skip all
-    tests which use
-    it.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685094
-
- configure.ac             |  5 ++---
- tests/Makefile.am        | 45
- +++++++++++++++++++++++++++------------------
- tests/test_everything.py | 15 +++++++++++----
- tests/test_overrides.py  |  7 ++++++-
- 4 files changed, 46 insertions(+), 26 deletions(-)
-
-commit a2ab72aa39824579d1767d1fdba7e1031341f86c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Oct 12 11:05:24 2012 +0200
-
-    _pygi_marshal_from_py_uint64: Re-fix check of negative values
-
-    Fix regression from commit 1bfcd5d94 (exposed by several test cases)
-    when using
-    Python 2.x.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685000
-
- gi/pygi-marshal-from-py.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 22c22124b787ae67638aff89796d7ce14900ea8e
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Mon Oct 8 05:54:30 2012 -0700
-
-    Fix leak with python callables as closure argument.
-
-    The fix adds an extra args_data list to the PyGIInvokeState
-    structure. This list is used to track dynamically generated
-    closures that wrap python callables. This allows the ffi closure
-    and python callable to be freed when call scope has finished.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685598
-
- gi/pygi-cache.c               |   1 +
- gi/pygi-closure.c             |  41 +++++++++----
- gi/pygi-invoke-state-struct.h |   4 ++
- gi/pygi-invoke.c              |   7 +++
- gi/pygi-marshal-cleanup.c     |  14 +++++
- gi/pygi-marshal-cleanup.h     |   4 ++
- gi/pygi-marshal-from-py.c     |  57 ++++++++++++++----
- tests/test_everything.py      | 137
- +++++++++++++++++++++++++++++++-----------
- 8 files changed, 206 insertions(+), 59 deletions(-)
-
-commit c0bc69906df2db64560f7c054277ad1956aab57f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 11 17:49:30 2012 +0200
-
-    Gio overrides: Handle setting GSettings enum keys
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685947
-
- gi/overrides/Gio.py         | 9 ++++++++-
- tests/test_overrides_gio.py | 3 +++
- 2 files changed, 11 insertions(+), 1 deletion(-)
-
-commit bbbb7c9ed047a22ac3c43f2b0331d3b5ea32e812
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 11 17:20:38 2012 +0200
-
-    tests: Check reading GSettings enums in Gio overrides
-
-    Also split test_override() into several smaller test cases.
-
- tests/org.gnome.test.gschema.xml |  9 +++++++++
- tests/test_overrides_gio.py      | 14 +++++++++-----
- 2 files changed, 18 insertions(+), 5 deletions(-)
-
-commit 8a2e96cd4e33b6c119a368d73a9d5504576cdccb
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Oct 11 16:08:11 2012 +0200
-
-    Fix unsigned values in GArray/GList/GSList/GHash
-
-    _pygi_hash_pointer_to_arg() needs to handle unsigned integers as well.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685860
-
- gi/pygi-argument.c |  9 +++++++++
- tests/test_gi.py   | 12 ++++++++++++
- 2 files changed, 21 insertions(+)
-
-commit d394acbb58b38e6f52ee71e8e663a892676ab9e4
-Author: Colin Walters <walters@verbum.org>
-Date:   Thu Oct 4 20:13:55 2012 -0400
-
-    build: Fix srcdir != builddir
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 1bfcd5d94b71edc9f03c8b3e87952a8bc8097586
-Author: Alban Browaeys <prahal@yahoo.com>
-Date:   Thu Sep 27 22:44:22 2012 +0200
-
-    _pygi_marshal_from_py_uint64(): Use correct data type in py2.7 check
-
-    Casting an unsigned to signed and checking if positive was not
-    good. Check the
-    unsigned 64 is below G_MAXUINT64 instead.
-
-    Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=685000
-
- gi/pygi-marshal-from-py.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit f0870336b9fc7797895f206e0d3ef17a19efe253
-Author: Johan Dahlin <johan@gnome.org>
-Date:   Tue Oct 2 05:30:16 2012 -0700
-
-    Install an .egg-info file
-
-    This will help easy_install and pip to figure out that PyGObject
-    is already installed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680138
-
- Makefile.am | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-commit 4c9318d97aa34051a0460e8db2ed0f963126b7f5
-Author: Johan Dahlin <johan@gnome.org>
-Date:   Thu Oct 4 09:42:41 2012 +0200
-
-    PyGProps_getattro(): Fix GObjectClass leak
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685218
-
- gi/_gobject/pygobject.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-commit 2aa61520eb4f293ce94d54605d7642a39e18e03d
-Author: Olivier Crête <olivier.crete@collabora.com>
-Date:   Mon Sep 17 15:16:32 2012 -0400
-
-    pygobject.c: Don't leak GObjectClass reference
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684062
-
- gi/_gobject/pygobject.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit 43d356d03d4c83e9de3c56f98a70d387b46f17af
-Author: Alban Browaeys <prahal@yahoo.com>
-Date:   Sat Sep 29 01:17:14 2012 +0200
-
-    Fix memory leak in _pygi_argument_to_array()
-
-    Length arg and type info need to be unref'ed.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685082
-
- gi/pygi-argument.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 34270a109d2af20391c80e88874ee7303eaf5c09
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Sep 28 07:42:51 2012 +0200
-
-    Fix error messages for out of range numbers
-
-    PyErr_Format() does not understand %lli and %li, it needs to be %lld
-    and %ld.
-    So we cannot use those and G_GINT64_FORMAT.
-
-    Also remove the "if (long_ < G_MININT64 || long_ > G_MAXINT64)"
-    check, as long_
-    is a gint64 which can't possibly overflow its own data type. It
-    would also have
-    an unprintable error message.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684314
-
- gi/pygi-marshal-from-py.c | 21 ++++++++-------------
- 1 file changed, 8 insertions(+), 13 deletions(-)
-
-commit 7f1422bf929976722edd6144beb0b4c96d74391b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Sep 28 06:59:38 2012 +0200
-
-    Kill dbus-daemon after running tests
-
-    dbus-launch does not kill the spawned dbus-daemon by itself (see
-    https://bugs.freedesktop.org/show_bug.cgi?id=39196), so do that
-    after running
-    our tests. Take care to preserve the exit code.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=685009
-
- tests/Makefile.am | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit bfd9c8fac1ea240b29fbcd4185dc1702539c1e96
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Sep 27 08:18:34 2012 +0200
-
-    GVariant overrides: Support empty tuple arrays
-
-    Implement the "empty value" branch in _create_tuple(), so that
-    _create_array()
-    can call it for parsing the element type for an empty array.
-
-    This fixes creating variants such as GLib.Variant('a(ii)', []).
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684928
-
- gi/overrides/GLib.py         | 30 +++++++++++++++++++++++-------
- tests/test_overrides_glib.py | 31 +++++++++++++++++++++++++++++++
- 2 files changed, 54 insertions(+), 7 deletions(-)
-
-commit 75d452ea5b179c3585adcf95356b4316c9180768
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Sep 27 06:50:12 2012 +0200
-
-    TestGVariant: Split creation test case into several smaller ones
-
- tests/test_overrides_glib.py | 20 ++++++--------------
- 1 file changed, 6 insertions(+), 14 deletions(-)
-
-commit 4a20bcb3f97614044d351f8e436a81d332db55ba
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 25 09:10:10 2012 +0200
-
-    Fix unused variables and results
-
-    This gets rid of all warnings except the deprecated symbol ones.
-
- gi/_glib/pygiochannel.c | 9 +++------
- gi/pygi-argument.c      | 4 +---
- gi/pygi-callbacks.c     | 4 ----
- gi/pygi-ccallback.c     | 1 -
- gi/pygi-repository.c    | 3 +--
- 5 files changed, 5 insertions(+), 16 deletions(-)
-
-commit 5285f14fee93d2729d4422c40a945adc2be69c14
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 25 08:56:20 2012 +0200
-
-    tests: Fix wrong return type in test_int64_callback()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684700
-
- tests/testhelpermodule.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit e14ebab6099d082466ec11ca21d44de0d6017216
-Author: Giovanni Campagna <gcampagna@src.gnome.org>
-Date:   Wed Sep 19 00:10:57 2012 +0200
-
-    Fix GValue marshalling of long and unsigned long
-
-    long can be equivalent to int64 or int32, depending on the
-    architecture,
-    and GI conflates this distinction in the typelib, but GType does
-    not, and
-    warns if the wrong accessor is used.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684331
-
- gi/pygi-argument.c | 25 +++++++++++++++++++++----
- 1 file changed, 21 insertions(+), 4 deletions(-)
-
-commit 50571dd27d1f7c6bed8c5aaa518b504c9f4c4ab6
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Wed Sep 19 19:07:00 2012 -0700
-
-    Clean up deprecation message for assigning gpointers to objects.
-
-    The previous deprecation message was worded as if the deprecation
-    had already occurred and it has not.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683599
-
- gi/pygi-info.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 4bfe7972546413f46f5c36737ff03bb5612c1921
-Author: Olivier Crête <olivier.crete@collabora.com>
-Date:   Tue Sep 18 08:52:02 2012 +0200
-
-    pygi-property: Lookup property in base classes of non-introspected
-    types
-
-    Look for introspection data in the base classes of non-introspected
-    gtypes.
-    This is necessary to look up introspection data for plugins.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=684058
-
- gi/pygi-property.c       | 28 ++++++++++++++--------------
- tests/test_everything.py | 12 ++++++++++++
- 2 files changed, 26 insertions(+), 14 deletions(-)
-
-commit 7aa94cc861082147b9c382b930f3257f0a842c84
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 24 09:41:10 2012 +0200
-
-    post-release bump to 3.4.1
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit fcceed3adb8d78baba68861a1408627321b2c1ef
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 24 09:35:33 2012 +0200
-
-    release 3.4.0
-
- NEWS         | 3 +++
- configure.ac | 4 ++--
- 2 files changed, 5 insertions(+), 2 deletions(-)
-
-commit 645a9d9d4712f8f0d1b63899b309bbc97eb1f216
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 24 09:27:47 2012 +0200
-
-    Bump g-i dependency to 1.33.14
-
-    To ensure we have all the Regress test APIs that we use.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b6f4ef327fbeaa10fd74571c3df540311834d6ae
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 17 22:52:49 2012 +0200
-
-    post-release bump to 3.3.93
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7e154cf01cf0ce7a8b52c45ba4db755f73b45d1d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 17 22:48:13 2012 +0200
-
-    release 3.3.92
-
- NEWS | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-commit adbe30dc72b4d88bb31055f6ee33fddf32638af9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 17 22:32:55 2012 +0200
-
-    release-news: Generate HTML changelog
-
-    In addition to producing a NEWS paragraph from the changelog,
-    generate a
-    changelog HTML which can be put into blog announcements.
-
-    Update HACKING to point this out, too.
-
- HACKING     |  2 +-
- Makefile.am | 22 ++++++++++++++++------
- 2 files changed, 17 insertions(+), 7 deletions(-)
-
-commit be4a0682bdd189ee908ab1961001f759a80e133c
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sun Sep 16 17:27:25 2012 -0700
-
-    [API add] Add ObjectInfo.get_abstract method
-
-    Adds exposure of g_object_info_get_abstract to python for
-    helping with analysis of non-constructable objects from
-    within python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675581
-
- gi/pygi-info.c   |  8 ++++++++
- tests/test_gi.py | 12 ++++++++++++
- 2 files changed, 20 insertions(+)
-
-commit 3ada408434860d0c8eee6c6a869b5a3d801cfbc8
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Thu Sep 13 20:53:22 2012 -0700
-
-    Add deprecation warning when setting gpointers to anything other
-    than int.
-
-    This is a first pass which does not change anything except add
-    a warning
-    when anything other than an int is set on a gpointer on a boxed type.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683599
-
- gi/pygi-info.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-commit a047f61f26d9c78b82d22948199313e5a389e918
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 17 09:41:24 2012 +0200
-
-    test_properties: Test accessing a property from a superclass
-
-    We already cover accessing the superclass' property if that was
-    defined in
-    Python. Add a corresponding test case for a property defined in C.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=684058
-
- tests/test_properties.py | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-commit 3e6a4000cbc4b0cb503fcd89b50202ed0b70d3a7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 17 09:31:05 2012 +0200
-
-    test_properties.py: Consistent test names
-
-    Use underscore style method/test case names consistently. Also rename
-    some test
-    cases to better describe what they do.
-
- tests/test_properties.py | 78
- ++++++++++++++++++++++++------------------------
- 1 file changed, 39 insertions(+), 39 deletions(-)
-
-commit 4069c3d8547f35437e0cee175a5912febe25326d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Sep 12 06:51:24 2012 +0200
-
-    test_everything: Ensure TestSignals callback does get called
-
- tests/test_everything.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 4e4c87e3868948743e0446abe2ba0cf5626374c4
-Author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
-Date:   Fri Sep 7 17:17:09 2012 -0400
-
-    argument: Fix 64bit integer convertion from GValue
-
-    Trying to get a 64bit integer using the wrong getter was resulting
-    in an
-    assertion and 0 being returned.
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683596
-
- gi/pygi-argument.c       |  8 ++++++--
- tests/test_everything.py | 52
- ++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 58 insertions(+), 2 deletions(-)
-
-commit e474ce243ea7a58358af344ccadb1418f4d2c8eb
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 11 12:32:10 2012 +0200
-
-    Add Simon Feltman as a project maintainer
-
-    Signed-off-By: Martin Pitt <martinpitt@gnome.org>
-    Signed-off-By: Paolo Borelli <pborelli@gnome.org>
-
- pygobject.doap | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit ee1fc78258f10e8a7872ee3da6c9ad6e7984706e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 11 10:17:50 2012 +0200
-
-    test_signals.py: Drop global type variables
-
-    Just use the real types and flags from GObject instead of redefining
-    aliases
-    for them. They weren't used consistently, make the tests harder to
-    read, and we
-    really do not want global single-letter variables like "f" and "l".
-
- tests/test_signal.py | 38 ++++++++++++++++----------------------
- 1 file changed, 16 insertions(+), 22 deletions(-)
-
-commit 3688cf6efe7161585b943cfaafcfd4610b7ad768
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 11 10:11:58 2012 +0200
-
-    test_signals.py: Consistent test names
-
-    Use underscore style method/test case names consistently.
-
- tests/test_signal.py | 88
- ++++++++++++++++++++++++++--------------------------
- 1 file changed, 44 insertions(+), 44 deletions(-)
-
-commit 4559247553b792db956f69c9674c12344d719c82
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 11 09:43:14 2012 +0200
-
-    Add test cases for GValue signal arguments
-
-    These cover various types, (u)int(64) and string.
-
-    Keep the test case for implicit int64 GValues disabled, as this
-    currently does
-    not work and it is not clear whether it should:
-    https://bugzilla.gnome.org/show_bug.cgi?id=683775
-
- tests/test_signal.py     | 41 +++++++++++++++++++++++++++++++++++++++++
- tests/testhelpermodule.c | 17 +++++++++++++++++
- 2 files changed, 58 insertions(+)
-
-commit fddb01b0b71b68d154d130cf40fd5f38647b1a4d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Sep 11 09:31:18 2012 +0200
-
-    Add test for GValue signal return values
-
-    Another attempt to reproduce the reported error in
-    https://bugzilla.gnome.org/show_bug.cgi?id=683596
-    but this works already.
-
- tests/test_signal.py     | 13 +++++++++++++
- tests/testhelpermodule.c | 36 ++++++++++++++++++++++++++++++++++++
- 2 files changed, 49 insertions(+)
-
-commit 4f77c7798563ea436ff5b6306a987f03de50b211
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Fri Sep 7 02:32:15 2012 -0700
-
-    Improve setting pointer fields/arguments to NULL using None
-
-    Setting gi pointers will set them to the address of the python object.
-    This is good except in the case of None which should be used to NULL
-    the pointer out as a special case.
-
-    Commit 21b1d17d2a already fixed this. This improved patch
-    does that in a cleaner and safer way and adds more comments.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683150
-
- gi/pygi-argument.c |  8 +-------
- gi/pygi-info.c     | 14 +++++++++++++-
- 2 files changed, 14 insertions(+), 8 deletions(-)
-
-commit 15046b5a11f6c58a3e5a9c50cf0ce7f31f2cd55f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 10 16:46:30 2012 +0200
-
-    Test gint64 C signal arguments and return values
-
- tests/test_signal.py     | 12 ++++++++++++
- tests/testhelpermodule.c | 14 ++++++++++++++
- 2 files changed, 26 insertions(+)
-
-commit 822d9e07a95f706a40f64335765293542787da90
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 10 16:29:32 2012 +0200
-
-    Test in/out int64 GValue method arguments.
-
-    See https://bugzilla.gnome.org/show_bug.cgi?id=683596
-
- tests/test_gi.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 2d83e52233812618493af4b165615e8741ba41c8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Sep 5 08:54:53 2012 +0200
-
-    Bump g-i dependency to 1.33.10
-
-    To ensure we have all the Regress test APIs that we use.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6a4f4dc9a3d21c3ac8a0aa51432fb8952b4e1ebf
-Author: Thibault Saunier <thibault.saunier@collabora.com>
-Date:   Wed Aug 8 12:57:41 2012 -0400
-
-    Fix -uninstalled.pc.in file
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683379
-
- pygobject-3.0-uninstalled.pc.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit d8f1398dbc7fa7803639c542a607f24f18614ad6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 22:16:47 2012 +0200
-
-    post-release bump to 3.3.92
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit ea992324b8197b2d04ff2849b9ab46f8a04b4ed7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 22:04:01 2012 +0200
-
-    release 3.3.91
-
- NEWS | 32 ++++++++++++++++++++++++++++++++
- 1 file changed, 32 insertions(+)
-
-commit 1e1f5b2f2f15547c1f2cbc948d2b764bd0a37c44
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 21:57:00 2012 +0200
-
-    Fix exception test case for Python 2
-
-    Regression from commit 77844c5 which did not work with Python 2.
-
- tests/test_everything.py | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-commit 41bb687c058e08b05108b4b2f081cd83d4f93da8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 21:16:01 2012 +0200
-
-    Bump g-i dependency
-
-    Require at least 1.33.9, as we got a couple of bug fixes there which
-    the tests,
-    and for some cases the code, depend on. We actually require 1.33.10
-    for all
-    tests to succeed, but that hasn't been released yet.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 77844c571ad0badc189428b93de9f2572051b67e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 17:58:38 2012 +0200
-
-    Show proper exception when trying to allocate a disguised struct
-
-    Instead of a simple "MemoryError" with no details, raise a proper
-    TypeError with a traceback and an explanation what happened.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=639972
-
- gi/pygi-struct.c         |  7 +++++++
- tests/test_everything.py | 13 +++++++++++++
- 2 files changed, 20 insertions(+)
-
-commit 0d099bdb3f4bbd962e5e60b583673d9e6f5673cc
-Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
-Date:   Mon Sep 3 16:47:22 2012 +0200
-
-    Support marshalling GParamSpec signal arguments
-
-    Fix marshalling GParamSpec arguments from C to Python.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683099
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-argument.c   | 10 +++++++++-
- tests/test_signal.py | 14 ++++++++++++++
- 2 files changed, 23 insertions(+), 1 deletion(-)
-
-commit 69fb92c22b3f3d1d5e8c3e14134eee3242fdc5fc
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 16:06:49 2012 +0200
-
-    Add test for a signal that returns a GParamSpec
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683265
-
- tests/test_signal.py     |  6 ++++++
- tests/testhelpermodule.c | 12 ++++++++++++
- 2 files changed, 18 insertions(+)
-
-commit a7c524219987fbf37e455a91e4c78d2b9b4db12d
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Tue Mar 20 04:33:50 2012 -0700
-
-    [API add] Add Signal class for adding and connecting custom signals.
-
-    The Signal class provides easy creation of signals and removes the
-    need for __gsignals__ in client code. The Signal class can also be
-    used as a decorator for wrapping up the custom closure. As well as
-    providing a "BoundSignal" when accessed on an instance for making
-    connections without specifying a signal name string.
-    Python3 annotations can also be used to supply closure argument and
-    return types when Signal is used as a decorator. For example:
-
-    class Eggs(GObject.GObject):
-        @GObject.Signal
-        def spam(self, count:int):
-            pass
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=434924
-
- examples/signal.py          |  34 ++++--
- gi/_gobject/Makefile.am     |   3 +-
- gi/_gobject/__init__.py     |   5 +
- gi/_gobject/signalhelper.py | 251
- ++++++++++++++++++++++++++++++++++++++++++++
- tests/test_signal.py        | 208 ++++++++++++++++++++++++++++++++++--
- 5 files changed, 482 insertions(+), 19 deletions(-)
-
-commit 96fa22369fd188465559fc904c7f76e73040e6dd
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 15:32:12 2012 +0200
-
-    Fix pygtkcompat's Gtk.TreeView.insert_column_with_attributes()
-
-    We have a proper implementation for insert_column_with_attributes()
-    now, so
-    drop pygtkcompat's empty stub for it.
-
-    Also improve test case for
-    Gtk.TreeView.insert_column_with_attributes().
-
- gi/pygtkcompat.py           |  6 ------
- tests/test_overrides_gtk.py | 16 ++++++++--------
- 2 files changed, 8 insertions(+), 14 deletions(-)
-
-commit 542cf22c9de9b2094868c4e879b0f24b15c4c012
-Author: Marta Maria Casetti <mmcasetti@gmail.com>
-Date:   Mon Sep 3 13:06:22 2012 +0200
-
-    Add override for Gtk.TreeView.insert_column_with_attributes()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679415
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py         |  7 +++++++
- tests/test_overrides_gtk.py | 38 ++++++++++++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+)
-
-commit 1c73e845361e471b1c3a3f17e40e6a6cfa740877
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 11:09:55 2012 +0200
-
-    .gitignore: Add missing built files
-
- .gitignore | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-commit 96431f393036a688666dcf67911bf12b9824b264
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 11:07:32 2012 +0200
-
-    Ship tests/gi in tarball
-
-    Spotted by distcheck.
-
- tests/Makefile.am | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-commit dc2c6e6f60d2757462cbceef6176b0b3013904d3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 10:18:45 2012 +0200
-
-    Fix separate build tree and distcheck
-
-    Fix regression from c7c95a79: We must set sys.path in runtests.py
-    properly and
-    cannot rely on setting $PYTHONPATH from Makefile.am only. Python
-    always
-    prepends the directory of the source file to sys.path, but that
-    points to the
-    source dir, not the build dir. The build dir has to take precedence,
-    otherwise
-    we fail to import the built libraries.
-
- tests/runtests-windows.py | 10 +++++++---
- tests/runtests.py         | 13 ++++++++-----
- 2 files changed, 15 insertions(+), 8 deletions(-)
-
-commit 2d8f48f4ff56bb75985136452b50b75895258608
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 07:57:01 2012 +0200
-
-    Split test_overrides.py
-
-    Split the huge test_overrides.py into separate files for gdk, gtk,
-    gio, glib,
-    and pango. Further split the monolithic classes for Gtk and Gio
-    into several
-    ones.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683188
-
- tests/Makefile.am             |    5 +
- tests/test_overrides.py       | 2198
- +----------------------------------------
- tests/test_overrides_gdk.py   |  119 +++
- tests/test_overrides_gio.py   |  114 +++
- tests/test_overrides_glib.py  |  445 +++++++++
- tests/test_overrides_gtk.py   | 1517 ++++++++++++++++++++++++++++
- tests/test_overrides_pango.py |   32 +
- 7 files changed, 2234 insertions(+), 2196 deletions(-)
-
-commit 1223358e2c558dd7ac3300126f989054ec5a5b3f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Sep 3 07:17:57 2012 +0200
-
-    _pygi_argument_to_object(): Clean up array unmarshalling
-
-    The NULL case is already handled at the top, so it does not need to be
-    re-checked again.
-
-    Emit a critical if we fail to allocate a Python array of the
-    requested size.
-
- gi/pygi-argument.c | 47 ++++++++++++++++-------------------------------
- 1 file changed, 16 insertions(+), 31 deletions(-)
-
-commit 65bfbc624bc9da6e18ff2945b14099ab8eeb7601
-Author: Alban Browaeys <prahal@yahoo.com>
-Date:   Wed Aug 29 21:24:17 2012 +0200
-
-    Fix memory leak in _pygi_argument_to_object()
-
-    Avoid leaking the item_type_info when breaking out of the
-    switch in _pygi_argument_to_object() for unmarshalling arrays.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682979
-
- gi/pygi-argument.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-commit 21b1d17d2ada2edf4063a4262b3436c279da3dc2
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sat Sep 1 03:40:31 2012 -0700
-
-    Fix setting pointer fields/arguments to NULL using None.
-
-    Setting gi pointers will set them to the address of the python object.
-    This is good except in the case of None which should be used to NULL
-    the pointer out as a special case.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=683150
-
- gi/pygi-argument.c      |  8 +++++++-
- tests/test_overrides.py | 41 +++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 48 insertions(+), 1 deletion(-)
-
-commit 6123e6f5001ca5eaea18123d8a53525abab31a45
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Aug 23 06:44:27 2012 +0200
-
-    Fix for python 2.6, drop support for < 2.6
-
-    Replace sys.version_info.major access to tuple access which also
-    works for
-    Python 2.6.
-
-    When building for Python 2.6, inject some missing unittest API such as
-    @unittest.skipUnless and assertGreaterEqual() into the unittest
-    module in
-    runtests.py, so that the tests have a chance to run.
-
-    As building with Python 2.5 has been broken for a long time with
-    nobody
-    complaining, and 2.5 is ancient, bump minimum Python requirement to
-    2.6. Drop
-    obsolete #ifdef paths which only apply to <= 2.5.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682422
-
- configure.ac                    |  2 +-
- gi/_glib/pyglib-python-compat.h |  8 --------
- gi/_gobject/gobjectmodule.c     |  8 --------
- gi/module.py                    |  2 +-
- tests/runtests.py               | 27 +++++++++++++++++++++++++++
- tests/test_gi.py                |  2 +-
- 6 files changed, 30 insertions(+), 19 deletions(-)
-
-commit b1a9848a7a7255e6b1ccd98712dd62b1514078b9
-Author: Thibault Saunier <thibault.saunier@collabora.com>
-Date:   Tue Aug 21 07:54:09 2012 +0200
-
-    Allow overrides in other directories than gi itself
-
-    Use pkgutil.extend_path() for the gi and gi.overrides modules, so that
-    libraries can install overrides in a path that is different from
-    the one that
-    pygobject installs itself into. These overrides need to put this
-    into their
-    __init__.py at the top:
-
-        from pkgutil import extend_path
-        __path__ = extend_path(__path__, __name__)
-
-    and put themselves somewhere into the default PYTHONPATH.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680913
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-    Co-Authored-By: Simon Feltman <s.feltman@gmail.com>
-
- gi/__init__.py                 |  4 ++++
- gi/overrides/__init__.py       |  4 ++++
- tests/gi/__init__.py           |  2 ++
- tests/gi/overrides/Regress.py  | 26 ++++++++++++++++++++++++++
- tests/gi/overrides/__init__.py |  2 ++
- tests/test_overrides.py        |  6 ++++++
- 6 files changed, 44 insertions(+)
-
-commit c7c95a795eee499373499ea5b771447746317bfb
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Thu Aug 23 06:03:09 2012 +0200
-
-    Clean up sys.path handling in tests
-
-    Only set sys.path once in runtests.py, not in the individual test
-    modules. This
-    reduces hidden dependencies between tests by building up a run
-    order dependent
-    search path, and also makes it easier in the future to run the
-    tests against
-    the installed system libraries.
-
-    Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=680913
-
- tests/runtests-windows.py | 6 +++++-
- tests/runtests.py         | 3 +++
- tests/test_everything.py  | 1 -
- tests/test_gdbus.py       | 3 ---
- tests/test_overrides.py   | 3 ---
- tests/test_pygtkcompat.py | 3 ---
- 6 files changed, 8 insertions(+), 11 deletions(-)
-
-commit 3e3525e93d852cde0f63e835b774a9b004773c69
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sun Aug 19 02:30:39 2012 -0700
-
-    Fix dynamic creation of enum and flag gi types for Python 3.3
-
-    Importing Gtk was crashing on instantiation of dynamic Enum and Flag
-    subclasses due to what looks to be an unsupported technique.  Change
-    tp_new() method for classes dynamically derived from PyGEnum_Type and
-    PyGFlags_Type to call PyLong_Type.tp_new() instead of attempting
-    to call
-    __new__() as a python method. This technique seems to work with all
-    versions of python so the previous python version checking also became
-    unnecessary.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682323
-
- gi/_gobject/pygenum.c  | 29 ++++++++++++++++-------------
- gi/_gobject/pygflags.c | 21 +++++++++------------
- 2 files changed, 25 insertions(+), 25 deletions(-)
-
-commit dd31b67e821f92b5f1c2ee0382cac5edd477cd11
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Aug 22 10:45:39 2012 +0200
-
-    [API add] Override g_menu_item_set_attribute
-
-    This C utility API take a vararg, add a corresponding override that
-    takes a list of tuples
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682436
-
- gi/overrides/Gio.py     | 10 ++++++++++
- tests/test_overrides.py | 11 +++++++++++
- 2 files changed, 21 insertions(+)
-
-commit 836902801373e386d370c44e7487aac3432f19f6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 23:37:40 2012 +0200
-
-    post-release bump to 3.3.91
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6a629e23ff7b0d6f532184017577c7427d577e28
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 23:05:49 2012 +0200
-
-    release 3.3.90
-
- NEWS         | 13 +++++++++++++
- configure.ac |  2 +-
- 2 files changed, 14 insertions(+), 1 deletion(-)
-
-commit 5cd18c9bd59a60b930ced0b35d728c12bb3291c7
-Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
-Date:   Mon Aug 20 22:54:52 2012 +0200
-
-    Implement marshalling for GParamSpec
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=681565
-
-    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-marshal-to-py.c | 16 ++++++++++++----
- tests/test_gi.py        | 14 ++++++++++++++
- 2 files changed, 26 insertions(+), 4 deletions(-)
-
-commit 16462de3f025f14706ec23fa9b3653feb66ad57f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 15:24:10 2012 +0200
-
-    Fix pep8/pyflakes invocation
-
-    Fix regression from commit 1e056e4f4a: Do fail the tests if
-    pyflakes/pep8
-    exist, but fail.
-
- tests/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 1bee194274bcda9ba5f6751fa921218a92c8ac72
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Thu Aug 16 16:05:52 2012 -0700
-
-    Fix erronous import statements for Python 3.3
-
-    Update pygobject-external.h to use GType (which is what GTypeWrapper
-    is
-    exposed as) instead of GTypeWrapper when attempting import.
-
-    Catch ImportError around attempted imports of a typelibs override file
-    which don't always exist (GObject...). This is a behavioural change in
-    Python 3.3 (http://bugs.python.org/issue15715), but let's fix
-    it anyway.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=682051
-
- gi/module.py            | 7 +++++--
- gi/pygobject-external.h | 2 +-
- 2 files changed, 6 insertions(+), 3 deletions(-)
-
-commit 1e056e4f4a19fd1139187467677c2592c2722290
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 11:52:08 2012 +0200
-
-    Do not fail tests if pyflakes or pep8 are not installed
-
-    These tools might not be desirable in restricted build environments or
-    backports, and e. g. Fedora patches those out. So let the tests
-    work without
-    these tools.
-
- tests/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit c219fa6da89a7d55c5c111751684aae6876a9fe3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 11:42:47 2012 +0200
-
-    gtk-demo: Fix some PEP-8 whitespace issues
-
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 3 +--
- demos/gtk-demo/demos/dialogs.py                  | 2 +-
- demos/gtk-demo/demos/rotatedtext.py              | 3 +--
- 3 files changed, 3 insertions(+), 5 deletions(-)
-
-commit 0ac2a85cae368c046839b5619a96efc9e0b91ba3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 11:38:50 2012 +0200
-
-    test_overrides.py: Fix PEP8 whitespacing
-
- tests/test_overrides.py | 48
- +++++++++++++++++++++++++-----------------------
- 1 file changed, 25 insertions(+), 23 deletions(-)
-
-commit 631a9cd05cbc7dc3d0f743a84b948ef7d93c0ed4
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Aug 20 11:36:19 2012 +0200
-
-    Ignore E124 pep8 error
-
-    This is "closing bracket does not match visual indentation" which
-    is really
-    stupid. We do want the closing bracket at the same indentation level
-    as the
-    opening bracket, not the indentation level of the whole statement.
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 266d37719bb54e6f04d23ff21bcceb9514e20ff2
-Author: David Malcolm <dmalcolm@redhat.com>
-Date:   Mon Aug 20 11:27:52 2012 +0200
-
-    Fix unmarshalling of gssize
-
-    Do not assume that the v_int union member always corresponds to a
-    gssize. This
-    is not true on big-endian 64 bit machines like ppc64, so add a new
-    gi_argument_to_gssize() and use it properly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680693
-    https://bugzilla.redhat.com/show_bug.cgi?id=842880
-
- gi/pygi-argument.c       | 53
- +++++++++++++++++++++++++++++++++++++++++++++---
- gi/pygi-argument.h       |  1 +
- gi/pygi-closure.c        |  2 +-
- gi/pygi-info.c           |  4 ++--
- gi/pygi-signal-closure.c |  2 +-
- 5 files changed, 55 insertions(+), 7 deletions(-)
-
-commit 1c5d497d3c354f4d02f1d4570df2c61d6f47300c
-Author: David Malcolm <dmalcolm@redhat.com>
-Date:   Mon Aug 20 11:19:27 2012 +0200
-
-    Fix various endianess errors
-
-    Fix code which assumed little endian behaviour when mixing different
-    types of
-    ints, putting ints into pointers, etc.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680692
-    https://bugzilla.redhat.com/show_bug.cgi?id=841596
-
- gi/pygi-argument.c        |  64 +++++++++++++--
- gi/pygi-argument.h        |   6 ++
- gi/pygi-cache.c           |   2 +
- gi/pygi-closure.c         |  57 ++++++++++++-
- gi/pygi-marshal-from-py.c | 203
- ++++++++++++++++++++++++++++++++++++----------
- gi/pygi-marshal-from-py.h |   3 +
- gi/pygi-marshal-to-py.c   | 137 ++++++++++++++++++++++++-------
- 7 files changed, 391 insertions(+), 81 deletions(-)
-
-commit ee6da6f1aa2cd6e55834f9edc17f785613d00031
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Aug 15 13:16:11 2012 +0200
-
-    Add unit test for the TreeModelSort override
-
- tests/test_overrides.py | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-commit 9f027daa5737107b5959964b699c0089aec8ab1e
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Thu Aug 9 03:33:06 2012 -0700
-
-    Gtk overrides: Add TreeModelSort.__init__(self, model)
-
-    This adds "model" as a required argument to TreeModelSort
-    instead of it being a hidden keyword argument. This is needed
-    because the model property is set to construct only and the
-    default value of None/NULL makes the object useless anyhow.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=681477
-
- gi/overrides/Gtk.py | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-commit c8424c2bb19356679e250e73542682dd5f4c74a5
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Fri Aug 10 09:38:24 2012 -0300
-
-    Convert Gtk.CellRendererState in the pygi-convert script
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=681596
-
- pygi-convert.sh | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit 54d829b34a0d32d852db370f61cc7f25c149f373
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Aug 6 16:19:28 2012 +0200
-
-    More updates to the HACKING file
-
-    module-install has been replaced with 'ftpadmin install' and other
-    minor
-    changes
-
- HACKING | 26 ++++++++++----------------
- 1 file changed, 10 insertions(+), 16 deletions(-)
-
-commit 0788880c6cf4070d3db09896c165fe470d2ec186
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Aug 6 16:00:39 2012 +0200
-
-    Post-release version bump to 3.3.6
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 664403d953c3e07077d0db90bfae3b51c7f1767c
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Aug 6 15:52:22 2012 +0200
-
-    release 3.3.5
-
- NEWS | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-commit b748753a2a9af018001213e2e58c48d6c8bfadbd
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Aug 6 15:44:32 2012 +0200
-
-    Update HACKING file to mention "make release-news"
-
- HACKING | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-commit 587a0c33901383b891f8eb77351c17f06af20b4f
-Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Aug 6 15:38:23 2012 +0200
-
-    pygi-closure: remove unused variables
-
-    These variables are assigned but never actually used
-
- gi/pygi-closure.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-commit dbc6df6aad7197fcf8721ade429baadd749f7069
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Aug 3 07:13:55 2012 +0200
-
-    tests: Do not break on Pango warnings
-
-    In some restricted environments (like chroots) we sometimes get
-    warnings from
-    Pango when it cannot find an appropriate font. Do not make the tests
-    fail on
-    those.
-
- tests/test_overrides.py   | 4 ++++
- tests/test_pygtkcompat.py | 6 ++++++
- 2 files changed, 10 insertions(+)
-
-commit 770e6abfd5bc5dad7d5f56a18f1ef63f9754ada9
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Aug 3 06:45:48 2012 +0200
-
-    Fix list marshalling on big-endian machines
-
-    On big endian machines we cannot simply set e. g. GIArgument.v_int8
-    and expect
-    GIArgument.v_pointer to be a correct representation. This needs to use
-    GINT_TO_POINTER/GPOINTER_TO_INT properly, so use the already existing
-    _pygi_hash_pointer_to_arg()/_pygi_arg_to_hash_pointer() methods
-    in marshalling
-    to and from GList and GSList, and handle int8 and int16 as well.
-
-    Part of porting pygobject to ppc64:
-    https://bugzilla.redhat.com/show_bug.cgi?id=842880
-    https://bugzilla.gnome.org/show_bug.cgi?id=680693
-
- gi/pygi-marshal-from-py.c | 48 ++++++++++++++++++++++++-----------------
- gi/pygi-marshal-to-py.c   | 54
- +++++++++++++++++++++++++++--------------------
- 2 files changed, 60 insertions(+), 42 deletions(-)
-
-commit b5cd13f47309ec26727b7574e33595a357602468
-Author: Colin Walters <walters@verbum.org>
-Date:   Tue Jul 31 11:47:02 2012 -0400
-
-    pygi-marshal: One more 32-bit -Werror=format fix
-
- gi/pygi-marshal-from-py.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 526bf43691cb6ed908589312b1693a6389eba00c
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jul 31 17:14:37 2012 +0200
-
-    Beautify class/interface type mismatch error messages
-
-    Avoid saying "<unknown module>.int", just skip the module name
-    completely if we do not have one.
-
- gi/pygi-marshal-from-py.c | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
-
-commit 8fb18c62d9c7faff38df3886cb4289b618c81b85
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jul 31 13:13:21 2012 +0200
-
-    Skip instead of fail tests which need Pango, Atk, Gdk, Gtk
-
-    On initial jhbuild bootstrap or restricted environments, the Pango,
-    Atk, Gdk,
-    and Gtk typelibs might not be available. Skip tests which need these
-    instead of
-    failing the testsuite.
-
- tests/test_atoms.py       |  7 ++++++-
- tests/test_everything.py  |  9 ++++++++-
- tests/test_overrides.py   | 32 ++++++++++++++++++++++++++------
- tests/test_pygtkcompat.py | 30 ++++++++++++++++++++----------
- 4 files changed, 60 insertions(+), 18 deletions(-)
-
-commit a2e73c109f3ed6080eabc85810e624b9f984317e
-Author: Colin Walters <walters@verbum.org>
-Date:   Tue Jul 31 09:02:24 2012 -0400
-
-    pygi-argument: Fix -Wformat warning on 32 bit builds
-
- gi/pygi-argument.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 7563bb9f8ed5740f52ddf0ca59daf7839853505b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jul 31 11:14:36 2012 +0200
-
-    Fix tests for Python 2
-
-    In Python 2 we get different error messages for a mismatching self
-    type. Fixes
-    check after commit 121b14028.
-
- tests/test_gi.py | 32 ++++++++++++++++++++------------
- 1 file changed, 20 insertions(+), 12 deletions(-)
-
-commit 5c5b066854cc0b3b7702f31d212aa3f511c62127
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jul 31 10:30:22 2012 +0200
-
-    Build with -Werror=format
-
-    This catches format string problems on particular architectures like
-    in commit
-    dea24f8e12 much more insistently.
-
- configure.ac | 1 +
- 1 file changed, 1 insertion(+)
-
-commit 6e84a3052667fdc88c2081e20cc6dc3257ec9d6c
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Mon Jul 30 02:00:16 2012 -0700
-
-    [API add] pygtkcompat: Add more pixbuf creation functions
-
-    Add the following functions:
-    pixbuf_new_from_data
-    pixbuf_new_from_file_at_scale
-    pixbuf_new_from_file_at_size
-    pixbuf_new_from_inline
-    pixbuf_new_from_stream
-    pixbuf_new_from_stream_at_scale
-    pixbuf_new_from_xpm_data
-    pixbuf_get_file_info
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680814
-
- gi/pygtkcompat.py | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-commit dea24f8e1221516b2d8ea578e55124b0409d6a76
-Author: Colin Walters <walters@verbum.org>
-Date:   Mon Jul 30 22:17:44 2012 -0400
-
-    marshal: Fix a lot of format string warnings on 32 bit
-
-    G_GUINT64_FORMAT and friends handle "%lld" portably.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680878
-
- gi/pygi-marshal-from-py.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-commit b630038d9a1c8cb7e5914c77fbacbed646c154d1
-Author: Colin Walters <walters@verbum.org>
-Date:   Mon Jul 30 22:30:07 2012 -0400
-
-    marshal: Fix build break on Python 2
-
-    I *think* using this wrapper function instead is right.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680879
-
- gi/pygi-marshal-from-py.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-commit a8338a991bbe919f0e2d9b92f7b71f89ccd2c875
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Mon Jul 30 12:53:36 2012 -0300
-
-    Improve testcase for tree_view_column_set_attributes
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680320
-
- tests/test_overrides.py | 20 ++++++++++++++++++--
- 1 file changed, 18 insertions(+), 2 deletions(-)
-
-commit 121b1402860407fe46f7501e42447bf3607872ec
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jul 31 00:37:55 2012 +0200
-
-    Fix error messages on interface/class type mismatches
-
-    Previously, when you called a function with an argument which was not
-    compatible with the expected class/interface type, you got an
-    error message
-    like
-
-      TypeError: Expected Gtk.TreeViewColumn, but got GObjectMeta
-
-    which had the wrong (and useless) class name for the actual type,
-    and did not
-    tell you which argument caused the problem. With this it says e. g.
-
-      TypeError: argument column: Expected Gtk.TreeViewColumn, but
-      got Gtk.Button
-
-    instead.
-
- gi/pygi-marshal-from-py.c | 41 ++++++++++++++++++++++++++--------
- tests/test_gi.py          | 57
- ++++++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 88 insertions(+), 10 deletions(-)
-
-commit 8f31e85db1392eb7222593fc0d05144c2bca06a3
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sun Jul 29 23:36:25 2012 -0700
-
-    Fix crash when returning (False, None) from
-    Gtk.TreeModel.do_get_iter()
-
-    Add a Py_None check before attempting memcpy().
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680812
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-closure.c       | 10 +++++++---
- tests/test_overrides.py |  9 +++++++++
- 2 files changed, 16 insertions(+), 3 deletions(-)
-
-commit 94e5d58e7794de91d3291e0e51c42070da4fc92b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 30 11:58:24 2012 +0200
-
-    Add test case for Gtk.TextIter.forward_search()
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679415
-
- tests/test_overrides.py | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-commit aae4e77482c02e21154ab02b159f380f5f0f74be
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 23:06:39 2012 +0200
-
-    Add missing static declarations
-
-    This fixes a lot of -Wmissing-prototype warnings.
-
-    Also remove _pygi_marshal_cleanup_closure_unref() which is not
-    used anywhere.
-
- gi/_gobject/gobjectmodule.c |  4 ++--
- gi/_gobject/pygobject.c     |  2 +-
- gi/pygi-cache.c             |  2 +-
- gi/pygi-foreign-cairo.c     | 24 ++++++++++++------------
- gi/pygi-foreign.c           |  2 +-
- gi/pygi-marshal-cleanup.c   |  9 ---------
- tests/test-unknown.c        |  2 +-
- tests/testhelpermodule.c    |  4 ++--
- 8 files changed, 20 insertions(+), 29 deletions(-)
-
-commit 5f88d3017f853c4ff5e9fd89ef39e4569a9b9c16
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 23:01:08 2012 +0200
-
-    Fix more missing #includes
-
-    Add missing includes which caused -Wmissing-prototypes warnings.
-
- gi/_gobject/pygenum.c      | 2 ++
- gi/_gobject/pyginterface.c | 2 ++
- 2 files changed, 4 insertions(+)
-
-commit 97b5184c6650964ae8a7616353f5ce8e3ca19af3
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 22:59:21 2012 +0200
-
-    Make some warnings fatal
-
-    Add -Werror for some warnings which are real errors in the source
-    which we
-    really want to avoid. This includes -Wmissing-prototypes, but that
-    currently
-    breaks on building g-i's regress.c.
-
- configure.ac | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit c2ee8c550199de59dd220561ed028ec6fb8e1daf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 22:08:47 2012 +0200
-
-    Fix missing #includes
-
-    Add missing includes which caused -Wmissing-prototypes warnings.
-
- gi/_glib/pygiochannel.c | 2 ++
- gi/_glib/pygspawn.c     | 2 ++
- 2 files changed, 4 insertions(+)
-
-commit 8bc98fc6665ebab763ee92361929139a0ebe66b5
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 20:52:00 2012 +0200
-
-    pygi-info.c: Robustify pointer arithmetic
-
-    In _wrap_g_field_info_{get,set}_value(), use explicit char* casts
-    to point out
-    that we are using byte offsets. Fixes warnings:
-
-    pygi-info.c:1277:43: warning: pointer of type 'void *' used in
-    arithmetic [-Werror=pointer-arith]
-
- gi/pygi-info.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit d0a561057b727ebcc1fd06fa6a3b48f2a1f8338e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jul 27 20:50:30 2012 +0200
-
-    pyglib.c: Remove some dead code
-
-    Drop unused pyglib_gil_state_ensure_py23() and
-    pyglib_gil_state_release_py23().
-
- gi/_glib/pyglib.c | 18 ------------------
- 1 file changed, 18 deletions(-)
-
-commit a46d165d906d0ac7613f4d946542423e979f39d5
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Fri Jul 20 10:37:04 2012 -0300
-
-    Add set_attributes() override to Gtk.TreeViewColumn
-
-    Looking at the C code, gtk_tree_view_column_set_attributesv just calls
-    gtk_cell_layout_clear_attributes and then
-    gtk_cell_layout_add_attribute for each (name, value) passed.  This
-    patch makes the same in the overrides.
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py     | 7 +++++++
- tests/test_overrides.py | 6 ++++++
- 2 files changed, 13 insertions(+)
-
-commit 4df676e10a5ea595a0d491af10268f557dd722d7
-Author: Daniel Narvaez <dwnarvaez@gmail.com>
-Date:   Tue Jul 24 13:49:15 2012 +0200
-
-    Drop git.mk
-
-    The autogenerated gitignores was missing several files. So we
-    was using a manual .gitignore at the root. But since it's
-    enough to add a couple of entries to it to cover the whole
-    tree, there is no much point in using git.mk at all.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678192
-
- Makefile.am               |   3 -
- docs/Makefile.am          |   2 -
- examples/Makefile.am      |   3 -
- gi/Makefile.am            |   3 -
- gi/_glib/Makefile.am      |   3 -
- gi/_gobject/Makefile.am   |   2 -
- gi/overrides/Makefile.am  |   2 -
- gi/repository/Makefile.am |   2 -
- git.mk                    | 200
- ----------------------------------------------
- tests/Makefile.am         |   2 -
- 10 files changed, 222 deletions(-)
-
-commit 0d729c1534c7f3226b492f549d8f6ad3bb3ac8b7
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Fri Jul 20 19:55:46 2012 -0700
-
-    Gtk overrides: Add TreePath.__getitem__()
-
-    Use pythons sub-script operator for indexing into TreePaths
-    as was the case in PyGtk. Also changed __iter__ to use
-    TreePath.get_indices as opposed to formatting and re-parsing
-    a string for getting an index list.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680353
-
- gi/overrides/Gtk.py     | 5 ++++-
- tests/test_overrides.py | 4 ++++
- 2 files changed, 8 insertions(+), 1 deletion(-)
-
-commit affc7faa3fa7250e2e8c2c65e6860906f6fbc4fb
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Fri Jul 20 21:34:33 2012 -0700
-
-    Fix property type mapping from int to TYPE_INT for python3.
-
-    Python3 does not have a long type, however, propertyhelper.py was
-    using long_ = int; to get things working. Type mapping code
-    was then checking for long_ first and always returning TYPE_LONG.
-    Additional refactoring was done to move large if/elif statements
-    into dictionary lookups and usage of tuples instead of lists
-    for simple 'in' list of items tests.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679939
-
- gi/_gobject/propertyhelper.py | 117
- +++++++++++++++++++-----------------------
- tests/test_properties.py      |  55 +++++++++++++++-----
- 2 files changed, 96 insertions(+), 76 deletions(-)
-
-commit 6fddba5bc5ea02938677a89ffeb0cfc53229b894
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Thu Jul 19 12:11:34 2012 -0300
-
-    Convert Gtk.DestDefaults constants in pygi-convert.sh script
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680259
-
- pygi-convert.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit d58c3553062fd8704a81a8233b4a1563a6611718
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Thu Jul 19 12:04:03 2012 -0300
-
-    Convert all Gdk.WindowState constants in pygi-convert.sh
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680257
-
- pygi-convert.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-commit a3aae2e152c0b955037b7b85e16d14d00881d870
-Author: Joe R. Nassimian <placidrage@gmail.com>
-Date:   Thu Jul 19 15:48:20 2012 +0200
-
-    [API add] Add API for checking pygobject's version
-
-    Add a gi.__version__ attribute for the textual version, and
-    gi.version_info for
-    a version triple similar to sys.version_info.
-
-    Also add a gi.require_version(<minimum_version>) which raises an
-    exception if
-    the pygobject version is older.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680176
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/__init__.py   | 16 ++++++++++++++++
- tests/test_gi.py | 16 ++++++++++++++++
- 2 files changed, 32 insertions(+)
-
-commit a2d9b71d84f0fcb7aaf5ce483ffee3b3a1ccaca1
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Mon Jul 16 17:14:46 2012 -0300
-
-    pygi-convert.sh: Add some missing Gdk.CursorTypes
-
-    This patch adds WATCH, ARROW and CLOCK.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680050
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- pygi-convert.sh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit 0b08c01414ac73a4604acd9a846e7af09574929f
-Author: Manuel Kaufmann <humitos@gmail.com>
-Date:   Tue Jul 17 09:05:27 2012 -0300
-
-    pygi-convert.sh: convert rsvg.Handle(data=...)
-
-    Replace rsvg.Handle(data=data) with Rsvg.Handle.new_from_data(data)
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680092
-
-    Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- pygi-convert.sh | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 975855d0fff7f2042fe1f0e843f96b9a37cc6b79
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 17:35:38 2012 +0200
-
-    configure.ac: post-release bump to 3.3.5
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 126842b7227fcc1381dc158acdc5a96d0a465515
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 17:33:08 2012 +0200
-
-    release 3.3.4
-
- NEWS | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
-commit 079b73b3eb9083bd53e06d095f9dccc02acf2a6e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 17:29:22 2012 +0200
-
-    test_gi: Fix for Python 2
-
- tests/test_gi.py | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-commit 30935fe31bfe201bbfdb7734f09fdd2bbaf80e08
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 16:35:33 2012 +0200
-
-    pygi-convert.sh: Drop bogus filter_new() conversion
-
-    my_tree_model.filter_new() is still a method on GtkTreeModel, not a
-    constructor, so do not try to convert it to a constructor call.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679999
-
- pygi-convert.sh | 1 -
- 1 file changed, 1 deletion(-)
-
-commit c0607d970fc59528ca27d518282cf2871b92e909
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 16:00:40 2012 +0200
-
-    Fix help() for GI modules
-
-    Derive DynamicModule from types.ModuleType, so that the inspect
-    modules'
-    ismodule() actually succeeds on those and generates useful help on
-    a GI
-    repository module.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679804
-
- gi/module.py     |  3 ++-
- tests/test_gi.py | 15 +++++++++++++++
- 2 files changed, 17 insertions(+), 1 deletion(-)
-
-commit 3235f1a397c334de5a7570f5ceed4da709fe1714
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 15:53:31 2012 +0200
-
-    Skip gi.CallbackInfo objects from a module's dir()
-
-    Skip gi.CallbackInfo items from IntrospectionModule's __dir__(),
-    as we do not
-    implement __getattr__ for those.
-
-    Add a test case that dir() works on GI modules, contain expected
-    identifiers,
-    and that all identifiers in dir() can actually be retrieved.
-
-    Prerequisite for https://bugzilla.gnome.org/show_bug.cgi?id=679804
-
- gi/module.py     |  7 +++++--
- tests/test_gi.py | 14 ++++++++++++++
- 2 files changed, 19 insertions(+), 2 deletions(-)
-
-commit f6cc039e014448a553d626aac4020ee69717edab
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jul 16 15:38:05 2012 +0200
-
-    Fix __path__ module attribute
-
-    get_typelib_path() returns bytes, not strings, so in Python 3 we
-    need to decode
-    it to get a proper __path__ attribute.
-
- gi/module.py     | 17 +++++++++++++++++
- tests/test_gi.py | 10 ++++++++++
- 2 files changed, 27 insertions(+)
-
-commit 858048f7cec78129aa914e2341ab80aac0e95cc5
-Author: Joe R. Nassimian <placidrage@gmail.com>
-Date:   Mon Jul 16 15:02:10 2012 +0200
-
-    pygi-convert.sh: Fix some child â†’ getChild() false positives
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=680004
-
- pygi-convert.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit a31fabdc12f1da301c8df0af319ca3f4181671ee
-Author: Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
-Date:   Thu Jul 12 09:19:42 2012 +0200
-
-    Fix array handling for interfaces, properties, and signals
-
-    Fix lots of corner cases where arrays are not handled properly.
-    _pygi_argument_to_object() now has the documented expectation of
-    getting arrays
-    packed in GArrays. This was implicit before and not correctly done
-    on most call
-    sites.
-
-    The helper _pygi_argument_to_array() has been improved to work on
-    any kind of
-    array. Fix all call sites of _pygi_argument_to_object() to do the
-    array conversion appropriately before calling
-    _pygi_argument_to_object().
-
-    Adds a test case that implements a GInterface with a method that
-    takes an array
-    of variants as input.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=667244
-
- gi/pygi-argument.c       | 156
- ++++++++++++++++++++++++++++++++---------------
- gi/pygi-argument.h       |   4 +-
- gi/pygi-closure.c        |  11 ++++
- gi/pygi-info.c           |  20 ++++--
- gi/pygi-property.c       |   1 +
- gi/pygi-signal-closure.c |  14 ++++-
- tests/test_gi.py         |  18 ++++++
- 7 files changed, 167 insertions(+), 57 deletions(-)
-
-commit bb80d124269ee2389c04d03a478475868fd9ff7b
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Wed Jul 11 22:05:41 2012 -0300
-
-    Add conversion of the Gdk.PropMode constants to pygi-convert.sh script
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679775
-
- pygi-convert.sh | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit e3a63eefa5fb2abeabd210790e12642e577363c8
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Wed Jul 11 13:18:16 2012 -0300
-
-    Add the same rules for pack_start to convert pack_end
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679760
-
- pygi-convert.sh | 5 +++++
- 1 file changed, 5 insertions(+)
-
-commit b4bef457c2d0ca6899e06a021f1f06252a37e326
-Author: Dave Malcolm <dmalcolm@redhat.com>
-Date:   Wed Jul 11 08:21:27 2012 +0200
-
-    Add error-checking for the case where _arg_cache_new() fails
-
-    This can happen when a typelib and its underlying library are
-    out-of-sync. This
-    converts the segfault into a more helpful traceback.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678914
-
- gi/pygi-cache.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-commit 41287d8a439c656e4ac60361fddec643c713234c
-Author: Manuel Quiñones <manuq@laptop.org>
-Date:   Wed Jul 11 11:13:38 2012 -0300
-
-    Add conversion of the Gdk.NotifyType constants to pygi-convert.sh
-    script
-
-    Signed-off-by: Manuel Quiñones <manuq@laptop.org>
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679754
-
- pygi-convert.sh | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-commit 5403149b900d1b73cbc78767dc43be2eb344c836
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Tue Jul 10 19:07:32 2012 -0700
-
-    Fix PyObject_Repr and PyObject_Str reference leaks
-
-    Fix all calls to PyObject_Repr() and PyObject_Str() to be properly
-    DECREF'd.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675857
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_glib/glibmodule.c       | 10 +++++++--
- gi/_gobject/gobjectmodule.c | 17 ++++++++++-----
- gi/_gobject/pygobject.c     | 53
- ++++++++++++++++++++++++++++++---------------
- gi/pygi-marshal-from-py.c   |  9 +++++---
- 4 files changed, 62 insertions(+), 27 deletions(-)
-
-commit 0ddfecf3bf0a5d7893cd02cff41503d810ef6ce8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jul 4 08:46:30 2012 +0200
-
-    [API add] Gtk overrides: Add TreePath.__len__()
-
-    Use the path depth as length of a Gtk.TreePath object.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679199
-
- gi/overrides/Gtk.py     | 3 +++
- tests/test_overrides.py | 4 ++++
- 2 files changed, 7 insertions(+)
-
-commit e1e849d1a9af77c29ee35971db8d439bac60d573
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jul 4 08:35:16 2012 +0200
-
-    GLib.Variant: Fix repr(), add proper str()
-
-    Fix the GLib.Variant override's repr() after commit 16280d6985. Also
-    add a
-    proper __str__() method, and tests for both.
-
-    Thanks to Rul Matos for spotting this!
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=679336
-
- gi/overrides/GLib.py    | 6 +++++-
- tests/test_overrides.py | 5 +++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-commit af20d7c929b9c1888454b52932a308d346e1c12b
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu Jun 28 06:51:22 2012 +0200
-
-    m4/python.m4: Update Python version list
-
-    Thanks to Dieter Verfaillie for pointing  this out.
-
- m4/python.m4 | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-commit a96a26234e2aaa157837d26094864e3ad9b63edf
-Author: Micah Carrick <micah@quixotix.com>
-Date:   Mon Jun 25 09:05:59 2012 -0700
-
-    Remove "label" property from Gtk.MenuItem if it is not set
-
-    The Gtk.MenuItem will not render as a separator if the "label" or
-    "user-underline" properties have been accessed. The constructor
-    for Gtk.MenuItem override should not pass the "label" property
-    as an argument if it is None since that will still result in an
-    empty label widget which breaks Gtk.SeparatorMenuItem.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=670575
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-commit afa12faf339efb4f7780168e884ecf49b630644a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 16:36:31 2012 +0200
-
-    configure.ac: Post-release bump to 3.3.4.
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 198066effc0ca44ccb897e9f0738ab627e8b3275
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 16:35:49 2012 +0200
-
-    release 3.3.3.1
-
- NEWS         | 3 +++
- configure.ac | 2 +-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-commit cb70ae0aa52ab7624b2b8c30297d8a52a7db7f44
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 16:32:45 2012 +0200
-
-    Do not escape enum and flag names that are Python keywords
-
-    These are translated to upper case, and thus can never be
-    keywords. This broke
-    existing API such as Gtk.ShadowType.IN.
-
- gi/module.py     | 2 +-
- gi/pygi-info.c   | 7 +++++++
- tests/test_gi.py | 3 +++
- 3 files changed, 11 insertions(+), 1 deletion(-)
-
-commit f2524a982b0b8ba7cdbb77003372416af0b7a978
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 15:39:50 2012 +0200
-
-    configure.ac: Post-release version bump to 3.3.4
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit fe56faa346c8e8f9fd5915602424778d458a776d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 15:36:37 2012 +0200
-
-    release 3.3.3
-
- NEWS | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-commit 299a2fd726f0aceaf67b1cec7a0ef8b21ff7bcbc
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 15:35:19 2012 +0200
-
-    Bring back ChangeLog make target
-
-    This is being used by "make dist".
-
- Makefile.am | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-commit 760118e4ed73de2f022706ef897fcc848e90c005
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 15:31:14 2012 +0200
-
-    Remove obsolete ChangeLog and release-tag make targets
-
- Makefile.am | 23 -----------------------
- 1 file changed, 23 deletions(-)
-
-commit e92278692bb51679d6e957c2ac36db64498a7c73
-Author: Simon Schampijer <simon@schampijer.de>
-Date:   Fri Jun 15 16:11:21 2012 +0200
-
-    Do not do any python calls when GObjects are destroyed after the
-    python interpreter has been finalized
-
-    This happens when pygobject_data_free () function is called after
-    the python
-    interpreter shuts down, we can't do python calls after that.
-
-    Benzea did the findings because of a bug in Sugar, and commented
-    in this
-    SugarLabs ticket: http://bugs.sugarlabs.org/ticket/3670
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678046
-
-    Signed-off-by: Benjamin Berg <benzea@sugarlabs.org>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/pygobject.c | 27 ++++++++++++++++++++++-----
- 1 file changed, 22 insertions(+), 5 deletions(-)
-
-commit de4aa426002eeb09a060f8fd70bd6cb25a17766a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 15:06:47 2012 +0200
-
-    Do not change constructor-only "type" Window property
-
-    When reading a Gtk.Window subclass from a GtkBuilder object,
-    the object's
-    properties are already set at __init__ time. Do not try to set it
-    again, to
-    avoid a warning.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678510
-
- gi/overrides/Gtk.py     |  8 +++++++-
- tests/test_overrides.py | 36 ++++++++++++++++++++++++++++++++++++
- 2 files changed, 43 insertions(+), 1 deletion(-)
-
-commit 16280d6985f2cf4db9cf062e857650e620fd9da8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Jun 25 09:40:38 2012 +0200
-
-    Escape identifiers which are Python keywords
-
-    Add a trailing underscore to identifiers which are Python keywords.
-
-    We use a per-major-version static identifier list derived from
-    keyword.kwlist
-    instead of calling out to Python's keyword.iskeyword(). This is
-    much faster,
-    and also allows us to tweak the result. For example, Python 3 dropped
-    "print"
-    as a keyword, but we still want to escape that to avoid breaking
-    the API
-    between different Python versions.
-
-    Error out when building with a major Python version not covered yet,
-    so that we
-    do not forget to update the list in the future.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=676746
-
- gi/pygi-info.c   | 38 +++++++++++++++++++++++++++++++++++++-
- tests/test_gi.py | 17 +++++++++++++++++
- 2 files changed, 54 insertions(+), 1 deletion(-)
-
-commit 3864d7a3b7def035ee2daf22ba717371c8d261de
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 22 13:13:37 2012 +0200
-
-    Ignore E123 in pep8 tests
-
-    This is "closing bracket does not match indentation of opening
-    bracket's line",
-    but it really looks better to have the closing bracket on the
-    indentation level
-    of the opening bracket instead of the indentation level of the
-    line that
-    contains the opening bracket.
-
- tests/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit fb436dd6d3b40b3f2a8ba6f402e2987752ad1902
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 22 13:08:34 2012 +0200
-
-    PEP8: Fix indentation
-
-    Spotted by current pep8 checker.
-
- demos/gtk-demo/demos/Entry/entry_buffer.py     |  6 +--
- demos/gtk-demo/demos/Entry/entry_completion.py |  6 +--
- demos/gtk-demo/demos/Entry/search_entry.py     |  4 +-
- demos/gtk-demo/demos/appwindow.py              |  2 +-
- demos/gtk-demo/demos/clipboard.py              |  8 +--
- demos/gtk-demo/demos/colorselector.py          |  6 +--
- demos/gtk-demo/demos/rotatedtext.py            |  8 +--
- demos/gtk-demo/gtk-demo.py                     |  6 +--
- examples/option.py                             | 29 ++++++-----
- examples/signal.py                             |  3 +-
- gi/_glib/option.py                             |  6 +--
- gi/_gobject/propertyhelper.py                  | 18 +++----
- gi/module.py                                   | 14 +++---
- gi/overrides/GLib.py                           |  2 +-
- gi/overrides/Gio.py                            | 11 +++--
- gi/overrides/Gtk.py                            | 16 +++---
- gi/pygtkcompat.py                              |  7 ++-
- gi/types.py                                    | 17 ++++---
- tests/runtests.py                              |  2 +-
- tests/test_gdbus.py                            | 55 +++++++++++----------
- tests/test_gi.py                               | 15 +++---
- tests/test_gobject.py                          | 18 +++----
- tests/test_option.py                           | 26 +++++-----
- tests/test_overrides.py                        | 67
- +++++++++++++-------------
- tests/test_properties.py                       | 30 ++++++------
- tests/test_signal.py                           |  2 +-
- tests/test_uris.py                             |  9 ++--
- 27 files changed, 200 insertions(+), 193 deletions(-)
-
-commit 129462ccc4a2191ecbb42247030c91bd0f1454f6
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 22 12:36:54 2012 +0200
-
-    PEP8: Use isinstance() instead of direct type comparisons
-
-    Spotted by current pep8 checker.
-
- gi/overrides/GLib.py     | 2 +-
- gi/overrides/__init__.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit 50e45a624e6301e65c150e137aad6d092f203f3f
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 22 12:30:10 2012 +0200
-
-    PEP8: Fix continuation lines
-
-    Spotted by current pep8 checker.
-
- demos/gtk-demo/demos/Entry/search_entry.py |  6 +++---
- gi/__init__.py                             |  6 +++---
- gi/_gobject/__init__.py                    |  6 ++----
- gi/module.py                               |  6 +++---
- tests/test_overrides.py                    | 11 +++--------
- 5 files changed, 14 insertions(+), 21 deletions(-)
-
-commit ef06548b0dc6aee0e8ab208a78966dc1d5d917ee
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 22 12:24:32 2012 +0200
-
-    PEP8: Consistent comparisons against True, False, and None
-
-    Spotted by current pep8 checker.
-
- demos/gtk-demo/demos/clipboard.py   | 4 ++--
- demos/gtk-demo/demos/drawingarea.py | 4 ++--
- demos/gtk-demo/gtk-demo.py          | 8 ++++----
- gi/overrides/Gdk.py                 | 2 +-
- gi/overrides/Gtk.py                 | 2 +-
- tests/test_gi.py                    | 4 ++--
- tests/test_overrides.py             | 3 +--
- 7 files changed, 13 insertions(+), 14 deletions(-)
-
-commit 379c1474a071292a1e8da413af2f5438cff09fc8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jun 20 12:23:12 2012 +0200
-
-    Fix crash in GLib.find_program_in_path()
-
-    We need to handle a NULL return value properly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678119
-
- gi/_glib/glibmodule.c | 10 ++++++++--
- tests/Makefile.am     |  1 +
- tests/test_glib.py    | 15 +++++++++++++++
- 3 files changed, 24 insertions(+), 2 deletions(-)
-
-commit 73531fd7820bd1922347bd856298d68205a27877
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed Jun 20 11:16:39 2012 +0200
-
-    Revert "Do not bind gobject_get_data() and gobject_set_data()"
-
-    We should have some deprecation period for this, so bring back
-    these two
-    methods and add deprecation warnings.
-
-    This reverts commit 24cc09a7105299805fcc5bc151f53ac69958d728.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=641944
-
- gi/_gobject/pygobject.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
-
-commit a0daa843801658929ffee5bcb9eb67d955dc7921
-Author: David Keijser <keijser@gmail.com>
-Date:   Mon Jun 18 15:09:34 2012 +0200
-
-    GVariant: Raise proper TypeError on invalid tuple input
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=678317
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/GLib.py    | 4 ++--
- tests/test_overrides.py | 1 +
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-commit fb39ba934180e1e48fd15774e69d1cecf47a4c84
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jun 5 19:11:38 2012 +0200
-
-    configure.ac: Post-release bump to 3.3.3
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 7f0995e7fa865ebde7490d0570a7135a2f962cdf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jun 5 19:09:12 2012 +0200
-
-    Release 3.3.2
-
- NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 44 insertions(+)
-
-commit 8209c1ae1632c77768699481e574d5d378956e71
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Tue Jun 5 19:04:49 2012 +0200
-
-    Fix "release-news" make target
-
-    Actually list changes since the previous release, not since 3.1.92.
-
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit b21f66d2a399b8c9a36a1758107b7bdff0ec8eaa
-Author: Bastian Winkler <buz@netbuz.org>
-Date:   Wed May 9 19:04:01 2012 +0200
-
-    foreign: Register cairo.Path and cairo.FontOptions foreign structs
-
-    They are rarely used, but they are used at least by Gdk, PangoCairo
-    and
-    Clutter.
-
-    clutter.Path is not used by any API that the test suite uses, so
-    leave that
-    without a test for now.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677388
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-foreign-cairo.c  | 85
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_everything.py |  8 +++++
- 2 files changed, 93 insertions(+)
-
-commit 635a7d1b48d99ddd1ea123797c493b18b0cdfd45
-Author: Marien Zwart <marien.zwart@gmail.com>
-Date:   Wed May 23 01:51:46 2012 +0200
-
-    Check types in GBoxed assignments
-
-    Check if the Python value is GBoxed instead of assuming it is.
-    Without this, the following segfaults:
-
-    from gi.repository import Soup
-
-    msg = Soup.Message()
-    msg.props.uri = 'http://www.gnome.org'
-
-    as we assume the new property is a GBoxed while it is actually a
-    string.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=676603
-
-    Co-authored-by: Martin Pitt <martinpitt@gnome.org>
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-argument.c | 10 +++++++---
- tests/test_gi.py   | 19 +++++++++++++++++++
- 2 files changed, 26 insertions(+), 3 deletions(-)
-
-commit 2305dcd7e8841f87dc2fc683390df78453a5dc2a
-Author: Bastian Winkler <buz@netbuz.org>
-Date:   Sat May 12 14:08:51 2012 +0200
-
-    [API add] Gtk overrides: Add TreeModelRow.get_previous()
-
-    TreeModelRow has get_next() and a next property, it should also have
-    get_previous() and previous.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677389
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-commit 5501fba534696974899f2591929bff9e1b6ecd65
-Author: Bastian Winkler <buz@netbuz.org>
-Date:   Sat May 12 13:50:02 2012 +0200
-
-    [API add] Add missing GObject.TYPE_VARIANT
-
-    Add TYPE_VARIANT to constants to make it accessible as
-    GObject.TYPE_VARIANT.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677387
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/__init__.py  | 1 +
- gi/_gobject/constants.py | 1 +
- 2 files changed, 2 insertions(+)
-
-commit 4c51a5411092f8ab6f8f6e9692a9b49692f621a7
-Author: Jasper St. Pierre <jstpierre@mecheye.net>
-Date:   Fri Jun 1 02:53:13 2012 -0400
-
-    Fix boxed type equality
-
-    Each boxed type has its own Python type, not PyGBoxed_Type. Use
-    PyObject_IsInstance instead of comparing against PyGBoxed_Type
-    directly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677249
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/pygboxed.c   | 3 ++-
- tests/test_everything.py | 8 ++++++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-commit dc8eef26906753fcb3ce057b23ca110137897fa5
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Fri Jun 1 13:43:38 2012 +0200
-
-    Fix TestProperties.testBoxed test
-
-    A typo was preventing the test from being run.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=676644
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- tests/test_properties.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit 853e6a71234ebd66af5a64dfb296e323c2c905a6
-Author: Carlos Garnacho <carlos@lanedo.com>
-Date:   Thu May 17 17:09:15 2012 +0200
-
-    Fix handling of by-reference structs as out parameters
-
-    When marshalling back from python, copy the result of by-reference
-    structs into the memory expected by the native caller, instead of
-    attempting to handle it as a pointer.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=653151
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygi-closure.c | 17 +++++++++++++++++
- tests/test_gi.py  |  5 +++++
- 2 files changed, 22 insertions(+)
-
-commit bac9d526f6a9774821d1c9c0e7b35cc6db942975
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 1 12:28:53 2012 +0200
-
-    tests: Add more vfunc checks for GIMarshallingTestsObject
-
- tests/test_gi.py | 25 +++++++++++++++++++++++++
- 1 file changed, 25 insertions(+)
-
-commit e1aaf4a48453be0e69e7f3a70a2e7a790871a4d2
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 1 12:02:55 2012 +0200
-
-    Test caller-allocated GValue out parameter
-
-    This came up as a side issue in
-    https://bugzilla.gnome.org/show_bug.cgi?id=653151
-
- tests/test_gi.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit edc17e703e1a05e20545d3df9167ceb076450443
-Author: Bastian Winkler <buz@netbuz.org>
-Date:   Wed May 16 11:13:05 2012 +0200
-
-    GObject.bind_property: Support transform functions
-
-    Add support for optional transformation functions to
-    pygobject_bind_property(). It uses a custom PyGClosure to marshal the
-    return value correctly.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=676169
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/pygobject.c | 130
- +++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_gobject.py   |  59 ++++++++++++++++++++++
- 2 files changed, 181 insertions(+), 8 deletions(-)
-
-commit 07a08b49aae83a297e2f91240448314e4663f724
-Author: Carlos Garnacho <carlos@lanedo.com>
-Date:   Mon May 14 15:31:14 2012 +0200
-
-    Fix lookup of vfuncs in parent classes
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=672864.
-
-    As subclasses implemented in python override the attribute for the
-    vfunc, __mro__ has to be used so subclasses of the subclass overriding
-    methods may find the corresponding VFuncInfo.
-
-    Co-Authored-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/types.py      |  6 +++---
- tests/test_gi.py | 27 +++++++++++++++++++++++++++
- 2 files changed, 30 insertions(+), 3 deletions(-)
-
-commit b965ee15bac6cd28d16d32205d96d2b1bdd3f0e1
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Fri Jun 1 08:18:40 2012 +0200
-
-    tests/test_properties.py: Fix whitespace
-
-    The pep8 check failed on this.
-
- tests/test_properties.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 274d60a7c08d74a299f4b83d8054c00eadb4bdbd
-Author: Jasper St. Pierre <jstpierre@mecheye.net>
-Date:   Wed May 30 16:45:53 2012 -0400
-
-    gi: Support zero-terminated arrays with length arguments
-
-    Sometimes, you may see (array zero-terminated=1 length=length)
-    annotations.
-    Don't expose the length argument to the user in this case.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=677124
-
- gi/pygi-cache.c  | 13 ++++---------
- tests/test_gi.py |  3 +++
- 2 files changed, 7 insertions(+), 9 deletions(-)
-
-commit 62c2e962a225ec2527aa3d7406aa0dae232a0886
-Author: Jasper St. Pierre <jstpierre@mecheye.net>
-Date:   Fri May 25 17:09:55 2012 -0400
-
-    Fix build
-
-    libregress now needs cairo-gobject
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9477f0f2f17a6d9b97e5ee08378bc009b8d4c30a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon May 14 15:48:34 2012 +0200
-
-    Fix comment in previous commit
-
- tests/test_gobject.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 6610428394d0c65987de5021bf2c38641cdb7116
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Tue May 8 20:04:09 2012 -0700
-
-    [API add] Add GObject.bind_property method
-
-    This adds the "bind_property" method for binding two gobject
-    properties
-    together. The method returns a weak reference to a GBinding object.
-    The BindingWeakRef object is used to manage GBinding objects within
-    python
-    created through GObject.bind_property. It is a sub-class
-    PyGObjectWeakRef so
-    that we can maintain the same reference counting semantics between
-    Python
-    and GObject Binding objects. This gives explicit direct control of the
-    binding lifetime by using the "unbind" method on the BindingWeakRef
-    object
-    along with implicit management based on the lifetime of the source or
-    target objects.
-
-    Note this does not yet include support for converter closures. This
-    can come
-    later after the initial implementation is accepted.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675582
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/_gobject/pygobject.c | 104
- +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gobject.py   |  90 +++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 193 insertions(+), 1 deletion(-)
-
-commit 88babe7377402f6e6f912a8b83615aab848eae81
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Fri May 11 19:08:47 2012 -0300
-
-    pygtkcompat: Correctly set flags
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675911
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygtkcompat.py         | 5 ++---
- tests/test_pygtkcompat.py | 1 +
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-commit 3f712b56397296bca2f5358cd52977b1a2011964
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Fri May 11 12:39:05 2012 -0300
-
-    Gtk overrides: Implement __delitem__ on TreeModel
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675892
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gtk.py     | 16 ++++++++++++----
- tests/test_overrides.py |  9 +++++++++
- 2 files changed, 21 insertions(+), 4 deletions(-)
-
-commit 9a1a07742ec0b1821d469603f9996a2b7d832f40
-Author: Simon Feltman <s.feltman@gmail.com>
-Date:   Sun May 6 18:10:39 2012 -0700
-
-    Gdk Color override should support red/green/blue_float properties
-
-    Added red_float, green_float, and blue_float properties to Color.
-    Also added Color.from_floats, RGBA.to_color, and RGBA.from_color.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675579
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/overrides/Gdk.py     | 44 ++++++++++++++++++++++++++++++++++++++++++++
- tests/Makefile.am       |  2 +-
- tests/test_overrides.py | 17 +++++++++++++++++
- 3 files changed, 62 insertions(+), 1 deletion(-)
-
-commit d9608c332d9592f03545b110cfac8105453ea035
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat May 5 12:42:42 2012 -0700
-
-    Support marshalling of GVariants for closures
-
-    Add GVariant handling to pyg_value_{as,from}_pyobject(), so that
-    closures can
-    be called with GVariant arguments and return GVariant.
-
-    Unmark the corresponding test case as "expected failure", and also
-    add cases
-    for None values and type mismatches.
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=656554
-
- gi/_gobject/pygtype.c    | 47
- +++++++++++++++++++++++++++++++++++++++++++++--
- tests/test_everything.py | 16 ++++++++++++----
- 2 files changed, 57 insertions(+), 6 deletions(-)
-
-commit e7a909c16dc1c625ab11e270f23d540f15c71767
-Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon May 7 10:33:40 2012 -0300
-
-    Require gobject-introspection 1.33.0
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9e8239684433631e0d1650d25416e4d7bf92a058
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 18:28:23 2012 -0700
-
-    NEWS: Add API additions since 3.2.0
-
- NEWS | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-commit d1a2bf51eb25b54028fbf496d20dfad9546bcb5e
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 18:25:23 2012 -0700
-
-    NEWS: Mark API changes since 3.2.0
-
- NEWS | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit a3329539291bd8ea9aa6cb184a05ea7c21f8885a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 18:19:35 2012 -0700
-
-    Fix commit 168a087 for Python 3
-
-    Simplify the type check and use the already existing one. Fix the
-    string check
-    to work with both Python 2 and 3.
-
- gi/pygi-argument.c | 42 +++++++++---------------------------------
- 1 file changed, 9 insertions(+), 33 deletions(-)
-
-commit 42c717ed77613e02f3c8ef2685bc071462b87d73
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 18:08:57 2012 -0700
-
-    pygtkcompat.py: Typo fix
-
-    Was missing a space around operator, causing the PEP8 check to fail.
-
- gi/pygtkcompat.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 168a08753cec1ff77ccca5d81b9a5fd2af5d3720
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 18:02:04 2012 -0700
-
-    _pygi_argument_from_object(): Check for compatible data type
-
-    Verify that the passed PyObject actually matches the expected type
-    of the
-    argument. With this, trying to assign a wrong type to a property
-    will now raise
-    a proper TypeError.
-
- gi/pygi-argument.c | 39 +++++++++++++++++++++++++++++++++++++++
- gi/pygi-property.c |  3 +++
- tests/test_gi.py   | 40 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 82 insertions(+)
-
-commit 5948b62ba3e08ea943e6965ee38c94c363186226
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 17:59:57 2012 -0700
-
-    pygtkcompat: Fix color conversion
-
-    gtk_style_context_get_background_color() returns a GdkRGBA value,
-    which has
-    float values between 0 and 1. However, we construct a GdkColor
-    object from
-    that, so we need to scale to 0..65535 and round to int.
-
- gi/pygtkcompat.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-commit 6af74c501bc604559f8b5b4e0d856d022ed882bb
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 06:02:31 2012 -0700
-
-    test_gi: Check setting properties in constructor
-
- tests/test_gi.py | 33 +++++++++++++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-commit 9f50fd214e4214f83959b2883a0c667f7f157c97
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sun May 6 05:50:00 2012 -0700
-
-    Support getting and setting GStrv properties
-
- gi/pygi-property.c | 36 ++++++++++++++++++++++++++++++++++++
- tests/test_gi.py   | 11 +++++++++++
- 2 files changed, 47 insertions(+)
-
-commit 8321af2c7df499291e664c676376f149a0c3dcac
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat May 5 13:58:29 2012 -0700
-
-    Support defining GStrv properties from Python
-
- gi/_gobject/propertyhelper.py | 10 ++++++--
- tests/test_properties.py      | 58
- +++++++++++++++++++++++++++++++++++++++++--
- 2 files changed, 64 insertions(+), 4 deletions(-)
-
-commit f2494526e1c579c41babfe7ff67deef0f6966adf
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat May 5 13:21:20 2012 -0700
-
-    Add GObject.TYPE_STRV constant
-
- gi/_gobject/__init__.py  | 1 +
- gi/_gobject/constants.py | 1 +
- tests/test_everything.py | 2 +-
- tests/test_signal.py     | 2 +-
- 4 files changed, 4 insertions(+), 2 deletions(-)
-
-commit 8c7306e4d6355ca45f8f1b4adf7d0595b4e8bcf8
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat May 5 09:28:36 2012 +0200
-
-    Unref GVariants when destroying the wrapper
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675472
-
- gi/overrides/GLib.py | 3 +++
- 1 file changed, 3 insertions(+)
-
-commit d6c091d87c86c8ccc7cb54347fbceccedac61633
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Sat May 5 09:23:55 2012 +0200
-
-    Fix TestArrayGVariant test cases
-
-    test_array_gvariant_container_in() and test_array_gvariant_full_in()
-    called
-    GIMarshallingTests.array_gvariant_none_in(), presumably a copy&paste
-    error.
-    Actually do what they mean to do now and call the corresponding
-    GIMarshallingTests methods.
-
- tests/test_gi.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit fda8a069d503e63c76a6b1ba285a181822549059
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Sat May 5 08:52:41 2012 +0200
-
-    pygtkcompat: Add gdk.pixbuf_get_formats compat code
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675489
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygtkcompat.py         | 20 ++++++++++++++++++++
- tests/test_pygtkcompat.py |  8 ++++++++
- 2 files changed, 28 insertions(+)
-
-commit 2b49c5f58bb841de7a9077eeeaf996eb9851dab3
-Author: Jose Rostagno <joserostagno@vijona.com.ar>
-Date:   Mon Apr 30 13:44:19 2012 -0300
-
-    pygtkcompat: Add some more compat functions
-
-    https://bugzilla.gnome.org/show_bug.cgi?id=675489
-
-    Signed-off-by: Martin Pitt <martinpitt@gnome.org>
-
- gi/pygtkcompat.py | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-commit 16fbb17a9fd17eeb9f886af99e89a214d328dae1
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu May 3 12:25:04 2012 +0200
-
-    Fix tests for Python 3
-
-    cmp() does not exist any more in Python 3, replace with comparison
-    operators.
-
-    GIMarshallingTests.array_in_nonzero_nonlen() expects a guint8 array,
-    so we
-    can't pass a str (which is an Unicode object in Python 3). Pass a
-    byte array
-    instead.
-
- tests/test_gi.py        | 2 +-
- tests/test_overrides.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-commit fd7f8eefbe8aba0b29d80e3eb9d985d33a268c8a
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu May 3 09:38:56 2012 +0200
-
-    Fix building with --disable-cairo
-
-    Build gobject-introspection's regress.c against cairo, not
-    pycairo/py3cairo. We
-    always need cairo to build, so unconditionally check for this in
-    configure.ac.
-
-    In test_everything.py, gracefully handle the absence of the "cairo"
-    Python
-    module, which we do not have when building without cairo support.
-
- configure.ac             | 3 +++
- tests/Makefile.am        | 4 ++--
- tests/test_everything.py | 8 +++++++-
- 3 files changed, 12 insertions(+), 3 deletions(-)
-
-commit 1c5634e6d98c8b67b37a2747951c66f5d8f1907d
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Thu May 3 09:28:51 2012 +0200
-
-    tests: Fix deprecated assertions
-
-    assertAlmostEquals â†’ assertAlmostEqual
-    assertNotEquals â†’ assertNotEqual
-
- tests/test_everything.py |  4 ++--
- tests/test_gi.py         | 12 ++++++------
- tests/test_overrides.py  | 10 +++++-----
- 3 files changed, 13 insertions(+), 13 deletions(-)
-
-commit 07f312e66c07357168098d3f96813d2c997e8dc7
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Wed May 2 12:08:19 2012 +0200
-
-    Run tests with MALLOC_PERTURB_
-
-    We mostly use the glib allocation functions, but this might
-    help to uncover access to already freed or uninitialized memory in
-    a few edge
-    cases.
-
- tests/Makefile.am | 1 +
- 1 file changed, 1 insertion(+)
-
-commit b0740d386c2cbbd153878209b584b568968e4d98
-Author: Martin Pitt <martinpitt@gnome.org>
-Date:   Mon Apr 30 16:26:57 2012 +0200
-
-    configure.ac: Post-release bump to 3.3.2
-
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
 commit d3977266faadacd3d05705497c1cf51a01a6606f
 Author: Martin Pitt <martinpitt@gnome.org>
 Date:   Mon Apr 30 16:08:09 2012 +0200
 
     Release 3.3.1
 
- NEWS | 66
+ NEWS |   66
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 66 insertions(+)
 
@@ -18138,7 +23,7 @@ Date:   Sun Apr 29 23:55:15 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gio.py | 4 ++--
+ gi/overrides/Gio.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 592c67482c254f65817c1a1b5c5de5dfcaab31b4
@@ -18151,8 +36,8 @@ Date:   Sun Apr 29 12:56:50 2012 -0300
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygtkcompat.py         | 2 +-
- tests/test_pygtkcompat.py | 4 ++++
+ gi/pygtkcompat.py         |    2 +-
+ tests/test_pygtkcompat.py |    4 ++++
  2 files changed, 5 insertions(+), 1 deletion(-)
 
 commit 3551462a429ef30274fa01fc8111da5025f9c342
@@ -18167,7 +52,7 @@ Date:   Sun Apr 29 20:17:47 2012 +0200
 
     Do include bug numbers from now on, as they are very useful.
 
- Makefile.am | 12 ++++++++++--
+ Makefile.am |   12 ++++++++++--
  1 file changed, 10 insertions(+), 2 deletions(-)
 
 commit fe79ef612a7853f024b73c7997b8ec89015ae94c
@@ -18178,8 +63,8 @@ Date:   Wed Apr 25 13:07:59 2012 +0200
 
     Similar to "check.gdb", but invokes nemiver.
 
- Makefile.am       | 3 +++
- tests/Makefile.am | 3 +++
+ Makefile.am       |    3 +++
+ tests/Makefile.am |    3 +++
  2 files changed, 6 insertions(+)
 
 commit 3090cc70a7ce8df38dd6cf6c17350417a7367c0b
@@ -18190,7 +75,7 @@ Date:   Tue Apr 24 13:24:00 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637466
 
- tests/test_everything.py | 18 ++++++++++++------
+ tests/test_everything.py |   18 ++++++++++++------
  1 file changed, 12 insertions(+), 6 deletions(-)
 
 commit 88d189ec3e3d900a96496a50c1d6e76615b19558
@@ -18206,7 +91,7 @@ Date:   Tue Apr 24 13:03:36 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666636
 
- tests/test_everything.py | 24 +++++++++++++-----------
+ tests/test_everything.py |   24 +++++++++++++-----------
  1 file changed, 13 insertions(+), 11 deletions(-)
 
 commit 8ee21619b3cfc179cf114813478470d9aa3f6fb8
@@ -18227,9 +112,10 @@ Date:   Mon Apr 23 12:33:09 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661709
 
- gi/pygi-marshal-from-py.c | 18 ++++++++++++++----
- tests/Makefile.am         |  1 +
- tests/test_atoms.py       | 41 +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.c |   18 ++++++++++++++----
+ tests/Makefile.am         |    1 +
+ tests/test_atoms.py       |   41
+ +++++++++++++++++++++++++++++++++++++++++
  3 files changed, 56 insertions(+), 4 deletions(-)
 
 commit b9f24b4fbc2ca9f9b94b86f029c59b2fc3e8590f
@@ -18240,7 +126,7 @@ Date:   Mon Apr 23 20:09:43 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=667954
 
- tests/test_gdbus.py | 2 +-
+ tests/test_gdbus.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3ae38d7519524288a57e5d522954b9d6725f0185
@@ -18255,7 +141,7 @@ Date:   Mon Apr 23 18:47:34 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=674475
 
- tests/test_overrides.py | 31 +++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   31 +++++++++++++++++++++++++++++++
  1 file changed, 31 insertions(+)
 
 commit c12b10ca0feaaf61f23354c7b6631a9ef3635c36
@@ -18270,8 +156,8 @@ Date:   Mon Apr 23 17:40:23 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=660018
 
- gi/overrides/Gtk.py     | 34 ++++++++++++++++++----------------
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Gtk.py     |   34 ++++++++++++++++++----------------
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 24 insertions(+), 16 deletions(-)
 
 commit d37680bb9390426f7f58ea3d352c3e5e2106e978
@@ -18284,8 +170,8 @@ Date:   Mon Apr 23 15:24:04 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=660018
 
- gi/overrides/Gtk.py     | 6 ++++++
- tests/test_overrides.py | 4 ++++
+ gi/overrides/Gtk.py     |    6 ++++++
+ tests/test_overrides.py |    4 ++++
  2 files changed, 10 insertions(+)
 
 commit e03284f852f0e404cc91374f3e2e42b0ac1977b4
@@ -18300,7 +186,7 @@ Date:   Sun Apr 22 16:45:06 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=652860
 
- pygi-convert.sh | 3 ---
+ pygi-convert.sh |    3 ---
  1 file changed, 3 deletions(-)
 
 commit f82eca6006dec21624796074af8ffe9b2256f7a4
@@ -18309,14 +195,14 @@ Date:   Sat Apr 21 14:00:50 2012 +0200
 
     tests: Replace deprecated assertEquals() with assertEqual()
 
- tests/test_everything.py  | 144 ++++++-------
- tests/test_gi.py          | 502
- +++++++++++++++++++++++-----------------------
- tests/test_gobject.py     |  58 +++---
- tests/test_option.py      |   6 +-
- tests/test_overrides.py   | 352 ++++++++++++++++----------------
- tests/test_properties.py  |  18 +-
- tests/test_pygtkcompat.py |  42 ++--
+ tests/test_everything.py  |  144 ++++++-------
+ tests/test_gi.py          |  502
+ ++++++++++++++++++++++-----------------------
+ tests/test_gobject.py     |   58 +++---
+ tests/test_option.py      |    6 +-
+ tests/test_overrides.py   |  352 +++++++++++++++----------------
+ tests/test_properties.py  |   18 +-
+ tests/test_pygtkcompat.py |   42 ++--
  7 files changed, 561 insertions(+), 561 deletions(-)
 
 commit ddb0bf01e694585d58af52673a21796e7c9578ea
@@ -18327,7 +213,7 @@ Date:   Sat Apr 21 12:02:54 2012 +0200
 
     Fixes https://bugzilla.gnome.org/show_bug.cgi?id=642754
 
- gi/pygi-info.c | 1 +
+ gi/pygi-info.c |    1 +
  1 file changed, 1 insertion(+)
 
 commit 9c48a561c5ee010410df7d6e430353b41d5fbd88
@@ -18345,9 +231,9 @@ Date:   Thu Apr 12 20:30:05 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-cache.c           | 4 +++-
- gi/pygi-marshal-cleanup.c | 4 ++--
- tests/test_gi.py          | 3 +++
+ gi/pygi-cache.c           |    4 +++-
+ gi/pygi-marshal-cleanup.c |    4 ++--
+ tests/test_gi.py          |    3 +++
  3 files changed, 8 insertions(+), 3 deletions(-)
 
 commit 71246ca0568bf3e9b81e88dd13b6d29e9417e313
@@ -18364,10 +250,10 @@ Date:   Thu Apr 19 13:11:56 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=674351
 
- gi/_gobject/gobjectmodule.c   |  5 ++++-
- gi/_gobject/propertyhelper.py |  9 ++++++---
- tests/test_properties.py      | 42
- +++++++++++++++++++++++++++++++++++++++---
+ gi/_gobject/gobjectmodule.c   |    5 ++++-
+ gi/_gobject/propertyhelper.py |    9 ++++++---
+ tests/test_properties.py      |   42
+ ++++++++++++++++++++++++++++++++++++++---
  3 files changed, 49 insertions(+), 7 deletions(-)
 
 commit 2158ecd05a2770d6538bae67d01d1f718855a7d4
@@ -18380,7 +266,7 @@ Date:   Thu Apr 19 16:12:29 2012 +0200
     we test the
     properties of the right object.
 
- tests/test_everything.py | 2 +-
+ tests/test_everything.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 84e3471ba4595534cbe6875f1c8b77776e1d1814
@@ -18395,8 +281,8 @@ Date:   Wed Apr 18 21:44:08 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygtype.c    |  9 +++++++--
- tests/test_everything.py | 15 +++++++++++++++
+ gi/_gobject/pygtype.c    |    9 +++++++--
+ tests/test_everything.py |   15 +++++++++++++++
  2 files changed, 22 insertions(+), 2 deletions(-)
 
 commit d1362451e070e156d2f49c9cde930cc38befb12b
@@ -18405,8 +291,8 @@ Date:   Thu Apr 19 07:27:10 2012 +0200
 
     Add missing GObject.TYPE_GTYPE
 
- gi/_gobject/__init__.py  | 1 +
- gi/_gobject/constants.py | 1 +
+ gi/_gobject/__init__.py  |    1 +
+ gi/_gobject/constants.py |    1 +
  2 files changed, 2 insertions(+)
 
 commit d3225f1540e09719caa73e52d402e946da3add24
@@ -18415,7 +301,7 @@ Date:   Tue Apr 10 12:44:00 2012 +0200
 
     Fix test_mainloop.py for Python 3
 
- tests/test_mainloop.py | 9 +++++++--
+ tests/test_mainloop.py |    9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 903283119896f3e054694484da4147788b02ce60
@@ -18435,7 +321,7 @@ Date:   Mon Apr 9 15:20:39 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616279
 
- tests/test_everything.py | 16 ++++++++--------
+ tests/test_everything.py |   16 ++++++++--------
  1 file changed, 8 insertions(+), 8 deletions(-)
 
 commit 0fd900d351c8d7d57dc6a1b049ee05f342f6ab1d
@@ -18461,9 +347,9 @@ Date:   Sun Mar 18 15:59:58 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c | 138 +++++++++++++++++++++++++++++++++++++++---
- tests/test_gobject.py   | 158
- ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.c |  138 ++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py   |  158
+ +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 288 insertions(+), 8 deletions(-)
 
 commit c0922589964c1d8bffe5a56d2f56df96eedfac10
@@ -18474,8 +360,8 @@ Date:   Wed Apr 4 19:08:54 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620943
 
- gi/_gobject/propertyhelper.py |  9 +++++++--
- tests/test_properties.py      | 28 +++++++++++++++++++++++++++-
+ gi/_gobject/propertyhelper.py |    9 +++++++--
+ tests/test_properties.py      |   28 +++++++++++++++++++++++++++-
  2 files changed, 34 insertions(+), 3 deletions(-)
 
 commit d4054be9de3b7e4ed64c8172ebbde0a697462c79
@@ -18488,8 +374,8 @@ Date:   Wed Apr 4 17:54:52 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=524719
 
- gi/_glib/pygsource.c | 15 +++++++++++++++
- tests/test_source.py | 24 ++++++++++++++++++++++++
+ gi/_glib/pygsource.c |   15 +++++++++++++++
+ tests/test_source.py |   24 ++++++++++++++++++++++++
  2 files changed, 39 insertions(+)
 
 commit 05030a95a4d3090162ed5f510a26d69bbb152942
@@ -18502,8 +388,8 @@ Date:   Wed Apr 4 15:59:24 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=646667
 
- gi/overrides/__init__.py |  7 ++++---
- tests/test_overrides.py  | 13 +++++++++++++
+ gi/overrides/__init__.py |    7 ++++---
+ tests/test_overrides.py  |   13 +++++++++++++
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 96f14989baea76fe8692f10c1a37e2dfc45fecbf
@@ -18521,8 +407,8 @@ Date:   Wed Apr 4 15:30:55 2012 +0200
 
     Co-authored-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |  4 ++++
- tests/test_gobject.py   | 11 +++++++++++
+ gi/_gobject/pygobject.c |    4 ++++
+ tests/test_gobject.py   |   11 +++++++++++
  2 files changed, 15 insertions(+)
 
 commit 24cc09a7105299805fcc5bc151f53ac69958d728
@@ -18538,7 +424,7 @@ Date:   Wed Feb 9 18:37:33 2011 +0100
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c | 40 ----------------------------------------
+ gi/_gobject/pygobject.c |   40 ----------------------------------------
  1 file changed, 40 deletions(-)
 
 commit 2a5a33a9c9c170830c98c2e32fa8dcea3c35f2e6
@@ -18553,7 +439,7 @@ Date:   Tue Apr 3 22:26:34 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663068
 
- tests/test_mainloop.py | 25 ++++++++++++++++++++++++-
+ tests/test_mainloop.py |   25 ++++++++++++++++++++++++-
  1 file changed, 24 insertions(+), 1 deletion(-)
 
 commit d03696c1aaa7e66f8f16554cf4a4b97addb5aea1
@@ -18575,22 +461,22 @@ Date:   Tue Feb 21 15:13:42 2012 +0100
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/Makefile.am                |   2 +
- gi/gimodule.c                 |   1 +
- gi/module.py                  |   5 +++
- gi/pygi-argument.c            |  12 +----
- gi/pygi-cache.c               |  28 ++++++++++--
- gi/pygi-cache.h               |   9 ++--
- gi/pygi-ccallback.c           | 100
- ++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-ccallback.h           |  41 +++++++++++++++++
- gi/pygi-closure.c             |  50 ++++++++++++++++++++-
- gi/pygi-invoke-state-struct.h |   2 +
- gi/pygi-invoke.c              |  73 ++++++++++++++++++++----------
- gi/pygi-invoke.h              |   3 ++
- gi/pygi-private.h             |   1 +
- gi/pygi.h                     |  10 +++++
- tests/test_gi.py              |  16 +++++++
+ gi/Makefile.am                |    2 +
+ gi/gimodule.c                 |    1 +
+ gi/module.py                  |    5 +++
+ gi/pygi-argument.c            |   12 +----
+ gi/pygi-cache.c               |   28 ++++++++++--
+ gi/pygi-cache.h               |    9 ++--
+ gi/pygi-ccallback.c           |  100
+ +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-ccallback.h           |   41 +++++++++++++++++
+ gi/pygi-closure.c             |   50 ++++++++++++++++++++-
+ gi/pygi-invoke-state-struct.h |    2 +
+ gi/pygi-invoke.c              |   73 +++++++++++++++++++++---------
+ gi/pygi-invoke.h              |    3 ++
+ gi/pygi-private.h             |    1 +
+ gi/pygi.h                     |   10 +++++
+ tests/test_gi.py              |   16 +++++++
  15 files changed, 312 insertions(+), 41 deletions(-)
 
 commit db7e1d078db16b6f11dee51aa97525c451346632
@@ -18603,7 +489,7 @@ Date:   Tue Mar 27 17:34:48 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- tests/test_everything.py | 19 +++++++++++++++++++
+ tests/test_everything.py |   19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 7c0017c30129a8db391f902ed592782200d69c64
@@ -18616,7 +502,7 @@ Date:   Mon Mar 26 17:55:41 2012 +0200
     released. So
     continue with 3.3.x on master.
 
- configure.ac | 4 ++--
+ configure.ac |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8309f305e5ce508fc5f6411c8153bea2cee5f741
@@ -18630,8 +516,8 @@ Date:   Mon Mar 26 17:51:37 2012 +0200
     - Ignore *.pyc files.
     - Do not ignore .gitignore, we actually want to track this.
 
- .gitignore | 61
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ .gitignore |   61
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 61 insertions(+)
 
 commit 81de788a72b40acd2f857718d78bdeea01d12eb1
@@ -18646,13 +532,13 @@ Date:   Mon Mar 26 17:45:08 2012 +0200
     - "make clean" should remove *.pyc files
     - tests/runtests.py: Look for tests in srcdir, not in builddir
 
- Makefile.am               |  6 ++++--
- gi/Makefile.am            | 13 +++++++++++--
- gi/_glib/Makefile.am      | 12 ++++++++++--
- gi/_gobject/Makefile.am   | 12 ++++++++++--
- gi/overrides/Makefile.am  | 10 ++++++++++
- gi/repository/Makefile.am | 11 +++++++++++
- tests/runtests.py         |  6 ++++--
+ Makefile.am               |    6 ++++--
+ gi/Makefile.am            |   13 +++++++++++--
+ gi/_glib/Makefile.am      |   12 ++++++++++--
+ gi/_gobject/Makefile.am   |   12 ++++++++++--
+ gi/overrides/Makefile.am  |   10 ++++++++++
+ gi/repository/Makefile.am |   11 +++++++++++
+ tests/runtests.py         |    6 ++++--
  7 files changed, 60 insertions(+), 10 deletions(-)
 
 commit f83d95e6fff572bda659a48e309b4524dafa4e83
@@ -18666,7 +552,7 @@ Date:   Thu Mar 22 11:14:03 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/Makefile.am | 9 ++++-----
+ tests/Makefile.am |    9 ++++-----
  1 file changed, 4 insertions(+), 5 deletions(-)
 
 commit d1f5474c6c50163aefe660e0689dc7f30e6cd48b
@@ -18677,14 +563,14 @@ Date:   Thu Mar 22 10:56:59 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/Icon View/iconviewedit.py |  7 +++----
- demos/gtk-demo/demos/Tree View/liststore.py    | 28
- +++++++++++++-------------
- demos/gtk-demo/demos/appwindow.py              | 10 ++++-----
- demos/gtk-demo/demos/rotatedtext.py            |  2 +-
- examples/cairo-demo.py                         |  4 ++--
- tests/test_gi.py                               | 12 +++++------
- tests/test_overrides.py                        |  2 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    7 +++---
+ demos/gtk-demo/demos/Tree View/liststore.py    |   28
+ ++++++++++++------------
+ demos/gtk-demo/demos/appwindow.py              |   10 ++++-----
+ demos/gtk-demo/demos/rotatedtext.py            |    2 +-
+ examples/cairo-demo.py                         |    4 ++--
+ tests/test_gi.py                               |   12 +++++-----
+ tests/test_overrides.py                        |    2 +-
  7 files changed, 32 insertions(+), 33 deletions(-)
 
 commit 032fcce2bf6070a9001cbb780e90403051e303b1
@@ -18695,16 +581,16 @@ Date:   Thu Mar 22 10:56:03 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/drawingarea.py |  6 +++---
- demos/gtk-demo/demos/images.py      | 10 +++++-----
- demos/gtk-demo/demos/rotatedtext.py |  2 +-
- gi/__init__.py                      |  2 +-
- gi/_glib/option.py                  |  2 +-
- gi/_gobject/__init__.py             |  2 +-
- gi/overrides/GLib.py                | 12 ++++++------
- gi/types.py                         |  4 ++--
- tests/runtests.py                   |  2 +-
- tests/test_gdbus.py                 |  4 ++--
+ demos/gtk-demo/demos/drawingarea.py |    6 +++---
+ demos/gtk-demo/demos/images.py      |   10 +++++-----
+ demos/gtk-demo/demos/rotatedtext.py |    2 +-
+ gi/__init__.py                      |    2 +-
+ gi/_glib/option.py                  |    2 +-
+ gi/_gobject/__init__.py             |    2 +-
+ gi/overrides/GLib.py                |   12 ++++++------
+ gi/types.py                         |    4 ++--
+ tests/runtests.py                   |    2 +-
+ tests/test_gdbus.py                 |    4 ++--
  10 files changed, 23 insertions(+), 23 deletions(-)
 
 commit 6a58edbf11c612e9a14347b1556d1e0dd2ec1823
@@ -18715,11 +601,12 @@ Date:   Thu Mar 22 10:52:05 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/Tree View/liststore.py |  2 +-
- demos/gtk-demo/demos/appwindow.py           |  2 +-
- tests/test_everything.py                    | 23 +++++++++--------------
- tests/test_gi.py                            |  2 +-
- tests/test_overrides.py                     |  2 +-
+ demos/gtk-demo/demos/Tree View/liststore.py |    2 +-
+ demos/gtk-demo/demos/appwindow.py           |    2 +-
+ tests/test_everything.py                    |   23
+ +++++++++--------------
+ tests/test_gi.py                            |    2 +-
+ tests/test_overrides.py                     |    2 +-
  5 files changed, 13 insertions(+), 18 deletions(-)
 
 commit a8d361e66b2a0e09cfa5dbade4725074b0cc2fd1
@@ -18730,7 +617,7 @@ Date:   Thu Mar 22 10:49:52 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/test_overrides.py | 2 +-
+ tests/test_overrides.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2b8eb9fa5b9ca454d7130b3eec15a982fee1bdc9
@@ -18741,8 +628,8 @@ Date:   Thu Mar 22 10:49:27 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/rotatedtext.py | 1 -
- tests/test_overrides.py             | 1 -
+ demos/gtk-demo/demos/rotatedtext.py |    1 -
+ tests/test_overrides.py             |    1 -
  2 files changed, 2 deletions(-)
 
 commit 03e597cb8f3b075efae556ee51a598695a883ad3
@@ -18753,12 +640,12 @@ Date:   Thu Mar 22 10:48:59 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/images.py |  2 +-
- examples/cairo-demo.py         |  8 ++++----
- tests/test_gi.py               |  4 ++--
- tests/test_overrides.py        |  8 ++++----
- tests/test_properties.py       | 14 +++++++-------
- tests/test_signal.py           |  2 +-
+ demos/gtk-demo/demos/images.py |    2 +-
+ examples/cairo-demo.py         |    8 ++++----
+ tests/test_gi.py               |    4 ++--
+ tests/test_overrides.py        |    8 ++++----
+ tests/test_properties.py       |   14 +++++++-------
+ tests/test_signal.py           |    2 +-
  6 files changed, 19 insertions(+), 19 deletions(-)
 
 commit 21aeb19107b718293116e51ecd6479d4d7198b8f
@@ -18769,23 +656,23 @@ Date:   Thu Mar 22 10:46:17 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/Entry/entry_buffer.py     |  2 +-
- demos/gtk-demo/demos/Entry/entry_completion.py |  2 +-
- demos/gtk-demo/demos/Entry/search_entry.py     | 12 ++---
- demos/gtk-demo/demos/Icon View/iconviewedit.py |  4 +-
- demos/gtk-demo/demos/Tree View/liststore.py    |  2 +-
- demos/gtk-demo/demos/dialogs.py                | 12 ++---
- demos/gtk-demo/demos/pickers.py                |  8 ++--
- demos/gtk-demo/demos/pixbuf.py                 |  4 +-
- demos/gtk-demo/demos/printing.py               |  8 ++--
- demos/gtk-demo/demos/rotatedtext.py            |  2 +-
- demos/gtk-demo/gtk-demo.py                     |  4 +-
- gi/module.py                                   |  4 +-
- gi/overrides/Pango.py                          |  2 +-
- gi/pygtkcompat.py                              |  4 +-
- tests/test_everything.py                       |  4 +-
- tests/test_overrides.py                        | 62
- +++++++++++++-------------
+ demos/gtk-demo/demos/Entry/entry_buffer.py     |    2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py |    2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py     |   12 ++---
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    4 +-
+ demos/gtk-demo/demos/Tree View/liststore.py    |    2 +-
+ demos/gtk-demo/demos/dialogs.py                |   12 ++---
+ demos/gtk-demo/demos/pickers.py                |    8 +--
+ demos/gtk-demo/demos/pixbuf.py                 |    4 +-
+ demos/gtk-demo/demos/printing.py               |    8 +--
+ demos/gtk-demo/demos/rotatedtext.py            |    2 +-
+ demos/gtk-demo/gtk-demo.py                     |    4 +-
+ gi/module.py                                   |    4 +-
+ gi/overrides/Pango.py                          |    2 +-
+ gi/pygtkcompat.py                              |    4 +-
+ tests/test_everything.py                       |    4 +-
+ tests/test_overrides.py                        |   62
+ ++++++++++++------------
  16 files changed, 68 insertions(+), 68 deletions(-)
 
 commit b04d209930ab01bae6563b0d714aec829739bdc6
@@ -18796,7 +683,7 @@ Date:   Thu Mar 22 10:40:46 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/test_signal.py | 20 ++++++++++----------
+ tests/test_signal.py |   20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)
 
 commit 725483a5dc36739dc7836716b5d6d48091564bf8
@@ -18807,67 +694,67 @@ Date:   Thu Mar 22 10:38:59 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/Entry/entry_buffer.py       |  1 +
- demos/gtk-demo/demos/Entry/entry_completion.py   |  1 +
- demos/gtk-demo/demos/Entry/search_entry.py       |  3 +-
- demos/gtk-demo/demos/Icon View/iconviewbasics.py |  1 +
- demos/gtk-demo/demos/Icon View/iconviewedit.py   |  2 +
- demos/gtk-demo/demos/Tree View/liststore.py      |  3 ++
- demos/gtk-demo/demos/appwindow.py                | 13 +++++-
- demos/gtk-demo/demos/assistant.py                |  1 +
- demos/gtk-demo/demos/builder.py                  |  1 +
- demos/gtk-demo/demos/button_box.py               |  1 +
- demos/gtk-demo/demos/clipboard.py                |  2 +-
- demos/gtk-demo/demos/colorselector.py            |  1 +
- demos/gtk-demo/demos/combobox.py                 |  4 +-
- demos/gtk-demo/demos/dialogs.py                  |  2 +
- demos/gtk-demo/demos/drawingarea.py              |  1 +
- demos/gtk-demo/demos/expander.py                 |  4 +-
- demos/gtk-demo/demos/images.py                   | 10 +++--
- demos/gtk-demo/demos/infobars.py                 |  2 +
- demos/gtk-demo/demos/links.py                    |  2 +
- demos/gtk-demo/demos/menus.py                    |  2 +
- demos/gtk-demo/demos/pickers.py                  |  2 +
- demos/gtk-demo/demos/pixbuf.py                   |  2 +
- demos/gtk-demo/demos/printing.py                 |  5 ++-
- demos/gtk-demo/demos/rotatedtext.py              |  4 +-
- demos/gtk-demo/demos/test.py                     |  1 +
- demos/gtk-demo/gtk-demo.py                       |  9 ++--
- examples/cairo-demo.py                           | 57
- ++++++++++++++----------
- examples/option.py                               |  1 -
- examples/properties.py                           |  1 +
- examples/signal.py                               |  4 ++
- gi/__init__.py                                   |  2 +
- gi/_glib/option.py                               |  4 +-
- gi/_gobject/__init__.py                          |  1 +
- gi/_gobject/propertyhelper.py                    |  5 ++-
- gi/module.py                                     |  3 ++
- gi/overrides/GIMarshallingTests.py               |  2 +
- gi/overrides/GLib.py                             | 12 +++--
- gi/overrides/Gdk.py                              |  9 ++++
- gi/overrides/Gio.py                              |  4 ++
- gi/overrides/Gtk.py                              | 56
- ++++++++++++++++++++---
- gi/overrides/Pango.py                            |  2 +
- gi/overrides/__init__.py                         |  5 ++-
- gi/pygtkcompat.py                                | 16 +++++--
- gi/types.py                                      |  4 ++
- tests/test_everything.py                         | 30 +++++++++----
- tests/test_gdbus.py                              |  1 +
- tests/test_gi.py                                 | 30 +++++++------
- tests/test_gobject.py                            |  3 +-
- tests/test_mainloop.py                           |  1 +
- tests/test_option.py                             |  1 +
- tests/test_overrides.py                          | 55
- ++++++++++++-----------
- tests/test_properties.py                         | 11 ++++-
- tests/test_signal.py                             | 32 ++++++++++++-
- tests/test_source.py                             |  1 +
- tests/test_subprocess.py                         |  1 +
- tests/test_thread.py                             |  1 +
- tests/test_uris.py                               |  1 +
- tests/testmodule.py                              |  1 +
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    1 +
+ demos/gtk-demo/demos/Entry/search_entry.py       |    3 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    1 +
+ demos/gtk-demo/demos/Icon View/iconviewedit.py   |    2 +
+ demos/gtk-demo/demos/Tree View/liststore.py      |    3 ++
+ demos/gtk-demo/demos/appwindow.py                |   13 ++++-
+ demos/gtk-demo/demos/assistant.py                |    1 +
+ demos/gtk-demo/demos/builder.py                  |    1 +
+ demos/gtk-demo/demos/button_box.py               |    1 +
+ demos/gtk-demo/demos/clipboard.py                |    2 +-
+ demos/gtk-demo/demos/colorselector.py            |    1 +
+ demos/gtk-demo/demos/combobox.py                 |    4 +-
+ demos/gtk-demo/demos/dialogs.py                  |    2 +
+ demos/gtk-demo/demos/drawingarea.py              |    1 +
+ demos/gtk-demo/demos/expander.py                 |    4 +-
+ demos/gtk-demo/demos/images.py                   |   10 ++--
+ demos/gtk-demo/demos/infobars.py                 |    2 +
+ demos/gtk-demo/demos/links.py                    |    2 +
+ demos/gtk-demo/demos/menus.py                    |    2 +
+ demos/gtk-demo/demos/pickers.py                  |    2 +
+ demos/gtk-demo/demos/pixbuf.py                   |    2 +
+ demos/gtk-demo/demos/printing.py                 |    5 +-
+ demos/gtk-demo/demos/rotatedtext.py              |    4 +-
+ demos/gtk-demo/demos/test.py                     |    1 +
+ demos/gtk-demo/gtk-demo.py                       |    9 ++--
+ examples/cairo-demo.py                           |   57
+ +++++++++++++---------
+ examples/option.py                               |    1 -
+ examples/properties.py                           |    1 +
+ examples/signal.py                               |    4 ++
+ gi/__init__.py                                   |    2 +
+ gi/_glib/option.py                               |    4 +-
+ gi/_gobject/__init__.py                          |    1 +
+ gi/_gobject/propertyhelper.py                    |    5 +-
+ gi/module.py                                     |    3 ++
+ gi/overrides/GIMarshallingTests.py               |    2 +
+ gi/overrides/GLib.py                             |   12 +++--
+ gi/overrides/Gdk.py                              |    9 ++++
+ gi/overrides/Gio.py                              |    4 ++
+ gi/overrides/Gtk.py                              |   56
+ +++++++++++++++++++--
+ gi/overrides/Pango.py                            |    2 +
+ gi/overrides/__init__.py                         |    5 +-
+ gi/pygtkcompat.py                                |   16 ++++--
+ gi/types.py                                      |    4 ++
+ tests/test_everything.py                         |   30 ++++++++----
+ tests/test_gdbus.py                              |    1 +
+ tests/test_gi.py                                 |   30 ++++++------
+ tests/test_gobject.py                            |    3 +-
+ tests/test_mainloop.py                           |    1 +
+ tests/test_option.py                             |    1 +
+ tests/test_overrides.py                          |   55
+ +++++++++++----------
+ tests/test_properties.py                         |   11 ++++-
+ tests/test_signal.py                             |   32 +++++++++++-
+ tests/test_source.py                             |    1 +
+ tests/test_subprocess.py                         |    1 +
+ tests/test_thread.py                             |    1 +
+ tests/test_uris.py                               |    1 +
+ tests/testmodule.py                              |    1 +
  58 files changed, 326 insertions(+), 111 deletions(-)
 
 commit 917275d4aa81db39ccaca34fa514032fb80a3187
@@ -18878,15 +765,15 @@ Date:   Thu Mar 22 10:33:29 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/appwindow.py     |  8 ++++----
- demos/gtk-demo/demos/colorselector.py |  4 ++--
- demos/gtk-demo/gtk-demo.py            | 24 ++++++++++++------------
- examples/option.py                    |  4 ++--
- gi/_glib/option.py                    |  2 +-
- gi/overrides/Gtk.py                   |  2 +-
- tests/test_gi.py                      | 26 +++++++++++++-------------
- tests/test_option.py                  |  2 +-
- tests/test_overrides.py               |  8 ++++----
+ demos/gtk-demo/demos/appwindow.py     |    8 ++++----
+ demos/gtk-demo/demos/colorselector.py |    4 ++--
+ demos/gtk-demo/gtk-demo.py            |   24 ++++++++++++------------
+ examples/option.py                    |    4 ++--
+ gi/_glib/option.py                    |    2 +-
+ gi/overrides/Gtk.py                   |    2 +-
+ tests/test_gi.py                      |   26 +++++++++++++-------------
+ tests/test_option.py                  |    2 +-
+ tests/test_overrides.py               |    8 ++++----
  9 files changed, 40 insertions(+), 40 deletions(-)
 
 commit 0c85656f95d3cb31becff10bbee7faae7b0b875b
@@ -18897,15 +784,15 @@ Date:   Thu Mar 22 10:28:28 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/appwindow.py |  4 ++--
- demos/gtk-demo/demos/dialogs.py   | 30 +++++++++++++++---------------
- demos/gtk-demo/demos/links.py     |  2 +-
- demos/gtk-demo/demos/pixbuf.py    |  2 +-
- demos/gtk-demo/demos/printing.py  |  8 ++++----
- gi/overrides/Gtk.py               |  4 ++--
- tests/test_everything.py          | 22 +++++++++++-----------
- tests/test_gi.py                  |  2 +-
- tests/test_overrides.py           |  8 ++++----
+ demos/gtk-demo/demos/appwindow.py |    4 ++--
+ demos/gtk-demo/demos/dialogs.py   |   30 +++++++++++++++---------------
+ demos/gtk-demo/demos/links.py     |    2 +-
+ demos/gtk-demo/demos/pixbuf.py    |    2 +-
+ demos/gtk-demo/demos/printing.py  |    8 ++++----
+ gi/overrides/Gtk.py               |    4 ++--
+ tests/test_everything.py          |   22 +++++++++++-----------
+ tests/test_gi.py                  |    2 +-
+ tests/test_overrides.py           |    8 ++++----
  9 files changed, 41 insertions(+), 41 deletions(-)
 
 commit 32cc594ab6dfbd4843f3db5ec8338d31ad5df6c6
@@ -18917,38 +804,38 @@ Date:   Thu Mar 22 10:24:40 2012 -0300
     By running the whole source tree via the indent.py script found
     in the Python distribution.
 
- demos/gtk-demo/demos/Entry/search_entry.py     |   4 +-
- demos/gtk-demo/demos/Icon View/iconviewedit.py |  41 +++----
- demos/gtk-demo/demos/Tree View/liststore.py    |   8 +-
- demos/gtk-demo/demos/appwindow.py              |  18 +--
- demos/gtk-demo/demos/dialogs.py                |  26 ++---
- demos/gtk-demo/demos/expander.py               |   6 +-
- demos/gtk-demo/demos/images.py                 |   2 +-
- demos/gtk-demo/demos/links.py                  |   2 +-
- demos/gtk-demo/demos/rotatedtext.py            |  20 ++--
- gi/_glib/option.py                             |   2 +-
- gi/_gobject/constants.py                       |   1 -
- gi/importer.py                                 |   1 -
- gi/module.py                                   |  10 +-
- gi/overrides/GLib.py                           |  11 +-
- gi/overrides/Gdk.py                            |  30 ++---
- gi/overrides/Gio.py                            |   4 +-
- gi/overrides/Gtk.py                            | 150
- ++++++++++++-------------
- gi/overrides/Pango.py                          |   1 -
- gi/overrides/__init__.py                       |  10 +-
- gi/pygtkcompat.py                              |   2 +-
- tests/compathelper.py                          |   2 +-
- tests/runtests.py                              |  19 ++--
- tests/test_everything.py                       |  22 ++--
- tests/test_gdbus.py                            |  11 +-
- tests/test_gi.py                               |  38 +++----
- tests/test_gobject.py                          |   2 +-
- tests/test_interface.py                        |   1 -
- tests/test_option.py                           |   1 -
- tests/test_overrides.py                        |  78 ++++++-------
- tests/test_properties.py                       |   2 +-
- tests/test_uris.py                             |   1 -
+ demos/gtk-demo/demos/Entry/search_entry.py     |    4 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |   41 +++----
+ demos/gtk-demo/demos/Tree View/liststore.py    |    8 +-
+ demos/gtk-demo/demos/appwindow.py              |   18 +--
+ demos/gtk-demo/demos/dialogs.py                |   26 ++--
+ demos/gtk-demo/demos/expander.py               |    6 +-
+ demos/gtk-demo/demos/images.py                 |    2 +-
+ demos/gtk-demo/demos/links.py                  |    2 +-
+ demos/gtk-demo/demos/rotatedtext.py            |   20 ++--
+ gi/_glib/option.py                             |    2 +-
+ gi/_gobject/constants.py                       |    1 -
+ gi/importer.py                                 |    1 -
+ gi/module.py                                   |   10 +-
+ gi/overrides/GLib.py                           |   11 +-
+ gi/overrides/Gdk.py                            |   30 ++---
+ gi/overrides/Gio.py                            |    4 +-
+ gi/overrides/Gtk.py                            |  150
+ ++++++++++++------------
+ gi/overrides/Pango.py                          |    1 -
+ gi/overrides/__init__.py                       |   10 +-
+ gi/pygtkcompat.py                              |    2 +-
+ tests/compathelper.py                          |    2 +-
+ tests/runtests.py                              |   19 ++-
+ tests/test_everything.py                       |   22 ++--
+ tests/test_gdbus.py                            |   11 +-
+ tests/test_gi.py                               |   38 +++---
+ tests/test_gobject.py                          |    2 +-
+ tests/test_interface.py                        |    1 -
+ tests/test_option.py                           |    1 -
+ tests/test_overrides.py                        |   78 ++++++------
+ tests/test_properties.py                       |    2 +-
+ tests/test_uris.py                             |    1 -
  31 files changed, 255 insertions(+), 271 deletions(-)
 
 commit c375e3136f0f48eb8a6717c0053155db088b329d
@@ -18961,12 +848,12 @@ Date:   Thu Mar 22 10:32:43 2012 +0100
 
     Caught by the previous commit of making deprecations fatal.
 
- tests/test_option.py      | 10 +++----
- tests/test_overrides.py   | 66
- +++++++++++++++++++++++------------------------
- tests/test_properties.py  | 14 +++++-----
- tests/test_pygtkcompat.py | 18 ++++++-------
- tests/test_signal.py      |  4 +--
+ tests/test_option.py      |   10 +++----
+ tests/test_overrides.py   |   66
+ ++++++++++++++++++++++-----------------------
+ tests/test_properties.py  |   14 +++++-----
+ tests/test_pygtkcompat.py |   18 ++++++-------
+ tests/test_signal.py      |    4 +--
  5 files changed, 56 insertions(+), 56 deletions(-)
 
 commit 32525e565cc48454cdacbc44ad3fd751b81cb7e3
@@ -18975,7 +862,7 @@ Date:   Thu Mar 22 10:31:22 2012 +0100
 
     Fail tests if they use or encounter deprecations
 
- tests/Makefile.am | 2 +-
+ tests/Makefile.am |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 65762243a34af014950527c323a51a29d40fb3e1
@@ -18995,9 +882,9 @@ Date:   Thu Mar 22 10:15:16 2012 +0100
     to
     tests/runtests.py.
 
- tests/Makefile.am       | 33 ++++++++++++---------------------
- tests/runtests.py       |  7 +++++++
- tests/test_overrides.py |  6 ------
+ tests/Makefile.am       |   33 ++++++++++++---------------------
+ tests/runtests.py       |    7 +++++++
+ tests/test_overrides.py |    6 ------
  3 files changed, 19 insertions(+), 27 deletions(-)
 
 commit 3b4ae83a0ece8e3aed1de5452e2acd32841e629a
@@ -19012,7 +899,7 @@ Date:   Thu Mar 22 09:58:21 2012 +0100
     import,
     which makes this work again.
 
- tests/test_overrides.py | 9 +++++----
+ tests/test_overrides.py |    9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 927f7877ffa5e16c4cabcecbc05656ee0ec6a167
@@ -19026,8 +913,8 @@ Date:   Wed Mar 21 21:09:24 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672589
 
- gi/pygtkcompat.py         | 19 +++++++++++++++++++
- tests/test_pygtkcompat.py | 22 ++++++++++++++++++++++
+ gi/pygtkcompat.py         |   19 +++++++++++++++++++
+ tests/test_pygtkcompat.py |   22 ++++++++++++++++++++++
  2 files changed, 41 insertions(+)
 
 commit b322d6a1f6d44bace4eefb98558cfe94a73a727c
@@ -19038,8 +925,8 @@ Date:   Wed Mar 21 16:01:35 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672578
 
- tests/test_everything.py  |  4 ++--
- tests/test_pygtkcompat.py | 18 ++++++++++++++++++
+ tests/test_everything.py  |    4 ++--
+ tests/test_pygtkcompat.py |   18 ++++++++++++++++++
  2 files changed, 20 insertions(+), 2 deletions(-)
 
 commit c8bc6ae10cfe8b2eff4204ec2175907a6eb0585a
@@ -19052,54 +939,54 @@ Date:   Wed Mar 21 14:45:53 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672578
 
- demos/gtk-demo/demos/Entry/entry_buffer.py       |   2 +-
- demos/gtk-demo/demos/Entry/entry_completion.py   |   2 +-
- demos/gtk-demo/demos/Entry/search_entry.py       |  12 +-
- demos/gtk-demo/demos/Icon View/iconviewbasics.py |   2 +-
- demos/gtk-demo/demos/Icon View/iconviewedit.py   |   2 +-
- demos/gtk-demo/demos/Tree View/liststore.py      |   3 +-
- demos/gtk-demo/demos/appwindow.py                |  13 +-
- demos/gtk-demo/demos/assistant.py                |   4 +-
- demos/gtk-demo/demos/builder.py                  |   4 +-
- demos/gtk-demo/demos/button_box.py               |   2 +-
- demos/gtk-demo/demos/clipboard.py                |   2 +-
- demos/gtk-demo/demos/colorselector.py            |   2 +-
- demos/gtk-demo/demos/combobox.py                 |   4 +-
- demos/gtk-demo/demos/dialogs.py                  |   4 +-
- demos/gtk-demo/demos/drawingarea.py              |   2 +-
- demos/gtk-demo/demos/expander.py                 |   4 +-
- demos/gtk-demo/demos/images.py                   |   8 +-
- demos/gtk-demo/demos/infobars.py                 |   2 +-
- demos/gtk-demo/demos/links.py                    |   2 +-
- demos/gtk-demo/demos/menus.py                    |   5 +-
- demos/gtk-demo/demos/pickers.py                  |   2 +-
- demos/gtk-demo/demos/pixbuf.py                   |   2 +-
- demos/gtk-demo/demos/printing.py                 |   3 +-
- demos/gtk-demo/demos/rotatedtext.py              |   6 +-
- demos/gtk-demo/gtk-demo.py                       |   9 +-
- examples/cairo-demo.py                           |   2 +-
- gi/__init__.py                                   |   4 +
- gi/_glib/__init__.py                             | 101 ++++++++++-
- gi/_glib/option.py                               |   1 +
- gi/_gobject/__init__.py                          | 203
- ++++++++++++++++++++---
- gi/_gobject/constants.py                         |   2 -
- gi/_gobject/propertyhelper.py                    |   4 +-
- gi/importer.py                                   |   2 +-
- gi/module.py                                     |   1 -
- gi/overrides/Gtk.py                              |   1 -
- gi/overrides/__init__.py                         |   1 -
- gi/pygtkcompat.py                                |   2 +
- gi/types.py                                      |   3 +
- tests/Makefile.am                                |   5 +
- tests/test_everything.py                         |   6 +-
- tests/test_gi.py                                 |   8 +-
- tests/test_option.py                             |  10 +-
- tests/test_overrides.py                          |  30 ++--
- tests/test_properties.py                         |  12 +-
- tests/test_pygtkcompat.py                        |   4 -
- tests/test_signal.py                             |   4 +-
- tests/test_source.py                             |   6 +-
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py       |   12 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    2 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py   |    2 +-
+ demos/gtk-demo/demos/Tree View/liststore.py      |    3 +-
+ demos/gtk-demo/demos/appwindow.py                |   13 +-
+ demos/gtk-demo/demos/assistant.py                |    4 +-
+ demos/gtk-demo/demos/builder.py                  |    4 +-
+ demos/gtk-demo/demos/button_box.py               |    2 +-
+ demos/gtk-demo/demos/clipboard.py                |    2 +-
+ demos/gtk-demo/demos/colorselector.py            |    2 +-
+ demos/gtk-demo/demos/combobox.py                 |    4 +-
+ demos/gtk-demo/demos/dialogs.py                  |    4 +-
+ demos/gtk-demo/demos/drawingarea.py              |    2 +-
+ demos/gtk-demo/demos/expander.py                 |    4 +-
+ demos/gtk-demo/demos/images.py                   |    8 +-
+ demos/gtk-demo/demos/infobars.py                 |    2 +-
+ demos/gtk-demo/demos/links.py                    |    2 +-
+ demos/gtk-demo/demos/menus.py                    |    5 +-
+ demos/gtk-demo/demos/pickers.py                  |    2 +-
+ demos/gtk-demo/demos/pixbuf.py                   |    2 +-
+ demos/gtk-demo/demos/printing.py                 |    3 +-
+ demos/gtk-demo/demos/rotatedtext.py              |    6 +-
+ demos/gtk-demo/gtk-demo.py                       |    9 +-
+ examples/cairo-demo.py                           |    2 +-
+ gi/__init__.py                                   |    4 +
+ gi/_glib/__init__.py                             |  101 ++++++++++-
+ gi/_glib/option.py                               |    1 +
+ gi/_gobject/__init__.py                          |  203
+ +++++++++++++++++++---
+ gi/_gobject/constants.py                         |    2 -
+ gi/_gobject/propertyhelper.py                    |    4 +-
+ gi/importer.py                                   |    2 +-
+ gi/module.py                                     |    1 -
+ gi/overrides/Gtk.py                              |    1 -
+ gi/overrides/__init__.py                         |    1 -
+ gi/pygtkcompat.py                                |    2 +
+ gi/types.py                                      |    3 +
+ tests/Makefile.am                                |    5 +
+ tests/test_everything.py                         |    6 +-
+ tests/test_gi.py                                 |    8 +-
+ tests/test_option.py                             |   10 +-
+ tests/test_overrides.py                          |   30 ++--
+ tests/test_properties.py                         |   12 +-
+ tests/test_pygtkcompat.py                        |    4 -
+ tests/test_signal.py                             |    4 +-
+ tests/test_source.py                             |    6 +-
  47 files changed, 377 insertions(+), 138 deletions(-)
 
 commit 39650906559fcc39b4be406fa7e25c4788d349a3
@@ -19118,10 +1005,10 @@ Date:   Wed Mar 21 16:59:33 2012 +0100
     values).
     For these, warnings/criticals are now explicitly permitted.
 
- tests/runtests.py        |  1 +
- tests/test_gi.py         |  7 ++++++-
- tests/test_overrides.py  | 14 +++++++-------
- tests/test_properties.py | 36 +++++++++++++++++++++---------------
+ tests/runtests.py        |    1 +
+ tests/test_gi.py         |    7 ++++++-
+ tests/test_overrides.py  |   14 +++++++-------
+ tests/test_properties.py |   36 +++++++++++++++++++++---------------
  4 files changed, 35 insertions(+), 23 deletions(-)
 
 commit efcb4b0b32c4dda06c3eeec83802fc0f302f0d27
@@ -19139,8 +1026,8 @@ Date:   Tue Mar 20 14:55:07 2012 +0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668903
 
- gi/pygi-marshal-from-py.c | 3 ++-
- gi/pygi-marshal-to-py.c   | 3 ++-
+ gi/pygi-marshal-from-py.c |    3 ++-
+ gi/pygi-marshal-to-py.c   |    3 ++-
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 8d85d6639778ec6364235071d272d67e7aae49ae
@@ -19170,8 +1057,8 @@ Date:   Wed Mar 21 14:34:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672463
 
- gi/overrides/Gtk.py     | 26 ++++++++++++++------------
- tests/test_overrides.py |  5 +++++
+ gi/overrides/Gtk.py     |   26 ++++++++++++++------------
+ tests/test_overrides.py |    5 +++++
  2 files changed, 19 insertions(+), 12 deletions(-)
 
 commit 38aecc481741fd3a319a76a0ec8bf5329a483876
@@ -19189,7 +1076,7 @@ Date:   Wed Mar 21 15:21:02 2012 +0100
 
     Fix this by calling close().
 
- tests/test_pygtkcompat.py | 3 ++-
+ tests/test_pygtkcompat.py |    3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 5e0e5e72a4436badd09f0aa07f62960afcdca8c6
@@ -19200,7 +1087,7 @@ Date:   Mon Mar 19 16:58:22 2012 +0100
 
     Use 3.1.93 for now, this will most likely become 3.2.0 as it is.
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 88924e399d7ccf7af2e9a78720e0c508cd6080d8
@@ -19209,7 +1096,7 @@ Date:   Mon Mar 19 16:41:17 2012 +0100
 
     Release 3.1.92
 
- NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   46 ++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 46 insertions(+)
 
 commit b41e6139befb984c0b78bcefe2630ab1393b4b40
@@ -19220,8 +1107,8 @@ Date:   Mon Mar 19 16:14:54 2012 +0100
 
     Also update Martin's email address.
 
- README         | 10 ++++++----
- pygobject.doap |  2 +-
+ README         |   10 ++++++----
+ pygobject.doap |    2 +-
  2 files changed, 7 insertions(+), 5 deletions(-)
 
 commit 45e27ba7e447552057a2950fc768c63ff2e6612e
@@ -19230,7 +1117,7 @@ Date:   Mon Mar 19 16:11:22 2012 +0100
 
     Bump version to 3.1.92, in sync with GNOME
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 77d358f8c5f524259249ea686899e3a4da05562e
@@ -19239,7 +1126,7 @@ Date:   Mon Mar 19 11:54:07 2012 -0300
 
     Correct Gtk.TreePath.__iter__ to work with Python 3
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1f18bcb37bdc42368ad9a07c7f348f736c2f665d
@@ -19248,7 +1135,7 @@ Date:   Mon Mar 19 15:54:13 2012 +0100
 
     Fix pygtkcompat.py to work with Python 3
 
- gi/pygtkcompat.py | 20 +++++++++++++++-----
+ gi/pygtkcompat.py |   20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit 96a9f92da801989464fbcedf6d849819f6dbea64
@@ -19263,7 +1150,7 @@ Date:   Mon Mar 19 15:32:22 2012 +0100
     is not
     exactly two at the moment.
 
- tests/test_everything.py | 4 ++--
+ tests/test_everything.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit ba00afb1e50759b2b321f16e05a15946053cdafa
@@ -19272,8 +1159,8 @@ Date:   Mon Mar 19 10:58:09 2012 -0300
 
     pygtkcompat: Remove first argument for get_origin()
 
- gi/pygtkcompat.py         | 5 +++++
- tests/test_pygtkcompat.py | 5 +++++
+ gi/pygtkcompat.py         |    5 +++++
+ tests/test_pygtkcompat.py |    5 +++++
  2 files changed, 10 insertions(+)
 
 commit 65499246a862ce6a82bc3b0cc74fe8ff82dde687
@@ -19285,8 +1172,8 @@ Date:   Fri Mar 16 16:08:44 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     | 10 ++++++++++
- tests/test_overrides.py | 11 +++++++++++
+ gi/overrides/Gtk.py     |   10 ++++++++++
+ tests/test_overrides.py |   11 +++++++++++
  2 files changed, 21 insertions(+)
 
 commit 43c761d9f35252dcb58b9cf2278016d841eea4ec
@@ -19297,8 +1184,8 @@ Date:   Fri Mar 16 16:08:23 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     | 11 +++++++++++
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Gtk.py     |   11 +++++++++++
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 17 insertions(+)
 
 commit 116d3712251b1b8aa2d4f4a9e40e22f5b9fcbe4f
@@ -19309,8 +1196,8 @@ Date:   Fri Mar 16 16:07:30 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Pango.py   | 3 +++
- tests/test_overrides.py | 4 ++++
+ gi/overrides/Pango.py   |    3 +++
+ tests/test_overrides.py |    4 ++++
  2 files changed, 7 insertions(+)
 
 commit a3ca47b086b7fcf084282be788c5d737dde847ac
@@ -19322,8 +1209,8 @@ Date:   Fri Mar 16 16:06:37 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     | 15 +++++++++++++++
- tests/test_overrides.py | 14 ++++++++++++++
+ gi/overrides/Gtk.py     |   15 +++++++++++++++
+ tests/test_overrides.py |   14 ++++++++++++++
  2 files changed, 29 insertions(+)
 
 commit 458dab08c78cb730dd95bcd67af20a0d73a3af2f
@@ -19335,8 +1222,8 @@ Date:   Fri Mar 16 16:06:12 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     | 10 ++++++++++
- tests/test_overrides.py |  9 ++++++++-
+ gi/overrides/Gtk.py     |   10 ++++++++++
+ tests/test_overrides.py |    9 ++++++++-
  2 files changed, 18 insertions(+), 1 deletion(-)
 
 commit 2f7789a5a1f55ec38c5ff0f96bc5c9023679a333
@@ -19347,8 +1234,8 @@ Date:   Fri Mar 16 16:05:55 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |  3 +++
- tests/test_overrides.py | 11 +++++++++++
+ gi/overrides/Gtk.py     |    3 +++
+ tests/test_overrides.py |   11 +++++++++++
  2 files changed, 14 insertions(+)
 
 commit 2dd9dadd1bd92c3324e9de209ba8205a9d4106d6
@@ -19359,8 +1246,8 @@ Date:   Thu Mar 15 15:22:46 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     | 5 +++++
- tests/test_overrides.py | 3 +++
+ gi/overrides/Gtk.py     |    5 +++++
+ tests/test_overrides.py |    3 +++
  2 files changed, 8 insertions(+)
 
 commit bf8c95836e1cc1e1629937cbc69ea3027fb82746
@@ -19390,9 +1277,10 @@ Date:   Thu Mar 15 09:48:10 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=671610
 
- gi/overrides/Gtk.py     | 81
- ++++++++++++++++++++++++++++++-------------------
- tests/test_overrides.py | 74 ++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py     |   81
+ +++++++++++++++++++++++++++++------------------
+ tests/test_overrides.py |   74
+ +++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 124 insertions(+), 31 deletions(-)
 
 commit f7db4eaf8148f2dd8bf1718152a1dcae509470c7
@@ -19407,8 +1295,8 @@ Date:   Sun Mar 18 16:07:26 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/overrides/Gtk.py     | 4 +---
- tests/test_overrides.py | 6 ++++++
+ gi/overrides/Gtk.py     |    4 +---
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 commit 466337cf2fd091738eeab12c10d250a9d0827284
@@ -19417,7 +1305,7 @@ Date:   Fri Mar 16 16:55:47 2012 -0300
 
     Correct bad rebase, remove duplicate Window
 
- gi/overrides/Gtk.py | 7 -------
+ gi/overrides/Gtk.py |    7 -------
  1 file changed, 7 deletions(-)
 
 commit c60d5ee3c88bd8e1c68ea97f079947cf79d5bb7d
@@ -19431,11 +1319,11 @@ Date:   Thu Mar 15 15:42:28 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/Makefile.am            |   3 +-
- gi/pygtkcompat.py         | 421
- ++++++++++++++++++++++++++++++++++++++++++++++
- tests/Makefile.am         |   3 +-
- tests/test_pygtkcompat.py |  77 +++++++++
+ gi/Makefile.am            |    3 +-
+ gi/pygtkcompat.py         |  421
+ +++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am         |    3 +-
+ tests/test_pygtkcompat.py |   77 +++++++++
  4 files changed, 502 insertions(+), 2 deletions(-)
 
 commit 680a2e04ac4f80ad16e820d3f753519477c988aa
@@ -19450,7 +1338,7 @@ Date:   Wed Mar 14 15:20:53 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672087
 
- gi/overrides/Gtk.py | 8 +++++++-
+ gi/overrides/Gtk.py |    8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit fbd21ee7176bc1b70547ea464b512c8ffd674187
@@ -19461,8 +1349,8 @@ Date:   Wed Mar 14 17:13:04 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672093
 
- gi/overrides/Gtk.py     | 3 +++
- tests/test_overrides.py | 2 ++
+ gi/overrides/Gtk.py     |    3 +++
+ tests/test_overrides.py |    2 ++
  2 files changed, 5 insertions(+)
 
 commit a7b08cb75541612c78d123b1d968be7874e3c481
@@ -19473,7 +1361,7 @@ Date:   Wed Mar 14 13:32:31 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Gtk.py | 14 ++++++++++++++
+ gi/overrides/Gtk.py |   14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 02950cabb38b1b3c9378c42c069eefdbccbce17d
@@ -19486,8 +1374,8 @@ Date:   Wed Mar 14 13:31:41 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Gtk.py     |  4 ++++
- tests/test_overrides.py | 10 ++++++++++
+ gi/overrides/Gtk.py     |    4 ++++
+ tests/test_overrides.py |   10 ++++++++++
  2 files changed, 14 insertions(+)
 
 commit 7245bd0ae3f6243c79fa8543a0ed1e50e5015844
@@ -19498,7 +1386,7 @@ Date:   Wed Mar 14 13:31:06 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Pango.py | 9 +++++++++
+ gi/overrides/Pango.py |    9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit bc1fd8814df6c1e85b586d0fb943c89f7e2b78b5
@@ -19518,7 +1406,7 @@ Date:   Fri Mar 16 13:27:56 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672224
 
- gi/pygi-marshal-from-py.c | 7 ++++++-
+ gi/pygi-marshal-from-py.c |    7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit a906b7d1947ba905f959d3f738eb6c29b02f96e7
@@ -19537,12 +1425,12 @@ Date:   Fri Mar 16 00:29:31 2012 -0700
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- examples/properties.py        |  6 +--
- gi/_gobject/__init__.py       |  7 ++--
- gi/_gobject/propertyhelper.py | 12 +++---
- tests/test_interface.py       |  4 +-
- tests/test_properties.py      | 94
- +++++++++++++++++++++----------------------
+ examples/properties.py        |    6 +--
+ gi/_gobject/__init__.py       |    7 +--
+ gi/_gobject/propertyhelper.py |   12 +++---
+ tests/test_interface.py       |    4 +-
+ tests/test_properties.py      |   94
+ ++++++++++++++++++++---------------------
  5 files changed, 62 insertions(+), 61 deletions(-)
 
 commit d7d28d717e38c0546529b09b8b571a5cc631c5b5
@@ -19575,9 +1463,9 @@ Date:   Wed Mar 14 22:52:47 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672065
 
- gi/pygi-marshal-cleanup.c | 19 ++++++++++++++-----
- gi/pygi-marshal-from-py.c | 13 ++++++++++++-
- tests/test_gi.py          |  8 ++++++++
+ gi/pygi-marshal-cleanup.c |   19 ++++++++++++++-----
+ gi/pygi-marshal-from-py.c |   13 ++++++++++++-
+ tests/test_gi.py          |    8 ++++++++
  3 files changed, 34 insertions(+), 6 deletions(-)
 
 commit 27ac9c1de6487035b18ef4511c155d251cb6d39d
@@ -19602,9 +1490,9 @@ Date:   Fri Mar 16 09:59:57 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/overrides/Gtk.py     | 56
- ++++++++++++++++++++++++-------------------------
- tests/test_overrides.py | 35 +++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     |   56
+ +++++++++++++++++++++++------------------------
+ tests/test_overrides.py |   35 +++++++++++++++++++++++++++--
  2 files changed, 61 insertions(+), 30 deletions(-)
 
 commit 77ab27ab8a580d98f76730f075e083e1e870f55e
@@ -19637,10 +1525,10 @@ Date:   Tue Mar 13 01:41:53 2012 -0700
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/_gobject/__init__.py       | 10 ++++----
- gi/_gobject/propertyhelper.py | 59
- +++++++++++++++++++++++++++++++------------
- tests/test_properties.py      | 41 ++++++++++++++++++++++++++++++
+ gi/_gobject/__init__.py       |   10 +++----
+ gi/_gobject/propertyhelper.py |   59
+ ++++++++++++++++++++++++++++++-----------
+ tests/test_properties.py      |   41 ++++++++++++++++++++++++++++
  3 files changed, 89 insertions(+), 21 deletions(-)
 
 commit 174a61fb3149c07dab5cc35e64825922cdefcb95
@@ -19653,7 +1541,7 @@ Date:   Tue Mar 13 17:10:13 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672045
 
- gi/overrides/Gtk.py | 17 +++++++++++++++++
+ gi/overrides/Gtk.py |   17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit 7746d2188ac4933c2c9011d84525d1e62fc18953
@@ -19666,9 +1554,9 @@ Date:   Fri Mar 9 12:26:53 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-argument.c        | 25 ++++++++++++++++---------
- gi/pygi-marshal-from-py.c | 32 +++++++++++++++++++++++++-------
- gi/pygi-marshal-to-py.c   | 19 +++++++++++++++++++
+ gi/pygi-argument.c        |   25 ++++++++++++++++---------
+ gi/pygi-marshal-from-py.c |   32 +++++++++++++++++++++++++-------
+ gi/pygi-marshal-to-py.c   |   19 +++++++++++++++++++
  3 files changed, 60 insertions(+), 16 deletions(-)
 
 commit 0591cc6f160ae6e9d8c3970934ae105ef340d7d3
@@ -19686,12 +1574,12 @@ Date:   Thu Mar 8 12:21:28 2012 +0100
     Signed-off-by: Michel Dänzer <michel@daenzer.net>
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- configure.ac                 |   3 +-
- gi/_gobject/Makefile.am      |   7 +-
- gi/_gobject/ffi-marshaller.c | 194
- -------------------------------------------
- gi/_gobject/ffi-marshaller.h |  31 -------
- gi/_gobject/gobjectmodule.c  |  12 +--
+ configure.ac                 |    3 +-
+ gi/_gobject/Makefile.am      |    7 +-
+ gi/_gobject/ffi-marshaller.c |  194
+ ------------------------------------------
+ gi/_gobject/ffi-marshaller.h |   31 -------
+ gi/_gobject/gobjectmodule.c  |   12 +--
  5 files changed, 4 insertions(+), 243 deletions(-)
 
 commit 8ca828825a2c47080055c5f986979aac8da9a93f
@@ -19704,7 +1592,7 @@ Date:   Mon Mar 5 21:10:55 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=671409
 
- gi/overrides/Gtk.py | 5 +++++
+ gi/overrides/Gtk.py |    5 +++++
  1 file changed, 5 insertions(+)
 
 commit 4824ceaa77b59788325a2c1ee0f994d4e74d7a1c
@@ -19716,7 +1604,7 @@ Date:   Sun Mar 4 16:41:18 2012 +0100
     When we found the member, unref the objects before breaking out of the
     loop.
 
- gi/pygi-marshal-from-py.c | 9 +++------
+ gi/pygi-marshal-from-py.c |    9 +++------
  1 file changed, 3 insertions(+), 6 deletions(-)
 
 commit c6ae29ac157978a61b11cc2de9e8485d8a175105
@@ -19725,7 +1613,7 @@ Date:   Tue Feb 21 15:37:18 2012 +0100
 
     tests: Split TestInterfaces into separate tests
 
- tests/test_gi.py | 36 +++++++++++++++++++-----------------
+ tests/test_gi.py |   36 +++++++++++++++++++-----------------
  1 file changed, 19 insertions(+), 17 deletions(-)
 
 commit de3299818ae5fdf1c7abbe05a36bfd5cdface7b8
@@ -19734,7 +1622,7 @@ Date:   Mon Feb 20 19:37:32 2012 +0100
 
     Post release version bump to 3.1.2
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fd020e783c0dacea3320225b4ddd57d6a0fce7ea
@@ -19743,7 +1631,7 @@ Date:   Mon Feb 20 19:33:56 2012 +0100
 
     Prepare 3.1.1 release
 
- NEWS | 18 ++++++++++++++++++
+ NEWS |   18 ++++++++++++++++++
  1 file changed, 18 insertions(+)
 
 commit 99485d96811667ef7a7a393b68b7361733157d61
@@ -19752,7 +1640,7 @@ Date:   Sat Feb 18 00:38:05 2012 +0100
 
     Don't use C99 style
 
- gi/pygi-cache.c | 3 ++-
+ gi/pygi-cache.c |    3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 0739c39f6282d95fc17ee406fa1151d074b0450d
@@ -19768,7 +1656,7 @@ Date:   Thu Feb 16 16:42:53 2012 +0100
     internally, but at least we can verify that it does not crash due to
     double-free.
 
- tests/test_everything.py | 10 +++++++++-
+ tests/test_everything.py |   10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit 087a104f66793a981a0c02f1c7ab9cc1cf659da3
@@ -19779,7 +1667,7 @@ Date:   Wed Feb 15 13:36:39 2012 +0100
 
     Not necessary any more since glib 2.24, and we depend on 2.31.
 
- gi/_glib/pyglib.c | 3 ---
+ gi/_glib/pyglib.c |    3 ---
  1 file changed, 3 deletions(-)
 
 commit 66fb610e45912a7def29e5848577d280ef55643a
@@ -19792,7 +1680,7 @@ Date:   Wed Feb 15 13:35:33 2012 +0100
     documentation. This also
     simplifies the code.
 
- gi/_glib/pygsource.c | 4 +---
+ gi/_glib/pygsource.c |    4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 commit 18342edded05d3d9cccf648ed92bc1cac95c51eb
@@ -19803,9 +1691,9 @@ Date:   Wed Feb 15 13:31:23 2012 +0100
 
     Replace with _schar(). We depend on glib >= 2.31 already.
 
- gi/_gobject/ffi-marshaller.c | 2 +-
- gi/_gobject/pygtype.c        | 6 +++---
- gi/pygi-argument.c           | 2 +-
+ gi/_gobject/ffi-marshaller.c |    2 +-
+ gi/_gobject/pygtype.c        |    6 +++---
+ gi/pygi-argument.c           |    2 +-
  3 files changed, 5 insertions(+), 5 deletions(-)
 
 commit 3dfb8dcbe7cf09dc170433fc48d3273c6ea9448e
@@ -19817,7 +1705,7 @@ Date:   Thu Feb 2 19:06:01 2012 +0100
     Looking at the gir file gtk.gdk.x11_* should get converted to
     GdkX11.x11_*. Fixing pygiconvert.sh to do so.
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3af5016978df598d5fd1c225cc49bb2c04dc4e35
@@ -19828,7 +1716,7 @@ Date:   Fri Feb 10 13:29:41 2012 +0100
 
     Commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89 introduced both calls
 
- configure.ac | 6 +++---
+ configure.ac |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 50c3b1bad3ea79750649f4b48fce0adbfaba5268
@@ -19839,7 +1727,7 @@ Date:   Fri Feb 10 09:28:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=649267
 
- gi/_gobject/pygparamspec.c | 2 +-
+ gi/_gobject/pygparamspec.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6ab542fb3ec1031922ba65664d77bbaac0df453e
@@ -19850,8 +1738,8 @@ Date:   Mon Nov 14 14:41:08 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664496
 
- pygi-convert.sh | 76
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ pygi-convert.sh |   76
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 76 insertions(+)
 
 commit 4aeb27efc43e131de5d0bc0f60dca7c1d34c3d45
@@ -19864,9 +1752,9 @@ Date:   Fri Feb 10 09:04:18 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-argument.c       |  3 ++-
- gi/pygi-info.c           | 13 +++++++++++++
- tests/test_everything.py | 21 +++++++++++++++++++++
+ gi/pygi-argument.c       |    3 ++-
+ gi/pygi-info.c           |   13 +++++++++++++
+ tests/test_everything.py |   21 +++++++++++++++++++++
  3 files changed, 36 insertions(+), 1 deletion(-)
 
 commit 5c0b20cc1a261cb7430a5251dffe60da698033b5
@@ -19877,7 +1765,7 @@ Date:   Thu Feb 9 18:15:42 2012 +0100
 
     Use what was recently added in g-i
 
- tests/test_gi.py | 17 +++++++++++++++--
+ tests/test_gi.py |   17 +++++++++++++++--
  1 file changed, 15 insertions(+), 2 deletions(-)
 
 commit ea7778f6f37a6fc38f88d89d4b6cae8be0ed9753
@@ -19888,7 +1776,7 @@ Date:   Thu Feb 9 18:14:52 2012 +0100
 
     Also tidy up the spacing a bit
 
- tests/test_gi.py | 29 +++++++++++++++++++++++------
+ tests/test_gi.py |   29 +++++++++++++++++++++++------
  1 file changed, 23 insertions(+), 6 deletions(-)
 
 commit db7f9be319d3cf52aef300fbac60cabb7ff57276
@@ -19897,7 +1785,7 @@ Date:   Wed Feb 8 22:23:30 2012 +0100
 
     Add unit test for builder's connect_after
 
- tests/test_overrides.py | 8 ++++++++
+ tests/test_overrides.py |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 671f9b0dd73ac41a84caf9d1f04cec351bc01b47
@@ -19912,7 +1800,7 @@ Date:   Wed Feb 8 16:06:22 2012 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669705
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1d23d8006be98b77a0134fddd23b76df05e489fa
@@ -19923,7 +1811,7 @@ Date:   Tue Feb 7 11:49:58 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669598
 
- m4/python.m4 | 6 +++---
+ m4/python.m4 |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 945fd18e531c2131440af93dcd89f6c63abbfd7c
@@ -19946,7 +1834,7 @@ Date:   Tue Feb 7 13:42:19 2012 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669594
 
- gi/_glib/pygspawn.c | 4 ++--
+ gi/_glib/pygspawn.c |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8fc969c45d6d720400dc6c9ef391d0ca93f14b5a
@@ -19955,7 +1843,7 @@ Date:   Mon Feb 6 19:15:53 2012 +0100
 
     Post release version bump to 3.1.1
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f76b2fe6d37be76bf129ee2adee90b2cc0eee56e
@@ -19964,7 +1852,7 @@ Date:   Mon Feb 6 19:11:52 2012 +0100
 
     Prepare 3.1.0 release
 
- NEWS | 34 ++++++++++++++++++++++++++++++++++
+ NEWS |   34 ++++++++++++++++++++++++++++++++++
  1 file changed, 34 insertions(+)
 
 commit c09d0dffc5a570d5ae4df1ae07b2e5594c3ca1bf
@@ -19976,8 +1864,8 @@ Date:   Mon Feb 6 19:04:41 2012 +0100
 
     Removed obsolete MAINTAINERS file
 
- MAINTAINERS    | 19 -------------------
- pygobject.doap | 44 +++++++++++++++-----------------------------
+ MAINTAINERS    |   19 -------------------
+ pygobject.doap |   44 +++++++++++++++-----------------------------
  2 files changed, 15 insertions(+), 48 deletions(-)
 
 commit 0285e107be581c4d594127dc06cd05df1f02fb3f
@@ -19992,9 +1880,9 @@ Date:   Mon Feb 6 18:57:01 2012 +0100
     Due to this commit breaking backwards compatability, we decided to
     revert this change
 
- gi/overrides/Gtk.py     | 15 ---------------
- tests/compathelper.py   |  2 --
- tests/test_overrides.py | 31 +------------------------------
+ gi/overrides/Gtk.py     |   15 ---------------
+ tests/compathelper.py   |    2 --
+ tests/test_overrides.py |   31 +------------------------------
  3 files changed, 1 insertion(+), 47 deletions(-)
 
 commit 0e921cd26ed5a6e3bc6ef5f553e8b22b862d72a6
@@ -20003,7 +1891,7 @@ Date:   Sun Feb 5 13:47:10 2012 +0100
 
     tests: Fixed issues with python3
 
- tests/test_gi.py | 9 ++++++---
+ tests/test_gi.py |    9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)
 
 commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89
@@ -20014,9 +1902,9 @@ Date:   Sun Feb 5 11:59:51 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664150
 
- gi/pygi-property.c | 48 ++++++++++++++++++++++++++++++++++++++----
- tests/test_gi.py   | 62
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.c |   48 ++++++++++++++++++++++++++++++++++++----
+ tests/test_gi.py   |   62
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 106 insertions(+), 4 deletions(-)
 
 commit c329bf2aee8d75ce452638db75e09197ff2b9b65
@@ -20030,7 +1918,7 @@ Date:   Sun Feb 5 11:46:21 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669393
 
- gi/pygi-marshal-cleanup.c | 32 +++++++++++++++++++++++---------
+ gi/pygi-marshal-cleanup.c |   32 +++++++++++++++++++++++---------
  1 file changed, 23 insertions(+), 9 deletions(-)
 
 commit 4ea37c606f67df843788261b2c8acd6bac4c1e0c
@@ -20044,7 +1932,7 @@ Date:   Sun Feb 5 18:51:53 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669415
 
- tests/test_everything.py | 9 +++++++++
+ tests/test_everything.py |    9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit a41984780ee49dcf02c718ca1be87bba747472e5
@@ -20063,7 +1951,7 @@ Date:   Mon Feb 6 09:34:28 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669415
 
- gi/_glib/pyglib.c | 2 ++
+ gi/_glib/pyglib.c |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 2c797c17913999379e277788d5e4cce8d68cebb0
@@ -20074,7 +1962,7 @@ Date:   Sat Feb 4 16:11:34 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663288
 
- tests/Makefile.am | 1 +
+ tests/Makefile.am |    1 +
  1 file changed, 1 insertion(+)
 
 commit d6a899cdf70e978534326155e3fad75a705f4b20
@@ -20086,7 +1974,7 @@ Date:   Sat Feb 4 15:55:55 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=665553
 
- gi/overrides/Gtk.py | 6 ++----
+ gi/overrides/Gtk.py |    6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit 534ec71c575a279ff1c05da20a8858bb1145b4d0
@@ -20101,8 +1989,8 @@ Date:   Sat Feb 4 15:42:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647723
 
- gi/overrides/GLib.py    | 18 ++++++++++++++++++
- tests/test_overrides.py | 45
+ gi/overrides/GLib.py    |   18 ++++++++++++++++++
+ tests/test_overrides.py |   45
  +++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 63 insertions(+)
 
@@ -20119,9 +2007,9 @@ Date:   Sat Feb 4 15:41:08 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647725
 
- gi/overrides/GLib.py    | 23 ++++++++++++++++++++
- tests/test_overrides.py | 56
- +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py    |   23 +++++++++++++++++++
+ tests/test_overrides.py |   56
+ +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 79 insertions(+)
 
 commit f82404034be042bf2026bbb7f1e33b11d6e17a6f
@@ -20136,7 +2024,7 @@ Date:   Wed Jan 25 07:01:06 2012 +0100
     other test
     case names.
 
- tests/test_everything.py | 30 +++++++++++++++---------------
+ tests/test_everything.py |   30 +++++++++++++++---------------
  1 file changed, 15 insertions(+), 15 deletions(-)
 
 commit e37ee78fbf0aa72159a40da4165a26bea065faf1
@@ -20149,7 +2037,7 @@ Date:   Mon Jan 23 13:10:30 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668497
 
- gi/pygi-foreign-cairo.c | 2 +-
+ gi/pygi-foreign-cairo.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit db24865d6b60351d72f5b8f47103d6d0a6c63b2e
@@ -20162,7 +2050,7 @@ Date:   Mon Jan 23 13:06:41 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668497
 
- gi/_gobject/gobjectmodule.c | 2 +-
+ gi/_gobject/gobjectmodule.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a8408cfd68cd5e7cdb0b8a83e107d9a0d828e4bd
@@ -20182,10 +2070,10 @@ Date:   Mon Jan 23 13:01:27 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668497
 
- gi/_glib/pygiochannel.c   | 2 +-
- gi/_glib/pygmainloop.c    | 3 +--
- gi/_gobject/pygobject.c   | 2 +-
- gi/pygi-marshal-cleanup.c | 2 --
+ gi/_glib/pygiochannel.c   |    2 +-
+ gi/_glib/pygmainloop.c    |    3 +--
+ gi/_gobject/pygobject.c   |    2 +-
+ gi/pygi-marshal-cleanup.c |    2 --
  4 files changed, 3 insertions(+), 6 deletions(-)
 
 commit 29a30490ed51e347e8f57d2bf9af69400734eee8
@@ -20200,7 +2088,7 @@ Date:   Thu Jan 19 18:09:07 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668288
 
- gi/_glib/pygmainloop.c | 4 ++--
+ gi/_glib/pygmainloop.c |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 557a61c12c01137a0d7c679c4b053973df09d445
@@ -20213,7 +2101,7 @@ Date:   Mon Dec 26 00:44:56 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666852
 
- tests/test_gi.py | 4 ++--
+ tests/test_gi.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d69e5b3c7bdb9113382fd125c256b12bff4c24d2
@@ -20230,7 +2118,7 @@ Date:   Mon Jan 23 12:37:26 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666270
 
- gi/pygi-argument.c | 12 +++++++++++-
+ gi/pygi-argument.c |   12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)
 
 commit 77f32d9110bfeb6dad8457f565b4c70b5998fef6
@@ -20249,8 +2137,8 @@ Date:   Thu Dec 15 16:12:01 2011 +0200
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-closure.c        |  2 ++
- tests/test_everything.py | 35 +++++++++++++++++++++++++++++++++++
+ gi/pygi-closure.c        |    2 ++
+ tests/test_everything.py |   35 +++++++++++++++++++++++++++++++++++
  2 files changed, 37 insertions(+)
 
 commit 4b9dc03d0e49e9a1f4bf0f2df503bdff00d13a2b
@@ -20268,7 +2156,7 @@ Date:   Mon Jan 23 13:56:02 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666098
 
- gi/_glib/pyglib.c | 3 +++
+ gi/_glib/pyglib.c |    3 +++
  1 file changed, 3 insertions(+)
 
 commit adcfe96d49b09bcc550653d73de196610fd5144d
@@ -20293,11 +2181,11 @@ Date:   Fri Jan 20 16:20:10 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666098
 
- gi/_glib/pyglib.c       | 46
+ gi/_glib/pyglib.c       |   46
  +++++++++++++++++++++++++++++++++++-----------
- gi/_glib/pyglib.h       |  1 +
- gi/pygi-marshal-to-py.c | 16 +++++++++++++---
- tests/test_gi.py        | 32 ++++++++++++++++++++++++++++++++
+ gi/_glib/pyglib.h       |    1 +
+ gi/pygi-marshal-to-py.c |   16 +++++++++++++---
+ tests/test_gi.py        |   32 ++++++++++++++++++++++++++++++++
  4 files changed, 81 insertions(+), 14 deletions(-)
 
 commit 09f003729eac9d553a208c343c2a14d253b77d9a
@@ -20310,7 +2198,7 @@ Date:   Mon Jan 23 12:42:21 2012 +0200
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-argument.c | 26 +++++++++++++-------------
+ gi/pygi-argument.c |   26 +++++++++++++-------------
  1 file changed, 13 insertions(+), 13 deletions(-)
 
 commit c71c010be01d706f90bc200194325fd82f4071b2
@@ -20319,7 +2207,7 @@ Date:   Sat Jan 14 14:24:23 2012 +0100
 
     Avoid C99 syntax.
 
- gi/gimodule.c | 10 ++++++----
+ gi/gimodule.c |   10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)
 
 commit c299d058c22385ececaec64c872d1dd1bc1ae17a
@@ -20328,7 +2216,7 @@ Date:   Fri Jan 6 13:39:31 2012 +0100
 
     Connect to first action of a radio group.
 
- gi/overrides/Gtk.py | 4 ++--
+ gi/overrides/Gtk.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit dee2f179037902a3883bd0e61ff1c350e1fd8a4f
@@ -20337,7 +2225,7 @@ Date:   Wed Jan 4 16:40:51 2012 +0100
 
     Use g_slist_free_full in pygi-closure.
 
- gi/pygi-closure.c | 3 +--
+ gi/pygi-closure.c |    3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit 2bee4207ab6f07dc9c0952affe72f0e304cfb624
@@ -20352,7 +2240,7 @@ Date:   Wed Jan 4 15:24:13 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=667261
 
- gi/pygi-marshal-from-py.c | 8 ++++----
+ gi/pygi-marshal-from-py.c |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit d68455e99b1a9ebba31209b17a11317b1958678b
@@ -20363,8 +2251,8 @@ Date:   Tue Jan 3 16:57:40 2012 +0100
 
     Treat NULL as an empty array and add the corresponding testcase
 
- gi/pygi-marshal-to-py.c | 9 +++++----
- tests/test_gi.py        | 3 +++
+ gi/pygi-marshal-to-py.c |    9 +++++----
+ tests/test_gi.py        |    3 +++
  2 files changed, 8 insertions(+), 4 deletions(-)
 
 commit e3451b8e6018bb76e9992fb6af24a71725de5cfd
@@ -20373,7 +2261,7 @@ Date:   Fri Dec 23 12:01:43 2011 +0100
 
     Branching, bump version to 3.1.0
 
- configure.ac | 4 ++--
+ configure.ac |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8d1a36cc73f5f4df091ecb289c8a7b38ec2ab605
@@ -20382,7 +2270,7 @@ Date:   Mon Dec 12 18:35:30 2011 +0100
 
     Add notes about branching to HACKING
 
- HACKING | 10 ++++++++++
+ HACKING |   10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 00030bc6f0fb961c716ed692144cd8e4bb9be7d0
@@ -20394,8 +2282,8 @@ Date:   Sat Dec 10 12:51:45 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664864
 
- gi/_gobject/propertyhelper.py |  2 +-
- tests/test_properties.py      | 31 +++++++++++++++++++++++++++++++
+ gi/_gobject/propertyhelper.py |    2 +-
+ tests/test_properties.py      |   31 +++++++++++++++++++++++++++++++
  2 files changed, 32 insertions(+), 1 deletion(-)
 
 commit 7b78abc6c399abd0daa4c11c644d107e1bb7b452
@@ -20404,7 +2292,7 @@ Date:   Mon Dec 12 17:00:24 2011 +0100
 
     Remove mention of removed option --enable-docs
 
- HACKING | 2 +-
+ HACKING |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4cba52f5b5e79b7b6212cb0795e8976a9da9f21d
@@ -20413,7 +2301,7 @@ Date:   Mon Dec 12 17:00:03 2011 +0100
 
     Fix sebp's name in NEWS
 
- NEWS | 2 +-
+ NEWS |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8c95981d0ba224a577f87998030c384b3dae3d80
@@ -20422,7 +2310,7 @@ Date:   Mon Dec 12 16:20:09 2011 +0100
 
     Release 3.0.3
 
- NEWS | 15 +++++++++++++++
+ NEWS |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 58e47fd28c5d75bb78042c8f9eb5aae84de9c64d
@@ -20431,7 +2319,7 @@ Date:   Mon Dec 12 16:16:44 2011 +0100
 
     Pre-release version bump
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 884468d4816fc976c0c0c72651e7f81d13f3f78b
@@ -20442,7 +2330,7 @@ Date:   Thu Dec 1 11:50:38 2011 -0300
 
     Signed-off-by: Manuel Quiñones <manuq@laptop.org>
 
- pygi-convert.sh | 14 ++++++++++++++
+ pygi-convert.sh |   14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706
@@ -20453,9 +2341,9 @@ Date:   Tue Nov 8 12:38:12 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663610
 
- gi/overrides/Gtk.py     | 15 +++++++++++++++
- tests/compathelper.py   |  2 ++
- tests/test_overrides.py | 31 ++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py     |   15 +++++++++++++++
+ tests/compathelper.py   |    2 ++
+ tests/test_overrides.py |   31 ++++++++++++++++++++++++++++++-
  3 files changed, 47 insertions(+), 1 deletion(-)
 
 commit 4f637212f13b197a95c824967a58496b9e3b877c
@@ -20464,7 +2352,7 @@ Date:   Wed Nov 2 14:51:24 2011 -0400
 
     add test for bytearray variants
 
- tests/test_gi.py | 4 ++++
+ tests/test_gi.py |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit 20ca3f129d6cc662285cce8c732b55596016aefa
@@ -20473,7 +2361,7 @@ Date:   Wed Nov 2 14:50:42 2011 -0400
 
     handle NULL arrays correctly for each array type
 
- gi/pygi-marshal-to-py.c | 11 ++++++-----
+ gi/pygi-marshal-to-py.c |   11 ++++++-----
  1 file changed, 6 insertions(+), 5 deletions(-)
 
 commit ce2f780bffe44b1d4de617dcbce4b90c58b03c18
@@ -20484,8 +2372,8 @@ Date:   Wed Nov 2 14:17:21 2011 -0400
 
     This reverts commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4.
 
- gi/pygi-marshal-from-py.c | 6 +++++-
- gi/pygi-marshal-to-py.c   | 8 +++++++-
+ gi/pygi-marshal-from-py.c |    6 +++++-
+ gi/pygi-marshal-to-py.c   |    8 +++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 832f16f96815adc22cc3acbeb3fa969631795a29
@@ -20501,7 +2389,7 @@ Date:   Sun Oct 30 18:08:57 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663068
 
- gi/_glib/pygmainloop.c | 5 ++++-
+ gi/_glib/pygmainloop.c |    5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 2fd3aa9d4ca0906a5e609845ee500ba72e358f94
@@ -20512,8 +2400,8 @@ Date:   Sat Oct 29 15:08:03 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662994
 
- gi/types.py      | 22 +++++++++++++---------
- tests/test_gi.py | 20 ++++++++++----------
+ gi/types.py      |   22 +++++++++++++---------
+ tests/test_gi.py |   20 ++++++++++----------
  2 files changed, 23 insertions(+), 19 deletions(-)
 
 commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4
@@ -20524,8 +2412,8 @@ Date:   Wed Nov 2 14:54:21 2011 +0100
 
     This reverts commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3.
 
- gi/pygi-marshal-from-py.c | 6 +-----
- gi/pygi-marshal-to-py.c   | 8 +-------
+ gi/pygi-marshal-from-py.c |    6 +-----
+ gi/pygi-marshal-to-py.c   |    8 +-------
  2 files changed, 2 insertions(+), 12 deletions(-)
 
 commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3
@@ -20543,8 +2431,8 @@ Date:   Sun Oct 30 16:36:32 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662550
 
- gi/pygi-marshal-from-py.c | 6 +++++-
- gi/pygi-marshal-to-py.c   | 8 +++++++-
+ gi/pygi-marshal-from-py.c |    6 +++++-
+ gi/pygi-marshal-to-py.c   |    8 +++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 4c1d9f01b8fa6702f73b290180f934250e179caa
@@ -20553,7 +2441,7 @@ Date:   Sun Oct 30 09:20:45 2011 +0000
 
     pygi-convert: fix for Pango.Alignment
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit e3abd76096cc9f335681c7225f452c286b9c59e2
@@ -20562,7 +2450,7 @@ Date:   Sun Oct 30 07:06:57 2011 +0000
 
     pygi-convert: fix for Gtk.Orientation
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 52b82c5f78ef3755388457fa9440c36ccd2dfbbf
@@ -20578,7 +2466,7 @@ Date:   Thu Oct 27 07:16:24 2011 +0200
     this as EXFAIL
     for now. (See https://bugzilla.gnome.org/show_bug.cgi?id=656554)
 
- tests/test_everything.py | 24 ++++++++++++++++++++++++
+ tests/test_everything.py |   24 ++++++++++++++++++++++++
  1 file changed, 24 insertions(+)
 
 commit c7aa0e79dfb4c1092c51ae1464b8414083b4f3fc
@@ -20601,12 +2489,12 @@ Date:   Tue Oct 4 12:28:26 2011 +0200
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-cache.c           |  2 +-
- gi/pygi-marshal-cleanup.c | 81
- ++++++++++++++++++++++++++++++-----------------
- gi/pygi-marshal-from-py.c | 10 ++++--
- gi/pygi-marshal-to-py.c   | 13 ++++++--
- tests/test_gi.py          | 14 +++++++-
+ gi/pygi-cache.c           |    2 +-
+ gi/pygi-marshal-cleanup.c |   81
+ +++++++++++++++++++++++++++++----------------
+ gi/pygi-marshal-from-py.c |   10 ++++--
+ gi/pygi-marshal-to-py.c   |   13 ++++++--
+ tests/test_gi.py          |   14 +++++++-
  5 files changed, 85 insertions(+), 35 deletions(-)
 
 commit c2ec4d8eb46ae2e6ee4372b2a4f9d5df0e5d82f3
@@ -20615,7 +2503,7 @@ Date:   Sat Oct 22 00:20:57 2011 +0200
 
     Release 3.0.2
 
- NEWS | 8 ++++++++
+ NEWS |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 5c24760b797e985721f7fe51d52252e4dd54a417
@@ -20632,8 +2520,8 @@ Date:   Fri Oct 21 17:31:41 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662383
 
- gi/pygi-invoke.c         | 10 ++++++++++
- tests/test_everything.py |  8 ++++++++
+ gi/pygi-invoke.c         |   10 ++++++++++
+ tests/test_everything.py |    8 ++++++++
  2 files changed, 18 insertions(+)
 
 commit 585222915dc98b0e375de3db4771466278a32e81
@@ -20646,8 +2534,8 @@ Date:   Tue Oct 18 00:39:16 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661673
 
- gi/pygi-marshal-from-py.c | 121
- ++++++++++++++++++++++++++--------------------
+ gi/pygi-marshal-from-py.c |  121
+ +++++++++++++++++++++++++--------------------
  1 file changed, 68 insertions(+), 53 deletions(-)
 
 commit 8deaec6b9abd87f02060c9feec773d4693e89028
@@ -20662,8 +2550,8 @@ Date:   Wed Oct 19 14:35:11 2011 +0200
 
     https://launchpad.net/bugs/875399
 
- gi/overrides/Gdk.py | 95
- +++++++++++++++++++++++++++--------------------------
+ gi/overrides/Gdk.py |   95
+ ++++++++++++++++++++++++++-------------------------
  1 file changed, 48 insertions(+), 47 deletions(-)
 
 commit f395fb131caf7ca550acd17138d8061926ef4f92
@@ -20674,7 +2562,7 @@ Date:   Fri Oct 14 17:19:45 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661359
 
- tests/test_everything.py | 11 +++++++++++
+ tests/test_everything.py |   11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 611f58b99851328653af4930f188c33eccaa9f6f
@@ -20686,7 +2574,7 @@ Date:   Fri Oct 14 16:42:32 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661359
 
- gi/pygi-argument.c | 10 ++++++++++
+ gi/pygi-argument.c |   10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 0f1eb9fa0e7aa5e7c22dabc709c0dfb469e404f1
@@ -20698,7 +2586,7 @@ Date:   Tue Oct 4 11:13:43 2011 +0200
     Add the GBoxed type as valid type to the gobject property helper
     https://bugzilla.gnome.org/show_bug.cgi?id=660798
 
- gi/_gobject/propertyhelper.py | 5 +++--
+ gi/_gobject/propertyhelper.py |    5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit bef8d385117dd0295c9ba7567710d76fc2bb729a
@@ -20707,7 +2595,7 @@ Date:   Mon Oct 10 11:24:42 2011 +0200
 
     Add tests for boxed properties.
 
- tests/test_properties.py | 20 ++++++++++++++++++--
+ tests/test_properties.py |   20 ++++++++++++++++++--
  1 file changed, 18 insertions(+), 2 deletions(-)
 
 commit 77123ffeb1585837033848f4d5a90cfa63fdaee0
@@ -20716,7 +2604,7 @@ Date:   Fri Sep 30 20:21:07 2011 +0200
 
     Post release bump version
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f5ccfec0a1bc4c999bfa49d75383ea06d3a068c4
@@ -20725,8 +2613,8 @@ Date:   Fri Sep 30 20:19:46 2011 +0200
 
     Release 3.0.1
 
- NEWS         | 5 +++++
- configure.ac | 2 +-
+ NEWS         |    5 +++++
+ configure.ac |    2 +-
  2 files changed, 6 insertions(+), 1 deletion(-)
 
 commit 56ac9339eb1d6950623dc4d8c3b9972874e7fa86
@@ -20742,8 +2630,8 @@ Date:   Thu Sep 22 19:03:20 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659879
 
- gi/pygi-marshal-from-py.c | 60
- +++++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-marshal-from-py.c |   60
+ ++++++++++++++++++++++++++++++++++++++++++---
  1 file changed, 56 insertions(+), 4 deletions(-)
 
 commit 311a4f8035a95b41bc3c0a836c32b7a5bf2d9959
@@ -20756,10 +2644,10 @@ Date:   Wed Sep 21 21:50:48 2011 -0400
     instantiated
       via g_object_new
 
- gi/_gobject/gobjectmodule.c     |  5 +++++
- gi/_gobject/pygobject-private.h |  3 +++
- gi/_gobject/pygobject.c         | 27 ++++++++++++++++++++++++++-
- gi/_gobject/pygobject.h         |  3 ++-
+ gi/_gobject/gobjectmodule.c     |    5 +++++
+ gi/_gobject/pygobject-private.h |    3 +++
+ gi/_gobject/pygobject.c         |   27 ++++++++++++++++++++++++++-
+ gi/_gobject/pygobject.h         |    3 ++-
  4 files changed, 36 insertions(+), 2 deletions(-)
 
 commit d2d29ae5845217254b9336fd8629f369cb119b25
@@ -20771,7 +2659,7 @@ Date:   Wed Sep 21 21:13:22 2011 -0400
 
     This reverts commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5.
 
- gi/_gobject/gobjectmodule.c | 32 +++++++++++++++++---------------
+ gi/_gobject/gobjectmodule.c |   32 +++++++++++++++++---------------
  1 file changed, 17 insertions(+), 15 deletions(-)
 
 commit a24c10b779f2a1b0425d56d03d59c393389cad98
@@ -20780,7 +2668,7 @@ Date:   Wed Sep 21 21:10:00 2011 -0400
 
     make sure to commit the NEWS file
 
- NEWS | 4 ++++
+ NEWS |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit 2eed2940c9be099fb6305288d895265e6b35d3d2
@@ -20789,7 +2677,7 @@ Date:   Mon Sep 19 13:19:57 2011 -0400
 
     prep for 3.0 release
 
- configure.ac | 6 +++---
+ configure.ac |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit fbd58b70c2c3c1128f95a87eb4cc8313b6a401b8
@@ -20798,7 +2686,7 @@ Date:   Fri Sep 16 14:19:15 2011 -0400
 
     up version required of gobject-introspection to 1.29.0
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 225f21117b6b3546989abe22538c784291e86b2a
@@ -20812,12 +2700,12 @@ Date:   Fri Sep 16 12:26:10 2011 -0400
     * handle deprecated enums in switch statments by using default:
     * unused wanrings still remain in some places
 
- gi/pygi-argument.c        |  2 +-
- gi/pygi-cache.c           |  7 ++-----
- gi/pygi-info.c            |  6 ++++++
- gi/pygi-invoke.c          |  2 +-
- gi/pygi-marshal-from-py.c | 17 +++++++++--------
- gi/pygi-marshal-to-py.c   |  3 +--
+ gi/pygi-argument.c        |    2 +-
+ gi/pygi-cache.c           |    7 ++-----
+ gi/pygi-info.c            |    6 ++++++
+ gi/pygi-invoke.c          |    2 +-
+ gi/pygi-marshal-from-py.c |   17 +++++++++--------
+ gi/pygi-marshal-to-py.c   |    3 +--
  6 files changed, 20 insertions(+), 17 deletions(-)
 
 commit 9a70f01288e1b049206d25d67938907f1b38a490
@@ -20826,7 +2714,7 @@ Date:   Fri Sep 16 12:24:38 2011 -0400
 
     post release bump
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3ec4020205e909ee4400650434f9ae7b89c2bde8
@@ -20835,7 +2723,7 @@ Date:   Thu Sep 15 18:12:01 2011 -0400
 
     edit HACKING file to show correct tag format
 
- HACKING | 2 +-
+ HACKING |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2e864fd05bc0adf48df9f65ab72785ebb1d0d3f0
@@ -20844,7 +2732,7 @@ Date:   Thu Sep 15 18:10:33 2011 -0400
 
     update NEWS file to prep for release
 
- NEWS | 35 +++++++++++++++++++++++++++++++++++
+ NEWS |   35 +++++++++++++++++++++++++++++++++++
  1 file changed, 35 insertions(+)
 
 commit 0da687fa699aba4f42c42a924d6754e2bd47df50
@@ -20853,7 +2741,7 @@ Date:   Thu Sep 15 17:59:31 2011 -0400
 
     fix typo s/lenth/length
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0e4861abaff64d8e7e8d1aeedf9dd1e80de8aab2
@@ -20862,7 +2750,7 @@ Date:   Thu Sep 15 17:48:58 2011 -0400
 
     fix typo in docstring
 
- gi/_gobject/propertyhelper.py | 2 +-
+ gi/_gobject/propertyhelper.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e7fcc326d64def610e5a1003cf6c7ca97023814d
@@ -20880,7 +2768,7 @@ Date:   Thu Sep 15 17:46:46 2011 -0400
       just
       set length to that.
 
- gi/overrides/Gtk.py | 6 ++----
+ gi/overrides/Gtk.py |    6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit 6f380153afb3390f7da9f4b8befb1c4ee224da17
@@ -20895,7 +2783,7 @@ Date:   Mon Sep 12 21:07:20 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659140
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 11c45ac6dcb6ffad766d03bfc77f45a6d703a90d
@@ -20910,8 +2798,8 @@ Date:   Thu Sep 15 14:18:57 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659142
 
- gi/_gobject/gobjectmodule.c | 4 ----
- gi/_gobject/pygobject.h     | 2 --
+ gi/_gobject/gobjectmodule.c |    4 ----
+ gi/_gobject/pygobject.h     |    2 --
  2 files changed, 6 deletions(-)
 
 commit 7e48fd6dfd86b7082c3fd35d25d9693c56c9665a
@@ -20929,8 +2817,8 @@ Date:   Thu Sep 15 15:52:18 2011 -0400
         import gi
         installdir = gi._overridesdir
 
- gi/__init__.py      |  2 ++
- pygobject-3.0.pc.in | 10 +++++++++-
+ gi/__init__.py      |    2 ++
+ pygobject-3.0.pc.in |   10 +++++++++-
  2 files changed, 11 insertions(+), 1 deletion(-)
 
 commit beea7072a5a989be47a755ac46647380d4dbd6b4
@@ -20953,7 +2841,7 @@ Date:   Thu Sep 15 00:11:09 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- tests/test_overrides.py | 4 ++--
+ tests/test_overrides.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 46ba7f04ef3df08e07ddda5c10f0c98bec5fa183
@@ -20973,8 +2861,8 @@ Date:   Thu Sep 15 00:08:31 2011 -0400
       for arrays
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- gi/pygi-marshal-from-py.c | 35 ++++++++++++++++++++++++++++++++---
- tests/test_gi.py          | 29 +++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.c |   35 ++++++++++++++++++++++++++++++++---
+ tests/test_gi.py          |   29 +++++++++++++++++++++++++++++
  2 files changed, 61 insertions(+), 3 deletions(-)
 
 commit e30a41592baa942188574e5c9f99572963e2e387
@@ -20999,8 +2887,8 @@ Date:   Thu Sep 15 00:02:34 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- gi/pygi-cache.c | 30 ++++++++++++++++++++----------
- gi/pygi-cache.h |  9 +++++++--
+ gi/pygi-cache.c |   30 ++++++++++++++++++++----------
+ gi/pygi-cache.h |    9 +++++++--
  2 files changed, 27 insertions(+), 12 deletions(-)
 
 commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5
@@ -21028,7 +2916,7 @@ Date:   Wed Sep 14 20:26:15 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657403
 
- gi/_gobject/gobjectmodule.c | 32 +++++++++++++++-----------------
+ gi/_gobject/gobjectmodule.c |   32 +++++++++++++++-----------------
  1 file changed, 15 insertions(+), 17 deletions(-)
 
 commit 61b64a65beee9011f8e4ed20f0a83e6630ba154f
@@ -21040,7 +2928,7 @@ Date:   Tue Sep 13 18:08:04 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657403
 
- gi/_gobject/gobjectmodule.c | 2 +-
+ gi/_gobject/gobjectmodule.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 93e12cc2eb7e7f2c18971da86e9c9452d3f566b7
@@ -21051,7 +2939,7 @@ Date:   Fri Aug 26 11:22:09 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657416
 
- gi/_gobject/pygobject.h | 19 +------------------
+ gi/_gobject/pygobject.h |   19 +------------------
  1 file changed, 1 insertion(+), 18 deletions(-)
 
 commit e1c71092af6e2cffa36248519adfceac1874051d
@@ -21062,7 +2950,7 @@ Date:   Wed Aug 31 09:43:28 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657785
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 3ace5c2e2268285a5dcb39889fcb2a71bc1063bd
@@ -21077,8 +2965,8 @@ Date:   Fri Sep 2 08:37:15 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658032
 
- examples/signal.py      |  2 --
- gi/_gobject/pygobject.c | 11 -----------
+ examples/signal.py      |    2 --
+ gi/_gobject/pygobject.c |   11 -----------
  2 files changed, 13 deletions(-)
 
 commit fcd457d1d1d8a813acb2ebfe5ee0e9aab2c9c88c
@@ -21092,10 +2980,10 @@ Date:   Tue Sep 13 12:05:30 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658856
 
- configure.ac            |  4 +++-
- gi/Makefile.am          |  9 ++++++---
- gi/_glib/Makefile.am    | 10 ++++++++--
- gi/_gobject/Makefile.am |  8 +++++++-
+ configure.ac            |    4 +++-
+ gi/Makefile.am          |    9 ++++++---
+ gi/_glib/Makefile.am    |   10 ++++++++--
+ gi/_gobject/Makefile.am |    8 +++++++-
  4 files changed, 24 insertions(+), 7 deletions(-)
 
 commit 863c087911203a8f3ebaa8e77622a3437a7cd320
@@ -21106,7 +2994,7 @@ Date:   Mon Sep 12 23:03:05 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658856
 
- Makefile.am | 6 ------
+ Makefile.am |    6 ------
  1 file changed, 6 deletions(-)
 
 commit 24b920f9922e367bdb8b3e56c2f61e0c8f5cdb66
@@ -21115,7 +3003,7 @@ Date:   Tue Sep 13 16:20:48 2011 -0400
 
     cast params for PyObject_IsInstance to suppress warnings
 
- gi/_gobject/pygobject-private.h | 4 ++--
+ gi/_gobject/pygobject-private.h |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 861369ec59b17f67151813dc2e87c6e86126b954
@@ -21132,7 +3020,7 @@ Date:   Tue Sep 13 16:04:31 2011 -0400
        could at best give you a false positive and at worse read
        memory beyond the bounds of the actual structure passed in
 
- gi/_gobject/pygobject-private.h | 4 ++--
+ gi/_gobject/pygobject-private.h |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit eea93e89fb064253bd8903c8b453daf4b3c87c2c
@@ -21142,7 +3030,7 @@ Date:   Tue Sep 13 16:03:02 2011 -0400
     fix regression - add instance type checks since Py3 no longer does
     this for us
 
- gi/pygi-marshal-from-py.c | 21 +++++++++++++++++++--
+ gi/pygi-marshal-from-py.c |   21 +++++++++++++++++++--
  1 file changed, 19 insertions(+), 2 deletions(-)
 
 commit a4e4318b50a24a688e32579273fbcfa51d1b422a
@@ -21163,20 +3051,23 @@ Date:   Fri Sep 2 18:39:51 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658362
 
- gi/Makefile.am                                   |   8 +-
- gi/pygi-cache.c                                  | 673
- ++++++++++++-----------
- gi/pygi-cache.h                                  |  62 ++-
- gi/pygi-invoke.c                                 | 144 ++---
- gi/pygi-marshal-cleanup.c                        | 168 +++---
- gi/pygi-marshal-cleanup.h                        | 128 ++---
- gi/{pygi-marshal-in.c => pygi-marshal-from-py.c} | 372 ++++++-------
- gi/pygi-marshal-from-py.h                        | 186 +++++++
- gi/pygi-marshal-in.h                             | 186 -------
- gi/pygi-marshal-out.h                            | 144 -----
- gi/{pygi-marshal-out.c => pygi-marshal-to-py.c}  | 278 +++++-----
- gi/pygi-marshal-to-py.h                          | 144 +++++
- 12 files changed, 1267 insertions(+), 1226 deletions(-)
+ gi/Makefile.am            |    8 +-
+ gi/pygi-cache.c           |  673 ++++++++++-----------
+ gi/pygi-cache.h           |   62 +-
+ gi/pygi-invoke.c          |  144 ++---
+ gi/pygi-marshal-cleanup.c |  168 +++---
+ gi/pygi-marshal-cleanup.h |  128 ++--
+ gi/pygi-marshal-from-py.c | 1412
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.h |  186 ++++++
+ gi/pygi-marshal-in.c      | 1412
+ ---------------------------------------------
+ gi/pygi-marshal-in.h      |  186 ------
+ gi/pygi-marshal-out.c     |  768 ------------------------
+ gi/pygi-marshal-out.h     |  144 -----
+ gi/pygi-marshal-to-py.c   |  768 ++++++++++++++++++++++++
+ gi/pygi-marshal-to-py.h   |  144 +++++
+ 14 files changed, 3122 insertions(+), 3081 deletions(-)
 
 commit 45b0fcff9e948c65a3903c32a3957802034c5e47
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
@@ -21184,7 +3075,7 @@ Date:   Fri Sep 9 16:50:25 2011 +0200
 
     Examples: fix cairo-demo.py imports
 
- examples/cairo-demo.py | 6 +++---
+ examples/cairo-demo.py |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 3ca19fc13e6024fd04851e6f269020a92b09fa17
@@ -21196,7 +3087,7 @@ Date:   Fri Sep 9 15:08:27 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658654
 
- pygobject-3.0-uninstalled.pc.in | 14 +++++++-------
+ pygobject-3.0-uninstalled.pc.in |   14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit 6e773175b9d2f46b3df5075ec952a8c5aff3c607
@@ -21207,8 +3098,8 @@ Date:   Fri Sep 9 15:08:04 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658654
 
- pygobject-3.0-uninstalled.pc.in | 6 ------
- pygobject-3.0.pc.in             | 5 +----
+ pygobject-3.0-uninstalled.pc.in |    6 ------
+ pygobject-3.0.pc.in             |    5 +----
  2 files changed, 1 insertion(+), 10 deletions(-)
 
 commit 81d388780311311d8dc4a027a59d114edf9a00fc
@@ -21219,8 +3110,8 @@ Date:   Fri Sep 9 14:57:58 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- docs/Makefile.am | 2 +-
- m4/python.m4     | 2 +-
+ docs/Makefile.am |    2 +-
+ m4/python.m4     |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 7e692ee061406e48e4862b98a0829650b1d6d585
@@ -21231,13 +3122,13 @@ Date:   Fri Sep 9 14:57:46 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- Makefile.am               |   2 -
- gi/Makefile.am            |  81 +++++++++++++++++++++++--------------
- gi/_glib/Makefile.am      | 100
- ++++++++++++++++++++++++++++++----------------
- gi/_gobject/Makefile.am   |  85 ++++++++++++++++++++-------------------
- gi/overrides/Makefile.am  |   4 +-
- gi/repository/Makefile.am |   4 +-
+ Makefile.am               |    2 -
+ gi/Makefile.am            |   81 ++++++++++++++++++++++--------------
+ gi/_glib/Makefile.am      |  100
+ +++++++++++++++++++++++++++++----------------
+ gi/_gobject/Makefile.am   |   85 ++++++++++++++++++++------------------
+ gi/overrides/Makefile.am  |    4 +-
+ gi/repository/Makefile.am |    4 +-
  6 files changed, 162 insertions(+), 114 deletions(-)
 
 commit 3dd59b07d1f4a93ee1f65d6a64e1afb6f5e84232
@@ -21248,9 +3139,9 @@ Date:   Fri Sep 9 14:57:36 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- gi/Makefile.am            | 2 --
- gi/overrides/Makefile.am  | 1 -
- gi/repository/Makefile.am | 1 -
+ gi/Makefile.am            |    2 --
+ gi/overrides/Makefile.am  |    1 -
+ gi/repository/Makefile.am |    1 -
  3 files changed, 4 deletions(-)
 
 commit db1e484bfa157967de55ee2e0e18a82b8e388b61
@@ -21261,8 +3152,8 @@ Date:   Fri Sep 9 14:57:25 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- gi/tests/Makefile.am | 24 ------------------------
- gi/tests/runtests.py | 21 ---------------------
+ gi/tests/Makefile.am |   24 ------------------------
+ gi/tests/runtests.py |   21 ---------------------
  2 files changed, 45 deletions(-)
 
 commit b0ecbf00138ef1147e478ebf3c66f0e9b3f85dfc
@@ -21274,9 +3165,9 @@ Date:   Fri Sep 9 14:55:25 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- Makefile.am |  2 +-
- autogen.sh  | 95
- +++++++------------------------------------------------------
+ Makefile.am |    2 +-
+ autogen.sh  |   95
+ +++++++----------------------------------------------------
  2 files changed, 12 insertions(+), 85 deletions(-)
 
 commit 4671f5397003f376f00830e3fd1c214de594619f
@@ -21287,8 +3178,8 @@ Date:   Fri Sep 9 14:55:01 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- configure.ac |  3 ++-
- m4/python.m4 | 47 +++++++++++++++++++++++++++++++++++++----------
+ configure.ac |    3 ++-
+ m4/python.m4 |   47 +++++++++++++++++++++++++++++++++++++----------
  2 files changed, 39 insertions(+), 11 deletions(-)
 
 commit 2c9fd09da196d35db968bff4ae63fcce2d891e69
@@ -21300,7 +3191,7 @@ Date:   Fri Sep 9 15:38:22 2011 +0100
     See
     http://blogs.gnome.org/desrt/2011/09/08/am_maintainer_mode-is-not-cool/
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b24dcb415406668931e02a1f669ef9861bb3a660
@@ -21311,8 +3202,8 @@ Date:   Wed Aug 24 09:58:10 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657054
 
- Makefile.am  |  2 +-
- configure.ac | 25 -------------------------
+ Makefile.am  |    2 +-
+ configure.ac |   25 -------------------------
  2 files changed, 1 insertion(+), 26 deletions(-)
 
 commit ecea2358a379c8ff44dff2f8f9c30a9092af1681
@@ -21323,7 +3214,7 @@ Date:   Wed Sep 7 10:38:28 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657054
 
- docs/Makefile.am | 5 +++--
+ docs/Makefile.am |    5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit 8d3125c8ce9890c70400dd8a3ac273b590fe6a31
@@ -21339,13 +3230,13 @@ Date:   Tue Sep 6 22:22:11 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657054
 
- MANIFEST.in              |   7 -
- Makefile.am              |  25 +--
- README.win32             |  21 --
- dsextras.py              | 509
- -----------------------------------------------
- pygobject_postinstall.py |   9 -
- setup.py                 | 351 --------------------------------
+ MANIFEST.in              |    7 -
+ Makefile.am              |   25 +--
+ README.win32             |   21 --
+ dsextras.py              |  509
+ ----------------------------------------------
+ pygobject_postinstall.py |    9 -
+ setup.py                 |  351 --------------------------------
  6 files changed, 7 insertions(+), 915 deletions(-)
 
 commit b82d916635aa0b732840548088a3fcfcb2e41bc4
@@ -21365,7 +3256,7 @@ Date:   Wed Sep 7 10:40:36 2011 +0200
     selecting
     the rotated text demo in the treeview.
 
- demos/gtk-demo/gtk-demo.py | 3 +++
+ demos/gtk-demo/gtk-demo.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 31db3ed3d233bd495c3a2f99b3fa51031bfa30c6
@@ -21374,7 +3265,7 @@ Date:   Tue Sep 6 22:13:54 2011 +0200
 
     overrides: add constants for atoms
 
- gi/overrides/Gdk.py | 49
+ gi/overrides/Gdk.py |   49
  +++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 49 insertions(+)
 
@@ -21397,10 +3288,10 @@ Date:   Wed Aug 31 14:18:56 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657814
 
- gi/_gobject/gobjectmodule.c     | 118
- +++++++++-------------------------------
- gi/_gobject/pygobject-private.h |   3 -
- gi/_gobject/pygobject.h         |   8 ---
+ gi/_gobject/gobjectmodule.c     |  118
+ +++++++++------------------------------
+ gi/_gobject/pygobject-private.h |    3 -
+ gi/_gobject/pygobject.h         |    8 ---
  3 files changed, 26 insertions(+), 103 deletions(-)
 
 commit c4c55a98ccf9e39ed0d10ed49b66a76dc7d7c509
@@ -21409,7 +3300,7 @@ Date:   Wed Aug 31 18:00:44 2011 +0200
 
     post release version bump
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit ac5a0f46242abdd3cd98ec5f9f2bf8e5b05f3845
@@ -21418,7 +3309,7 @@ Date:   Wed Aug 31 17:58:37 2011 +0200
 
     Release 2.90.3
 
- NEWS | 12 ++++++++++++
+ NEWS |   12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 429569abddada5a3bad554de707ddf35b349936e
@@ -21434,11 +3325,11 @@ Date:   Thu Aug 25 13:57:53 2011 -0400
       full
     https://bugzilla.gnome.org/show_bug.cgi?id=650135
 
- gi/pygi-cache.c          |  1 +
- gi/pygi-cache.h          |  1 +
- gi/pygi-invoke.c         | 48
- ++++++++++++++++++++++++++++++------------------
- tests/test_everything.py |  8 ++++++++
+ gi/pygi-cache.c          |    1 +
+ gi/pygi-cache.h          |    1 +
+ gi/pygi-invoke.c         |   48
+ +++++++++++++++++++++++++++++-----------------
+ tests/test_everything.py |    8 ++++++++
  4 files changed, 40 insertions(+), 18 deletions(-)
 
 commit 7a234b185b131f3eb6a6e8a8c717ddf4d508b15e
@@ -21447,7 +3338,7 @@ Date:   Tue Aug 2 12:05:12 2011 +0200
 
     Test GPtrArray regression
 
- tests/test_everything.py | 3 +++
+ tests/test_everything.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 42fc9fa437102c882844a0e70a081ab08de92658
@@ -21462,13 +3353,13 @@ Date:   Fri Aug 26 10:53:43 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657413
 
- gi/_gobject/gobjectmodule.c     | 20 --------------------
- gi/_gobject/pygobject-private.h |  1 -
- gi/_gobject/pygobject.c         |  1 -
- gi/_gobject/pygobject.h         |  2 --
- gi/gimodule.c                   | 28 ----------------------------
- gi/types.py                     |  2 --
- tests/testhelpermodule.c        |  5 -----
+ gi/_gobject/gobjectmodule.c     |   20 --------------------
+ gi/_gobject/pygobject-private.h |    1 -
+ gi/_gobject/pygobject.c         |    1 -
+ gi/_gobject/pygobject.h         |    2 --
+ gi/gimodule.c                   |   28 ----------------------------
+ gi/types.py                     |    2 --
+ tests/testhelpermodule.c        |    5 -----
  7 files changed, 59 deletions(-)
 
 commit 3961a405e1bddef22e1a5a0c7aa3ae55e4ec09ad
@@ -21482,14 +3373,14 @@ Date:   Fri Aug 26 10:45:59 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642233
 
- gi/_gobject/gobjectmodule.c |  1 -
- gi/_gobject/pygobject.c     | 53 ----------------------------------------
- gi/_gobject/pygobject.h     |  4 ---
- tests/test-floating.c       | 59
- +++++++--------------------------------------
- tests/test-floating.h       | 42 +++++++++-----------------------
- tests/test_gobject.py       | 13 +++-------
- tests/testhelpermodule.c    | 32 +++++++-----------------
+ gi/_gobject/gobjectmodule.c |    1 -
+ gi/_gobject/pygobject.c     |   53 --------------------------------------
+ gi/_gobject/pygobject.h     |    4 ---
+ tests/test-floating.c       |   59
+ +++++++------------------------------------
+ tests/test-floating.h       |   42 ++++++++----------------------
+ tests/test_gobject.py       |   13 +++-------
+ tests/testhelpermodule.c    |   32 +++++++----------------
  7 files changed, 32 insertions(+), 172 deletions(-)
 
 commit 631d8ef879a13492945a3e30b3df9863a4ba2f44
@@ -21505,7 +3396,7 @@ Date:   Wed Aug 24 17:30:09 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657120
 
- gi/pygi-marshal-out.c | 8 +++++++-
+ gi/pygi-marshal-out.c |    8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit f38511f251602e18551c04617cc2e2d42e812e1e
@@ -21522,8 +3413,8 @@ Date:   Tue Aug 23 14:18:43 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657120
 
- gi/pygi-marshal-out.c | 23 +++++++++--------------
- tests/test_gi.py      |  8 ++++++++
+ gi/pygi-marshal-out.c |   23 +++++++++--------------
+ tests/test_gi.py      |    8 ++++++++
  2 files changed, 17 insertions(+), 14 deletions(-)
 
 commit d92846a5446b0dd2e69c813f56224a1966ab1a33
@@ -21532,7 +3423,7 @@ Date:   Tue Aug 23 11:30:41 2011 +0200
 
     [gtk-demo] printing.py: set print and error dialog transient parent
 
- demos/gtk-demo/demos/printing.py | 8 ++++----
+ demos/gtk-demo/demos/printing.py |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 1aebc1565752840075027b9452fe2a67217bf53b
@@ -21542,7 +3433,7 @@ Date:   Tue Aug 23 11:28:05 2011 +0200
     [gtk-demo] printing.py: exit Gtk mainloop when done and correctly
     handle printing errors
 
- demos/gtk-demo/demos/printing.py | 14 ++++++++++----
+ demos/gtk-demo/demos/printing.py |   14 ++++++++++----
  1 file changed, 10 insertions(+), 4 deletions(-)
 
 commit 1f9e4486c5b84209ce0038887738fc16a4ef7da3
@@ -21551,7 +3442,7 @@ Date:   Tue Aug 23 08:05:43 2011 +0200
 
     [gtk-demo] show "activated" demo's in italic font in the TreeView
 
- demos/gtk-demo/gtk-demo.py | 7 +++++--
+ demos/gtk-demo/gtk-demo.py |    7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 971d063f7a36e13ef6621db7002b00af52f6292a
@@ -21561,7 +3452,7 @@ Date:   Mon Aug 22 14:52:28 2011 +0200
     [gtk-demo] source colorizer: Python3 does not have the BACKQUOTE
     token, so simply remove it
 
- demos/gtk-demo/gtk-demo.py | 5 +----
+ demos/gtk-demo/gtk-demo.py |    5 +----
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 commit c2979a37d6d505095b6e55789150a6498d95819d
@@ -21576,7 +3467,7 @@ Date:   Mon Aug 22 14:22:18 2011 +0200
     section "If pre-2.6 compatibility is needed" (because configure.ac
     is still happy with Python 2.5.2).
 
- demos/gtk-demo/gtk-demo.py | 6 +++++-
+ demos/gtk-demo/gtk-demo.py |    6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 9ea56535f35abbea4cd977dea4c89247e4b01694
@@ -21585,7 +3476,7 @@ Date:   Mon Aug 22 12:30:24 2011 +0200
 
     [gtk-demo] images.py: fix 'Insensitive 'button mnenomic
 
- demos/gtk-demo/demos/images.py | 2 +-
+ demos/gtk-demo/demos/images.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7829dae1cdb8697a19c2b5e158ef0e08f6c2558b
@@ -21595,7 +3486,7 @@ Date:   Mon Aug 22 10:38:04 2011 +0200
     [gtk-demo] printing.py: fix Pango.EllipsizeType > Pango.EllipsizeMode
     & get_pixel_size
 
- demos/gtk-demo/demos/printing.py | 4 ++--
+ demos/gtk-demo/demos/printing.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 07f0274301d77d9bf62b49a14b059d9a52afb445
@@ -21604,7 +3495,7 @@ Date:   Mon Aug 22 10:37:08 2011 +0200
 
     [gtk-demo] printing.py: fix text file loading
 
- demos/gtk-demo/demos/printing.py | 32 ++++++++++++++++----------------
+ demos/gtk-demo/demos/printing.py |   32 ++++++++++++++++----------------
  1 file changed, 16 insertions(+), 16 deletions(-)
 
 commit 135148a4c35aac1d132b0b8fa3adbf1fdcdb3a24
@@ -21613,7 +3504,7 @@ Date:   Mon Aug 22 10:20:35 2011 +0200
 
     [gtk-demo] pixbuf.py: fix image loading
 
- demos/gtk-demo/demos/pixbuf.py | 25 +++++++++++--------------
+ demos/gtk-demo/demos/pixbuf.py |   25 +++++++++++--------------
  1 file changed, 11 insertions(+), 14 deletions(-)
 
 commit a93cae2c80e30a408f86e7e6c4d15a538011a189
@@ -21622,8 +3513,8 @@ Date:   Mon Aug 22 10:10:02 2011 +0200
 
     [gtk-demo] images.py: fix logo loading
 
- demos/gtk-demo/demos/images.py | 70
- +++++++++++++++++-------------------------
+ demos/gtk-demo/demos/images.py |   70
+ +++++++++++++++++-----------------------
  1 file changed, 29 insertions(+), 41 deletions(-)
 
 commit eddc0824e0e4c156fca5de05bdeb600c534d4b24
@@ -21632,7 +3523,7 @@ Date:   Wed Aug 24 12:19:21 2011 +0200
 
     [gtk-demo] appwindow.py: set AboutDialog parent
 
- demos/gtk-demo/demos/appwindow.py | 7 +++----
+ demos/gtk-demo/demos/appwindow.py |    7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit 7fe10a5b33148b1f029f3d34f76b7f880c1c2e7a
@@ -21641,7 +3532,7 @@ Date:   Mon Aug 22 07:58:25 2011 +0200
 
     [gtk-demo] appwindow.py: fix logo loading
 
- demos/gtk-demo/demos/appwindow.py | 10 +++-------
+ demos/gtk-demo/demos/appwindow.py |   10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 62fda288c1c37167c589e8e9d49ed625f770a98a
@@ -21650,7 +3541,7 @@ Date:   Mon Aug 22 07:57:31 2011 +0200
 
     [gtk-demo] appwindow.py: fix callback signatures
 
- demos/gtk-demo/demos/appwindow.py | 6 +++---
+ demos/gtk-demo/demos/appwindow.py |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 87e9ab4d3a0aac4f4710aa0f8af0a1736f781ad9
@@ -21659,8 +3550,8 @@ Date:   Mon Aug 22 07:48:28 2011 +0200
 
     [gtk-demo] fix glib vs GLib usage
 
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 2 +-
- demos/gtk-demo/demos/appwindow.py                | 2 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    2 +-
+ demos/gtk-demo/demos/appwindow.py                |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit d29cad6976a80862e1fc590d3e7d190e8a234866
@@ -21670,7 +3561,7 @@ Date:   Wed Aug 24 12:19:02 2011 +0200
     [gtk-demo] iconviewedit.py: fix for Gdk.color_parse API breakage
     caused by improved GDK overrides
 
- demos/gtk-demo/demos/Icon View/iconviewedit.py | 6 +++---
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit f29d3a85a275a39e8481484779264b0dea1160ab
@@ -21680,7 +3571,7 @@ Date:   Mon Aug 22 07:25:32 2011 +0200
     [gtk-demo] optimize source colorizer by only preparing iters for
     known colorized tokens
 
- demos/gtk-demo/gtk-demo.py | 20 +++++++++++++++-----
+ demos/gtk-demo/gtk-demo.py |   20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit ecd1eb00b19733da3f2e3d7935792378f34cab19
@@ -21689,17 +3580,17 @@ Date:   Fri Aug 19 18:31:20 2011 +0200
 
     [gtk-demo] small formatting fixes
 
- demos/gtk-demo/demos/Entry/entry_buffer.py       | 1 +
- demos/gtk-demo/demos/Entry/entry_completion.py   | 1 +
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 8 ++++----
- demos/gtk-demo/demos/assistant.py                | 1 +
- demos/gtk-demo/demos/builder.py                  | 4 +++-
- demos/gtk-demo/demos/button_box.py               | 1 +
- demos/gtk-demo/demos/clipboard.py                | 1 +
- demos/gtk-demo/demos/colorselector.py            | 1 +
- demos/gtk-demo/demos/combobox.py                 | 1 +
- demos/gtk-demo/demos/drawingarea.py              | 4 +++-
- demos/gtk-demo/demos/test.py                     | 2 ++
+ demos/gtk-demo/demos/Entry/entry_buffer.py       |    1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py   |    1 +
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    8 ++++----
+ demos/gtk-demo/demos/assistant.py                |    1 +
+ demos/gtk-demo/demos/builder.py                  |    4 +++-
+ demos/gtk-demo/demos/button_box.py               |    1 +
+ demos/gtk-demo/demos/clipboard.py                |    1 +
+ demos/gtk-demo/demos/colorselector.py            |    1 +
+ demos/gtk-demo/demos/combobox.py                 |    1 +
+ demos/gtk-demo/demos/drawingarea.py              |    4 +++-
+ demos/gtk-demo/demos/test.py                     |    2 ++
  11 files changed, 19 insertions(+), 6 deletions(-)
 
 commit c42cb4da399ff5732f4ca732b85134de796a60fa
@@ -21708,17 +3599,17 @@ Date:   Fri Aug 19 18:30:50 2011 +0200
 
     [gtk-demo] remove "is_fully_bound" from demos
 
- demos/gtk-demo/demos/Entry/entry_buffer.py     | 2 --
- demos/gtk-demo/demos/Entry/entry_completion.py | 2 --
- demos/gtk-demo/demos/appwindow.py              | 3 ---
- demos/gtk-demo/demos/assistant.py              | 2 --
- demos/gtk-demo/demos/builder.py                | 2 --
- demos/gtk-demo/demos/button_box.py             | 2 --
- demos/gtk-demo/demos/clipboard.py              | 2 --
- demos/gtk-demo/demos/colorselector.py          | 2 --
- demos/gtk-demo/demos/combobox.py               | 2 --
- demos/gtk-demo/demos/drawingarea.py            | 2 --
- demos/gtk-demo/demos/test.py                   | 1 -
+ demos/gtk-demo/demos/Entry/entry_buffer.py     |    2 --
+ demos/gtk-demo/demos/Entry/entry_completion.py |    2 --
+ demos/gtk-demo/demos/appwindow.py              |    3 ---
+ demos/gtk-demo/demos/assistant.py              |    2 --
+ demos/gtk-demo/demos/builder.py                |    2 --
+ demos/gtk-demo/demos/button_box.py             |    2 --
+ demos/gtk-demo/demos/clipboard.py              |    2 --
+ demos/gtk-demo/demos/colorselector.py          |    2 --
+ demos/gtk-demo/demos/combobox.py               |    2 --
+ demos/gtk-demo/demos/drawingarea.py            |    2 --
+ demos/gtk-demo/demos/test.py                   |    1 -
  11 files changed, 22 deletions(-)
 
 commit cad6a62c63f455f0b1315465a9cd71c0f02b12a5
@@ -21728,8 +3619,8 @@ Date:   Fri Aug 19 18:26:31 2011 +0200
     [gtk-demo] add source colorizer loosely based on PyGTK's pygtk-demo
     and GTK+'s gtk-demo code
 
- demos/gtk-demo/gtk-demo.py | 116
- +++++++++++++++++++++++++++++++++++++++------
+ demos/gtk-demo/gtk-demo.py |  116
+ ++++++++++++++++++++++++++++++++++++++------
  1 file changed, 101 insertions(+), 15 deletions(-)
 
 commit 250c36f4a8352ff1b31c1c85b156d3e803d4b8ef
@@ -21738,7 +3629,7 @@ Date:   Fri Aug 19 15:08:15 2011 +0200
 
     [gtk-demo] remove C-isms
 
- demos/gtk-demo/gtk-demo.py | 28 ++++++++++++++--------------
+ demos/gtk-demo/gtk-demo.py |   28 ++++++++++++++--------------
  1 file changed, 14 insertions(+), 14 deletions(-)
 
 commit cf35fe8e259e786d0fa21b08b1f5c64c9bb0a84e
@@ -21747,7 +3638,7 @@ Date:   Fri Aug 19 14:54:39 2011 +0200
 
     [gtk-demo] fix text on info tab to be more like GTK+'s gtk-demo
 
- demos/gtk-demo/gtk-demo.py | 4 ++--
+ demos/gtk-demo/gtk-demo.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 241827208e25c72a990d8edd95a3b879470d6409
@@ -21760,8 +3651,8 @@ Date:   Fri Aug 19 14:40:56 2011 +0200
     This also moves demos loading code into the TreeStore subclass and
     demo loading code into the Demo class
 
- demos/gtk-demo/gtk-demo.py | 151
- +++++++++++++++++++++------------------------
+ demos/gtk-demo/gtk-demo.py |  151
+ ++++++++++++++++++++------------------------
  1 file changed, 70 insertions(+), 81 deletions(-)
 
 commit 58797c355a08a35375988881a17958bb42ad54bb
@@ -21771,7 +3662,7 @@ Date:   Fri Aug 19 14:40:00 2011 +0200
     [gtk-demo] make GtkDemoApp a Gtk.Window subclass and adapt main()
     to demonstrate the GLib.MainLoop
 
- demos/gtk-demo/gtk-demo.py | 43
+ demos/gtk-demo/gtk-demo.py |   43
  ++++++++++++++++++++++++++-----------------
  1 file changed, 26 insertions(+), 17 deletions(-)
 
@@ -21781,7 +3672,7 @@ Date:   Fri Aug 19 11:46:17 2011 +0200
 
     [gtk-demo] correctly load demo code when cwd != demos/gtk-demo/
 
- demos/gtk-demo/gtk-demo.py | 39 +++++++++++++++++++++++----------------
+ demos/gtk-demo/gtk-demo.py |   39 +++++++++++++++++++++++----------------
  1 file changed, 23 insertions(+), 16 deletions(-)
 
 commit 6ffc999fbd4c9990fb5bde53ddd46d139b53245e
@@ -21790,7 +3681,7 @@ Date:   Fri Aug 19 11:02:35 2011 +0200
 
     [gtk-demo] drawingarea: fix labels
 
- demos/gtk-demo/demos/drawingarea.py | 4 ++--
+ demos/gtk-demo/demos/drawingarea.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 9fd3986affe11cbc5a816adcccdc56d0592f3618
@@ -21799,9 +3690,9 @@ Date:   Fri Aug 19 09:57:31 2011 +0200
 
     [gtk-demo] fix imports
 
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 6 ++++--
- demos/gtk-demo/demos/appwindow.py                | 9 ++++++---
- demos/gtk-demo/gtk-demo.py                       | 8 ++++----
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    6 ++++--
+ demos/gtk-demo/demos/appwindow.py                |    9 ++++++---
+ demos/gtk-demo/gtk-demo.py                       |    8 ++++----
  3 files changed, 14 insertions(+), 9 deletions(-)
 
 commit 9f314babfdee3b82799e00ea003972b0bbe6a8d5
@@ -21810,7 +3701,7 @@ Date:   Fri Aug 19 10:07:14 2011 +0200
 
     [gtk-demo] fix shebang
 
- demos/gtk-demo/gtk-demo.py | 2 +-
+ demos/gtk-demo/gtk-demo.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 01142060ae7d71a8a1f7d3e9bbc6f52e65f01c8d
@@ -21822,9 +3713,9 @@ Date:   Fri Aug 19 12:27:04 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=656891
 
- gi/overrides/Gtk.py     | 26 ++++++++++++++++++++--
- tests/test_overrides.py | 57
- +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py     |   26 +++++++++++++++++++--
+ tests/test_overrides.py |   57
+ +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 81 insertions(+), 2 deletions(-)
 
 commit d6da96c65b2ed3cda238886990a624fbc31f6987
@@ -21833,7 +3724,7 @@ Date:   Wed Aug 24 16:31:12 2011 +0200
 
     Convert ACCEL_* constants into Gtk.AccelFlags.
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 0841d41698302abb5d987849a5874252564ed428
@@ -21842,7 +3733,7 @@ Date:   Wed Aug 24 16:22:17 2011 +0200
 
     Convert TREE_VIEW_DROP_* constants into Gtk.TreeViewDropPosition
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 37b0d0f9dc3d485829cae6e50da369fdea91a2d1
@@ -21851,7 +3742,7 @@ Date:   Thu Aug 18 14:06:32 2011 -0400
 
     post commit version bump
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e51efc50835a14e0418cc27cc928c52d1aa6a3cf
@@ -21860,7 +3751,7 @@ Date:   Thu Aug 18 14:02:30 2011 -0400
 
     release 2.90.2
 
- NEWS | 10 ++++++++++
+ NEWS |   10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 74c727b53fcf64f465ee77b5a1ea04a69ca90968
@@ -21869,7 +3760,7 @@ Date:   Thu Aug 18 13:50:51 2011 -0400
 
     remove tests that were removed from gi
 
- tests/test_gi.py | 11 -----------
+ tests/test_gi.py |   11 -----------
  1 file changed, 11 deletions(-)
 
 commit 11ea24dd30d8eeca11c8433c6bd75b06e52ae1ef
@@ -21882,7 +3773,7 @@ Date:   Thu Aug 18 13:48:57 2011 -0400
        arrays causes a crash in the tests because of this
      * disregaurd is_pointer when cacluating item sizes
 
- gi/pygi-info.c | 8 ++------
+ gi/pygi-info.c |    8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)
 
 commit 493b4a21dd162d78cf572b548b58ba6a9ff22971
@@ -21893,7 +3784,7 @@ Date:   Wed Jul 6 01:50:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654162
 
- examples/signal.py | 9 ++++-----
+ examples/signal.py |    9 ++++-----
  1 file changed, 4 insertions(+), 5 deletions(-)
 
 commit 0332010e704e253380e993874eab9dd122e59a7e
@@ -21904,7 +3795,7 @@ Date:   Wed Jul 6 01:54:50 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654162
 
- examples/properties.py | 14 +++++++-------
+ examples/properties.py |   14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit c39f4555ebd703651eca6f978ed9870655b737f0
@@ -21919,9 +3810,9 @@ Date:   Fri Aug 12 22:55:02 2011 +0200
     generating
     introspection XML for exported DBus server objects.
 
- gi/overrides/GLib.py    | 50
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 22 ++++++++++++++++++++++
+ gi/overrides/GLib.py    |   50
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   22 +++++++++++++++++++++
  2 files changed, 72 insertions(+)
 
 commit 735f98d83c1c19df7457aa32a378e8c80cf2831f
@@ -21932,7 +3823,7 @@ Date:   Mon Aug 15 18:58:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654001
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit d0a96a0a75f2bc969522abce2d326ef440cf143a
@@ -21943,9 +3834,9 @@ Date:   Mon Aug 15 13:12:49 2011 +0200
 
     This is needed by libpeas.
 
- gi/_gobject/Makefile.am         | 5 ++++-
- pygobject-3.0-uninstalled.pc.in | 4 ++--
- pygobject-3.0.pc.in             | 6 +++---
+ gi/_gobject/Makefile.am         |    5 ++++-
+ pygobject-3.0-uninstalled.pc.in |    4 ++--
+ pygobject-3.0.pc.in             |    6 +++---
  3 files changed, 9 insertions(+), 6 deletions(-)
 
 commit 081dc2eb03b677eac9f08d3ad05deecc7c51554c
@@ -21954,7 +3845,7 @@ Date:   Sun Aug 14 11:20:15 2011 -0400
 
     update the doap file
 
- pygobject.doap | 26 ++++++++++++++------------
+ pygobject.doap |   26 ++++++++++++++------------
  1 file changed, 14 insertions(+), 12 deletions(-)
 
 commit 762a36d2343bc39a502507d600fd1b9db9649dae
@@ -21963,7 +3854,7 @@ Date:   Sun Aug 14 11:13:25 2011 -0400
 
     prerelease bump
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d3f85a61ec4b1a1d04838f73dc8d862258150048
@@ -21972,8 +3863,8 @@ Date:   Sun Aug 14 10:13:37 2011 -0400
 
     get things ready for release
 
- NEWS | 194
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |  194
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 194 insertions(+)
 
 commit ffd057649380d4249c1c52e1225e3646f3994bc6
@@ -21982,7 +3873,7 @@ Date:   Sun Aug 14 05:26:18 2011 -0400
 
     pass exta keywords to the Box constructor
 
- gi/overrides/Gtk.py | 4 ++--
+ gi/overrides/Gtk.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit cadbd4142bd0045368b5123d4b0a1876bdd5d798
@@ -21991,9 +3882,9 @@ Date:   Sat Aug 13 11:03:07 2011 -0400
 
     add (Tree|List)Store set method override
 
- gi/overrides/Gtk.py     |  50 ++++++++++++++++++++++++
- tests/test_overrides.py | 102
- ++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     |   50 +++++++++++++++++++++++
+ tests/test_overrides.py |  102
+ +++++++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 149 insertions(+), 3 deletions(-)
 
 commit 9ee9b22bd95e44bd2eca26e7bf3b0a9a988700c5
@@ -22002,7 +3893,7 @@ Date:   Sat Aug 13 09:19:29 2011 -0400
 
     add test for object arrays
 
- tests/test_everything.py | 6 ++++++
+ tests/test_everything.py |    6 ++++++
  1 file changed, 6 insertions(+)
 
 commit c9d9ffd0380878792cbdb13dec4e53be897e5fbc
@@ -22017,8 +3908,8 @@ Date:   Sat Aug 13 08:46:18 2011 -0400
       prevelant
       it has been decided to only support those arrays
 
- gi/pygi-marshal-out.c | 2 +-
- tests/test_gi.py      | 8 --------
+ gi/pygi-marshal-out.c |    2 +-
+ tests/test_gi.py      |    8 --------
  2 files changed, 1 insertion(+), 9 deletions(-)
 
 commit b12379de1790b72d51883bf7b63c892639a892e7
@@ -22027,7 +3918,7 @@ Date:   Sat Aug 13 06:31:52 2011 -0400
 
     revert Gtk.Window override because it causes issues with subclasses
 
- gi/overrides/Gtk.py | 9 ---------
+ gi/overrides/Gtk.py |    9 ---------
  1 file changed, 9 deletions(-)
 
 commit 3e64a62d6d7f9e9d2820aad54187ef9c34710a1f
@@ -22036,7 +3927,7 @@ Date:   Thu Apr 7 21:05:32 2011 +1000
 
     take GIL in _pygi_invoke_closure_free (bug #647016)
 
- gi/pygi-closure.c | 3 +++
+ gi/pygi-closure.c |    3 +++
  1 file changed, 3 insertions(+)
 
 commit f8de9b8615f5dc30f492781d792aef5fc1e9ab73
@@ -22047,7 +3938,7 @@ Date:   Mon Jun 27 00:41:24 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py | 3 +++
+ gi/overrides/Gtk.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 583d0b3c6b53712128d7c2d5f075000a2a76ae5f
@@ -22062,7 +3953,7 @@ Date:   Mon Jun 27 00:40:12 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py | 3 +++
+ gi/overrides/Gtk.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 017fdfc1dd06259006719e02ffa48883cee01ffd
@@ -22076,7 +3967,7 @@ Date:   Mon Jun 27 00:39:41 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py |   40 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 40 insertions(+)
 
 commit af8bc9d5cdba48a7ee728ccb7ea9039df3ecceba
@@ -22090,7 +3981,7 @@ Date:   Mon Jun 27 00:38:30 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py | 15 ++++++++++++---
+ gi/overrides/Gtk.py |   15 ++++++++++++---
  1 file changed, 12 insertions(+), 3 deletions(-)
 
 commit 7914d814350af1a18bdeda64f049c8e9a68d1d18
@@ -22101,7 +3992,7 @@ Date:   Mon Jun 27 00:38:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py | 3 +++
+ gi/overrides/Gtk.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 5b1c875269b7979caae97e84919a690a34d92f29
@@ -22118,7 +4009,7 @@ Date:   Mon Jun 27 00:36:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gdk.py | 8 ++++++++
+ gi/overrides/Gdk.py |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 187a2932bbf1e724f759ff3ed3392fc7341c6aa8
@@ -22129,13 +4020,13 @@ Date:   Mon Aug 8 12:06:18 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625596
 
- gi/pygi-cache.c          |  39 ++++++++++++
- gi/pygi-cache.h          |   4 ++
- gi/pygi-invoke.c         | 162
- +++++++++++++++++++++++++++++++++++++++++++++--
- gi/types.py              |  12 ++--
- tests/test_everything.py |   2 +-
- tests/test_gi.py         |  58 +++++++++++++++++
+ gi/pygi-cache.c          |   39 +++++++++++
+ gi/pygi-cache.h          |    4 ++
+ gi/pygi-invoke.c         |  162
+ ++++++++++++++++++++++++++++++++++++++++++++--
+ gi/types.py              |   12 ++--
+ tests/test_everything.py |    2 +-
+ tests/test_gi.py         |   58 +++++++++++++++++
  6 files changed, 265 insertions(+), 12 deletions(-)
 
 commit e5df32ffbf37481dbb6a70c4d4e7b7b9778c5549
@@ -22144,7 +4035,7 @@ Date:   Sat Aug 13 04:13:28 2011 -0400
 
     remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN
 
- gi/pygi-info.c | 5 -----
+ gi/pygi-info.c |    5 -----
  1 file changed, 5 deletions(-)
 
 commit 745001178fc72be5626c7211366d694f41162987
@@ -22157,7 +4048,7 @@ Date:   Thu Aug 11 15:11:42 2011 +0200
     works. Also
     update the warning to explain how to fix the problem.
 
- gi/_gobject/__init__.py | 8 ++++----
+ gi/_gobject/__init__.py |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 25d2d05cba05414cd4551e0e06f6286a9b97a509
@@ -22170,9 +4061,9 @@ Date:   Fri Jul 22 15:46:31 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/importer.py |  11 +++---
- gi/module.py   | 118
- ++++++++++++++++++++++++++++-----------------------------
+ gi/importer.py |   11 +++---
+ gi/module.py   |  118
+ ++++++++++++++++++++++++++++----------------------------
  2 files changed, 64 insertions(+), 65 deletions(-)
 
 commit 698b2284e29c0f699198cf6a22eeb0e399daba6e
@@ -22183,7 +4074,7 @@ Date:   Fri Jul 22 15:45:09 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/__init__.py | 2 +-
+ gi/__init__.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7b068ebe59884ebd9aeb4425dc80cdff73a66fb1
@@ -22194,12 +4085,12 @@ Date:   Fri Jul 22 14:13:02 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- tests/test_mainloop.py   |  7 +++----
- tests/test_option.py     |  3 ++-
- tests/test_source.py     | 24 +++++++++++-------------
- tests/test_subprocess.py | 12 +++++-------
- tests/test_thread.py     | 10 ++++------
- tests/test_uris.py       |  4 ++--
+ tests/test_mainloop.py   |    7 +++----
+ tests/test_option.py     |    3 ++-
+ tests/test_source.py     |   24 +++++++++++-------------
+ tests/test_subprocess.py |   12 +++++-------
+ tests/test_thread.py     |   10 ++++------
+ tests/test_uris.py       |    4 ++--
  6 files changed, 27 insertions(+), 33 deletions(-)
 
 commit 191ef79315f8a5641699536fde58da18e23ef904
@@ -22210,8 +4101,8 @@ Date:   Fri Jul 22 14:11:53 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/importer.py |  7 +++++--
- gi/module.py   | 32 +++++++++++++++++++++++++++++---
+ gi/importer.py |    7 +++++--
+ gi/module.py   |   32 +++++++++++++++++++++++++++++---
  2 files changed, 34 insertions(+), 5 deletions(-)
 
 commit fbd4a8263260c187211799454c08b1e55e2cb998
@@ -22222,13 +4113,13 @@ Date:   Fri Jul 22 12:27:41 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/_glib/pygiochannel.c     | 38 +++++++++++++++++++-------------------
- gi/_glib/pygmaincontext.c   |  2 +-
- gi/_glib/pygmainloop.c      |  4 ++--
- gi/_glib/pygoptioncontext.c |  4 ++--
- gi/_glib/pygoptiongroup.c   |  4 ++--
- gi/_glib/pygsource.c        | 14 +++++++-------
- gi/_glib/pygspawn.c         | 14 +++++++-------
+ gi/_glib/pygiochannel.c     |   38 +++++++++++++++++++-------------------
+ gi/_glib/pygmaincontext.c   |    2 +-
+ gi/_glib/pygmainloop.c      |    4 ++--
+ gi/_glib/pygoptioncontext.c |    4 ++--
+ gi/_glib/pygoptiongroup.c   |    4 ++--
+ gi/_glib/pygsource.c        |   14 +++++++-------
+ gi/_glib/pygspawn.c         |   14 +++++++-------
  7 files changed, 40 insertions(+), 40 deletions(-)
 
 commit 7431b49a161df9178c55b814d3adff992ac2d722
@@ -22239,9 +4130,9 @@ Date:   Fri Jul 22 12:26:32 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/Makefile.am          |  2 +-
- gi/_glib/Makefile.am    | 10 +++++-----
- gi/_gobject/Makefile.am |  2 +-
+ gi/Makefile.am          |    2 +-
+ gi/_glib/Makefile.am    |   10 +++++-----
+ gi/_gobject/Makefile.am |    2 +-
  3 files changed, 7 insertions(+), 7 deletions(-)
 
 commit b8700451acd4a19b59b64fc8641fca748d2189e2
@@ -22259,22 +4150,22 @@ Date:   Fri Jul 22 11:20:09 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- tests/runtests-windows.py |   4 +-
- tests/test_gdbus.py       |  12 ++---
- tests/test_gi.py          |   4 +-
- tests/test_gobject.py     |  31 ++++++------
- tests/test_interface.py   |  16 +++---
- tests/test_mainloop.py    |   3 +-
- tests/test_overrides.py   |   8 +--
- tests/test_properties.py  | 124
- +++++++++++++++++++++++-----------------------
- tests/test_signal.py      |  98 ++++++++++++++++++------------------
- tests/test_source.py      |   5 +-
- tests/test_subprocess.py  |   3 +-
- tests/test_thread.py      |   5 +-
- tests/test_unknown.py     |   8 +--
- tests/testhelpermodule.c  |   2 +-
- tests/testmodule.py       |  10 ++--
+ tests/runtests-windows.py |    4 +-
+ tests/test_gdbus.py       |   12 ++---
+ tests/test_gi.py          |    4 +-
+ tests/test_gobject.py     |   31 ++++++------
+ tests/test_interface.py   |   16 +++---
+ tests/test_mainloop.py    |    3 +-
+ tests/test_overrides.py   |    8 +--
+ tests/test_properties.py  |  124
+ ++++++++++++++++++++++-----------------------
+ tests/test_signal.py      |   98 +++++++++++++++++------------------
+ tests/test_source.py      |    5 +-
+ tests/test_subprocess.py  |    3 +-
+ tests/test_thread.py      |    5 +-
+ tests/test_unknown.py     |    8 +--
+ tests/testhelpermodule.c  |    2 +-
+ tests/testmodule.py       |   10 ++--
  15 files changed, 169 insertions(+), 164 deletions(-)
 
 commit c980dae21468fe073cc8782608148c346bb90ad7
@@ -22285,10 +4176,10 @@ Date:   Fri Jul 22 11:16:00 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/_glib/__init__.py  |  3 ++-
- gi/_glib/glibmodule.c | 10 +++++-----
- gi/_glib/option.py    |  4 ++--
- gi/_glib/pyglib.c     | 18 +++++++++---------
+ gi/_glib/__init__.py  |    3 ++-
+ gi/_glib/glibmodule.c |   10 +++++-----
+ gi/_glib/option.py    |    4 ++--
+ gi/_glib/pyglib.c     |   18 +++++++++---------
  4 files changed, 18 insertions(+), 17 deletions(-)
 
 commit 65ac35cca8d24f4c133991e1c6ac02f49416a9a4
@@ -22304,12 +4195,12 @@ Date:   Fri Jul 22 11:10:46 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/_gobject/__init__.py       | 20 +++++++++++++-------
- gi/_gobject/constants.py      |  3 +--
- gi/_gobject/gobjectmodule.c   |  2 +-
- gi/_gobject/propertyhelper.py | 11 +++++------
- gi/_gobject/pygobject.c       | 16 ++++++++--------
- gi/_gobject/pygobject.h       |  2 +-
+ gi/_gobject/__init__.py       |   20 +++++++++++++-------
+ gi/_gobject/constants.py      |    3 +--
+ gi/_gobject/gobjectmodule.c   |    2 +-
+ gi/_gobject/propertyhelper.py |   11 +++++------
+ gi/_gobject/pygobject.c       |   16 ++++++++--------
+ gi/_gobject/pygobject.h       |    2 +-
  6 files changed, 29 insertions(+), 25 deletions(-)
 
 commit 59ed1289f76bc287443b3974710ea0da3e2cc8cc
@@ -22320,12 +4211,12 @@ Date:   Fri Jul 22 11:07:10 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/importer.py           |  2 --
- gi/module.py             | 31 ++++++++++++++++---------------
- gi/overrides/Gtk.py      |  2 +-
- gi/overrides/__init__.py |  6 +++---
- gi/pygobject-external.h  |  2 +-
- gi/types.py              | 12 ++++++------
+ gi/importer.py           |    2 --
+ gi/module.py             |   31 ++++++++++++++++---------------
+ gi/overrides/Gtk.py      |    2 +-
+ gi/overrides/__init__.py |    6 +++---
+ gi/pygobject-external.h  |    2 +-
+ gi/types.py              |   12 ++++++------
  6 files changed, 27 insertions(+), 28 deletions(-)
 
 commit 6b9d738d78c6ac45d49f00402c89356887555069
@@ -22340,57 +4231,107 @@ Date:   Fri Jul 22 11:02:49 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- Makefile.am                                  |  2 +-
- configure.ac                                 |  6 +++---
- gi/Makefile.am                               |  8 +++++---
- {glib => gi/_glib}/Makefile.am               |  5 +----
- {glib => gi/_glib}/__init__.py               |  0
- {glib => gi/_glib}/glibmodule.c              |  0
- {glib => gi/_glib}/option.py                 |  0
- {glib => gi/_glib}/pygiochannel.c            |  0
- {glib => gi/_glib}/pygiochannel.h            |  0
- {glib => gi/_glib}/pyglib-private.h          |  0
- {glib => gi/_glib}/pyglib-python-compat.h    |  0
- {glib => gi/_glib}/pyglib.c                  |  0
- {glib => gi/_glib}/pyglib.h                  |  0
- {glib => gi/_glib}/pygmaincontext.c          |  0
- {glib => gi/_glib}/pygmaincontext.h          |  0
- {glib => gi/_glib}/pygmainloop.c             |  0
- {glib => gi/_glib}/pygmainloop.h             |  0
- {glib => gi/_glib}/pygoptioncontext.c        |  0
- {glib => gi/_glib}/pygoptioncontext.h        |  0
- {glib => gi/_glib}/pygoptiongroup.c          |  0
- {glib => gi/_glib}/pygoptiongroup.h          |  0
- {glib => gi/_glib}/pygsource.c               |  0
- {glib => gi/_glib}/pygsource.h               |  0
- {glib => gi/_glib}/pygspawn.c                |  0
- {glib => gi/_glib}/pygspawn.h                |  0
- {gobject => gi/_gobject}/Makefile.am         | 10 ++++------
- {gobject => gi/_gobject}/__init__.py         |  0
- {gobject => gi/_gobject}/constants.py        |  0
- {gobject => gi/_gobject}/ffi-marshaller.c    |  0
- {gobject => gi/_gobject}/ffi-marshaller.h    |  0
- {gobject => gi/_gobject}/gobjectmodule.c     |  0
- {gobject => gi/_gobject}/propertyhelper.py   |  0
- {gobject => gi/_gobject}/pygboxed.c          |  0
- {gobject => gi/_gobject}/pygboxed.h          |  0
- {gobject => gi/_gobject}/pygenum.c           |  0
- {gobject => gi/_gobject}/pygenum.h           |  0
- {gobject => gi/_gobject}/pygflags.c          |  0
- {gobject => gi/_gobject}/pygflags.h          |  0
- {gobject => gi/_gobject}/pyginterface.c      |  0
- {gobject => gi/_gobject}/pyginterface.h      |  0
- {gobject => gi/_gobject}/pygobject-private.h |  0
- {gobject => gi/_gobject}/pygobject.c         |  0
- {gobject => gi/_gobject}/pygobject.h         |  0
- {gobject => gi/_gobject}/pygparamspec.c      |  0
- {gobject => gi/_gobject}/pygparamspec.h      |  0
- {gobject => gi/_gobject}/pygpointer.c        |  0
- {gobject => gi/_gobject}/pygpointer.h        |  0
- {gobject => gi/_gobject}/pygtype.c           |  0
- {gobject => gi/_gobject}/pygtype.h           |  0
- tests/Makefile.am                            |  2 +-
- 50 files changed, 15 insertions(+), 18 deletions(-)
+ Makefile.am                     |    2 +-
+ configure.ac                    |    6 +-
+ gi/Makefile.am                  |    8 +-
+ gi/_glib/Makefile.am            |   58 +
+ gi/_glib/__init__.py            |   25 +
+ gi/_glib/glibmodule.c           |  969 ++++++++++++++
+ gi/_glib/option.py              |  358 ++++++
+ gi/_glib/pygiochannel.c         |  764 ++++++++++++
+ gi/_glib/pygiochannel.h         |   29 +
+ gi/_glib/pyglib-private.h       |   49 +
+ gi/_glib/pyglib-python-compat.h |  245 ++++
+ gi/_glib/pyglib.c               |  633 ++++++++++
+ gi/_glib/pyglib.h               |   83 ++
+ gi/_glib/pygmaincontext.c       |  126 ++
+ gi/_glib/pygmaincontext.h       |   40 +
+ gi/_glib/pygmainloop.c          |  360 ++++++
+ gi/_glib/pygmainloop.h          |   36 +
+ gi/_glib/pygoptioncontext.c     |  337 +++++
+ gi/_glib/pygoptioncontext.h     |   39 +
+ gi/_glib/pygoptiongroup.c       |  298 +++++
+ gi/_glib/pygoptiongroup.h       |   42 +
+ gi/_glib/pygsource.c            |  725 +++++++++++
+ gi/_glib/pygsource.h            |   39 +
+ gi/_glib/pygspawn.c             |  264 ++++
+ gi/_glib/pygspawn.h             |   32 +
+ gi/_gobject/Makefile.am         |   71 ++
+ gi/_gobject/__init__.py         |  117 ++
+ gi/_gobject/constants.py        |   83 ++
+ gi/_gobject/ffi-marshaller.c    |  194 +++
+ gi/_gobject/ffi-marshaller.h    |   31 +
+ gi/_gobject/gobjectmodule.c     | 2638
+ +++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/propertyhelper.py   |  312 +++++
+ gi/_gobject/pygboxed.c          |  234 ++++
+ gi/_gobject/pygboxed.h          |   27 +
+ gi/_gobject/pygenum.c           |  366 ++++++
+ gi/_gobject/pygenum.h           |   27 +
+ gi/_gobject/pygflags.c          |  485 +++++++
+ gi/_gobject/pygflags.h          |   27 +
+ gi/_gobject/pyginterface.c      |  122 ++
+ gi/_gobject/pyginterface.h      |   40 +
+ gi/_gobject/pygobject-private.h |  241 ++++
+ gi/_gobject/pygobject.c         | 2397
+ +++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.h         |  667 ++++++++++
+ gi/_gobject/pygparamspec.c      |  404 ++++++
+ gi/_gobject/pygparamspec.h      |   31 +
+ gi/_gobject/pygpointer.c        |  198 +++
+ gi/_gobject/pygpointer.h        |   27 +
+ gi/_gobject/pygtype.c           | 1844 +++++++++++++++++++++++++++
+ gi/_gobject/pygtype.h           |   28 +
+ glib/Makefile.am                |   61 -
+ glib/__init__.py                |   25 -
+ glib/glibmodule.c               |  969 --------------
+ glib/option.py                  |  358 ------
+ glib/pygiochannel.c             |  764 ------------
+ glib/pygiochannel.h             |   29 -
+ glib/pyglib-private.h           |   49 -
+ glib/pyglib-python-compat.h     |  245 ----
+ glib/pyglib.c                   |  633 ----------
+ glib/pyglib.h                   |   83 --
+ glib/pygmaincontext.c           |  126 --
+ glib/pygmaincontext.h           |   40 -
+ glib/pygmainloop.c              |  360 ------
+ glib/pygmainloop.h              |   36 -
+ glib/pygoptioncontext.c         |  337 -----
+ glib/pygoptioncontext.h         |   39 -
+ glib/pygoptiongroup.c           |  298 -----
+ glib/pygoptiongroup.h           |   42 -
+ glib/pygsource.c                |  725 -----------
+ glib/pygsource.h                |   39 -
+ glib/pygspawn.c                 |  264 ----
+ glib/pygspawn.h                 |   32 -
+ gobject/Makefile.am             |   73 --
+ gobject/__init__.py             |  117 --
+ gobject/constants.py            |   83 --
+ gobject/ffi-marshaller.c        |  194 ---
+ gobject/ffi-marshaller.h        |   31 -
+ gobject/gobjectmodule.c         | 2638
+ ---------------------------------------
+ gobject/propertyhelper.py       |  312 -----
+ gobject/pygboxed.c              |  234 ----
+ gobject/pygboxed.h              |   27 -
+ gobject/pygenum.c               |  366 ------
+ gobject/pygenum.h               |   27 -
+ gobject/pygflags.c              |  485 -------
+ gobject/pygflags.h              |   27 -
+ gobject/pyginterface.c          |  122 --
+ gobject/pyginterface.h          |   40 -
+ gobject/pygobject-private.h     |  241 ----
+ gobject/pygobject.c             | 2397
+ -----------------------------------
+ gobject/pygobject.h             |  667 ----------
+ gobject/pygparamspec.c          |  404 ------
+ gobject/pygparamspec.h          |   31 -
+ gobject/pygpointer.c            |  198 ---
+ gobject/pygpointer.h            |   27 -
+ gobject/pygtype.c               | 1844 ---------------------------
+ gobject/pygtype.h               |   28 -
+ tests/Makefile.am               |    2 +-
+ 96 files changed, 16172 insertions(+), 16175 deletions(-)
 
 commit f0d2ddcf7e61c36f79a9adf8ccc53bf3db9349d3
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -22400,9 +4341,9 @@ Date:   Mon Jul 18 18:46:31 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- Makefile.am |  5 ----
- pygtk.py    | 95
- -------------------------------------------------------------
+ Makefile.am |    5 ----
+ pygtk.py    |   95
+ -----------------------------------------------------------
  2 files changed, 100 deletions(-)
 
 commit 75e9f7d80d9224c05e6063b88479f1baee48c489
@@ -22413,11 +4354,11 @@ Date:   Mon Jul 18 18:41:41 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- Makefile.am         |  8 +-------
- configure.ac        | 43 +++++++++++++++++--------------------------
- gi/pygi.h           | 37 -------------------------------------
- gobject/Makefile.am |  5 +----
- tests/Makefile.am   |  7 +------
+ Makefile.am         |    8 +-------
+ configure.ac        |   43 +++++++++++++++++--------------------------
+ gi/pygi.h           |   37 -------------------------------------
+ gobject/Makefile.am |    5 +----
+ tests/Makefile.am   |    7 +------
  5 files changed, 20 insertions(+), 80 deletions(-)
 
 commit d862168d6a82edd59547d39f5b0ab8279b1e511c
@@ -22428,12 +4369,13 @@ Date:   Mon Jul 18 18:28:50 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- Makefile.am                                                        | 2 +-
- configure.ac                                                       |
- 4 ++--
- pygobject-2.0-uninstalled.pc.in => pygobject-3.0-uninstalled.pc.in | 0
- pygobject-2.0.pc.in => pygobject-3.0.pc.in                         | 0
- 4 files changed, 3 insertions(+), 3 deletions(-)
+ Makefile.am                     |    2 +-
+ configure.ac                    |    4 ++--
+ pygobject-2.0-uninstalled.pc.in |   18 ------------------
+ pygobject-2.0.pc.in             |   22 ----------------------
+ pygobject-3.0-uninstalled.pc.in |   18 ++++++++++++++++++
+ pygobject-3.0.pc.in             |   22 ++++++++++++++++++++++
+ 6 files changed, 43 insertions(+), 43 deletions(-)
 
 commit 5189b360ccddbbaee267ce857968fbf1aafdd07a
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -22444,7 +4386,7 @@ Date:   Thu Aug 11 09:53:15 2011 +0200
     Callbacks still use GIArgument, add missing GVariant support for
     return types.
 
- gi/pygi-argument.c | 6 ++++--
+ gi/pygi-argument.c |    6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 18a240cc492d2e5ebe2709a0d7155e27c8ff9e63
@@ -22457,7 +4399,7 @@ Date:   Wed Aug 10 14:11:10 2011 +0200
     is the
     equivalent of what commit 9d5604220bd56 did for pygi_marshall_*().
 
- gi/pygi-argument.c | 7 +++++++
+ gi/pygi-argument.c |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit aa820d6ce2fee83e61e3e9de7c6b7d2452e2847d
@@ -22467,7 +4409,7 @@ Date:   Mon Aug 8 01:58:10 2011 +0200
     [gi] Fix crash: check return value of
     _invoke_state_init_from_callable_cache() before continuing.
 
- gi/pygi-invoke.c | 4 +++-
+ gi/pygi-invoke.c |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit eaad9f3c71cedfe28ff2d2bb05ea6c64e323715f
@@ -22477,8 +4419,8 @@ Date:   Fri Aug 5 21:03:33 2011 +0200
     [gi] Pass gtype as first parameter to vfuncs (instead of using
     kwargs).
 
- gi/pygi-invoke.c | 32 ++++++++++++++++++--------------
- gi/types.py      |  2 +-
+ gi/pygi-invoke.c |   32 ++++++++++++++++++--------------
+ gi/types.py      |    2 +-
  2 files changed, 19 insertions(+), 15 deletions(-)
 
 commit 76edfd0d5776f61c92c84fd9fb8dcc246c580e93
@@ -22524,10 +4466,10 @@ Date:   Mon Jul 18 11:04:58 2011 -0400
     remove some left over ifdefs to complete merge of the invoke-rewrite
     branch
 
- gi/pygi-cache.h   | 2 --
- gi/pygi-info.c    | 2 --
- gi/pygi-private.h | 5 +----
- gi/pygi.h         | 2 --
+ gi/pygi-cache.h   |    2 --
+ gi/pygi-info.c    |    2 --
+ gi/pygi-private.h |    5 +----
+ gi/pygi.h         |    2 --
  4 files changed, 1 insertion(+), 10 deletions(-)
 
 commit 8c653ec3033fab47c4bb4071b5732a349357141f
@@ -22536,9 +4478,12 @@ Date:   Mon Jul 18 10:59:45 2011 -0400
 
     rename pygi-invoke-ng to pygi-invoke
 
- gi/Makefile.am                         | 3 ++-
- gi/{pygi-invoke-ng.c => pygi-invoke.c} | 0
- 2 files changed, 2 insertions(+), 1 deletion(-)
+ gi/Makefile.am      |    3 +-
+ gi/pygi-invoke-ng.c |  464
+ ---------------------------------------------------
+ gi/pygi-invoke.c    |  464
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 466 insertions(+), 465 deletions(-)
 
 commit 62d59fa2c2b31d7a3cac8996d58234d4b13bb19f
 Author: John (J5) Palmieri <johnp@redhat.com>
@@ -22553,14 +4498,14 @@ Date:   Mon Jul 18 10:56:36 2011 -0400
  3 files changed, 1 insertion(+), 1050 deletions(-)
 
 commit 2937cfe5bb7122dd3783c7919294d6a34a3dfc05
-Merge: 519e556d 917ea2df
+Merge: 519e556 917ea2d
 Author: John (J5) Palmieri <johnp@redhat.com>
 Date:   Mon Jul 18 10:45:18 2011 -0400
 
     Merge branch 'master' into invoke-rewrite
 
 commit 519e556dc1e5874e1668bad93043fb9258c7ee79
-Merge: bab7e882 38cca3c1
+Merge: bab7e88 38cca3c
 Author: John (J5) Palmieri <johnp@redhat.com>
 Date:   Mon Jul 18 10:37:20 2011 -0400
 
@@ -22574,15 +4519,16 @@ Date:   Mon Jul 18 10:35:10 2011 -0400
 
     * update copy and paste copyright info to list the correct owner
 
- gi/Makefile.am                           |   6 +-
- gi/pygi-cache.c                          |   3 +-
- gi/{pygi-marshal.c => pygi-marshal-in.c} | 739
- +----------------------------
- gi/{pygi-marshal.h => pygi-marshal-in.h} | 117 -----
- gi/pygi-marshal-out.c                    | 767
- +++++++++++++++++++++++++++++++
- gi/pygi-marshal-out.h                    | 144 ++++++
- 6 files changed, 920 insertions(+), 856 deletions(-)
+ gi/Makefile.am        |    6 +-
+ gi/pygi-cache.c       |    3 +-
+ gi/pygi-marshal-in.c  | 1412 ++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-in.h  |  186 +++++
+ gi/pygi-marshal-out.c |  767 ++++++++++++++++++
+ gi/pygi-marshal-out.h |  144 ++++
+ gi/pygi-marshal.c     | 2145
+ -------------------------------------------------
+ gi/pygi-marshal.h     |  303 -------
+ 8 files changed, 2515 insertions(+), 2451 deletions(-)
 
 commit 917ea2dfa2d097e563233145003a66b3e4423287
 Author: Martin Pitt <martin.pitt@ubuntu.com>
@@ -22590,7 +4536,7 @@ Date:   Thu Jul 14 11:21:10 2011 +0200
 
     Ship tests/te_ST@nouppera in release tarballs for tests to succeed
 
- tests/Makefile.am | 1 +
+ tests/Makefile.am |    1 +
  1 file changed, 1 insertion(+)
 
 commit e024e832ab9c82d3e299cc6e1cb427de44f2d16e
@@ -22599,8 +4545,8 @@ Date:   Wed Jul 13 15:43:02 2011 -0400
 
     [invoke] break out caller_allocates allocating into its own function
 
- gi/pygi-invoke-ng.c | 78
- +++++++++++++++++++++++++++++++++--------------------
+ gi/pygi-invoke-ng.c |   78
+ ++++++++++++++++++++++++++++++++-------------------
  1 file changed, 49 insertions(+), 29 deletions(-)
 
 commit fc8b8ce768ac780f7ed9edc63b70dd35194153c0
@@ -22609,7 +4555,7 @@ Date:   Wed Jul 13 15:42:26 2011 -0400
 
     [invoke] missed a bit when removing constructor_class usage
 
- gi/pygi-invoke-ng.c | 2 +-
+ gi/pygi-invoke-ng.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c94bcf4ae7e36f90c356c89712b00609f9f849bd
@@ -22618,8 +4564,8 @@ Date:   Wed Jul 13 15:16:17 2011 -0400
 
     [invoke] don't hold on to the constructor class, just add a TODO
 
- gi/pygi-invoke-ng.c           | 11 +++++------
- gi/pygi-invoke-state-struct.h |  1 -
+ gi/pygi-invoke-ng.c           |   11 +++++------
+ gi/pygi-invoke-state-struct.h |    1 -
  2 files changed, 5 insertions(+), 7 deletions(-)
 
 commit c11d3195f324ea41e86e3da7ff99b55425c2faec
@@ -22634,7 +4580,7 @@ Date:   Wed Jul 13 10:40:25 2011 +0200
     completely with
     Python 3. Rewrite it to use gi.repository.Gio.
 
- tests/test_properties.py | 38 +++++++++++++++++++-------------------
+ tests/test_properties.py |   38 +++++++++++++++++++-------------------
  1 file changed, 19 insertions(+), 19 deletions(-)
 
 commit 8f89ff24fcac627ce15ca93038711fded1a7c5ed
@@ -22647,7 +4593,7 @@ Date:   Wed Jul 13 08:42:22 2011 +0200
     str method.
     This unbreaks gi/module.py for Python 3 again.
 
- gi/module.py | 8 ++++++--
+ gi/module.py |    8 ++++++--
  1 file changed, 6 insertions(+), 2 deletions(-)
 
 commit 20aea4b052126fa0bface3e6e0dccfd77f9505b1
@@ -22656,8 +4602,8 @@ Date:   Fri Jul 8 14:39:22 2011 -0400
 
     [caching] remove all inline compiler flags
 
- gi/pygi-cache.c | 96
- ++++++++++++++++++++++++++++-----------------------------
+ gi/pygi-cache.c |   96
+ +++++++++++++++++++++++++++----------------------------
  1 file changed, 48 insertions(+), 48 deletions(-)
 
 commit bf7bb79b66ad406063fb443e7452d830c55986ef
@@ -22666,8 +4612,8 @@ Date:   Fri Jul 8 14:35:20 2011 -0400
 
     [caching] refactor function names to be less confusing
 
- gi/pygi-cache.c | 307
- +++++++++++++++++++++++++++-----------------------------
+ gi/pygi-cache.c |  307
+ +++++++++++++++++++++++++++----------------------------
  1 file changed, 150 insertions(+), 157 deletions(-)
 
 commit c167a9345b01c070bd5a84b4a4b3a53baf9e217d
@@ -22688,7 +4634,7 @@ Date:   Fri Jul 8 11:24:09 2011 -0400
     NO_SEPARATOR
       flag
 
- gi/overrides/Gtk.py | 13 ++++++++-----
+ gi/overrides/Gtk.py |   13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)
 
 commit 367e4ededd4a45125157050bcc9e4e685fd4a82d
@@ -22701,7 +4647,7 @@ Date:   Fri Jul 8 10:15:53 2011 +0200
     loop was
     never quit when the call failed.
 
- tests/test_gdbus.py | 6 ++++--
+ tests/test_gdbus.py |    6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 11b578400cbf9f7c270b662a5e8953ccd466e5ef
@@ -22710,10 +4656,10 @@ Date:   Thu Jul 7 19:30:11 2011 -0400
 
     use an enum instead of booleans to denote function type
 
- gi/pygi-cache.c     | 85
- ++++++++++++++++++++++++++++++-----------------------
- gi/pygi-cache.h     | 18 +++++++++---
- gi/pygi-invoke-ng.c |  8 ++---
+ gi/pygi-cache.c     |   85
+ +++++++++++++++++++++++++++++----------------------
+ gi/pygi-cache.h     |   18 ++++++++---
+ gi/pygi-invoke-ng.c |    8 ++---
  3 files changed, 67 insertions(+), 44 deletions(-)
 
 commit 10e31005baec26f61c0f8fca2b5c0337b0be6c70
@@ -22722,11 +4668,11 @@ Date:   Thu Jul 7 15:18:03 2011 -0400
 
     rename aux arguments to child arguments to make their purpose clearer
 
- gi/pygi-cache.c     | 64
- ++++++++++++++++++++++++++---------------------------
- gi/pygi-cache.h     | 29 ++++++++++++++++--------
- gi/pygi-invoke-ng.c | 10 ++++-----
- gi/pygi-marshal.c   | 12 +++++-----
+ gi/pygi-cache.c     |   64
+ +++++++++++++++++++++++++--------------------------
+ gi/pygi-cache.h     |   29 +++++++++++++++--------
+ gi/pygi-invoke-ng.c |   10 ++++----
+ gi/pygi-marshal.c   |   12 +++++-----
  4 files changed, 63 insertions(+), 52 deletions(-)
 
 commit b4ad91c40f713ebdc278ce40b011e4adf9ddbbd7
@@ -22737,7 +4683,7 @@ Date:   Thu Jul 7 10:59:08 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653844
 
- examples/cairo-demo.py | 6 ++----
+ examples/cairo-demo.py |    6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit a606bab1ddc605167f2e9dc7c46c8f929fdce23b
@@ -22748,8 +4694,8 @@ Date:   Tue Jul 5 14:28:20 2011 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654056
 
- gi/overrides/Gtk.py     |  8 ++++++++
- tests/test_overrides.py | 13 ++++++++++++-
+ gi/overrides/Gtk.py     |    8 ++++++++
+ tests/test_overrides.py |   13 ++++++++++++-
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit fc5c869486c7f6929e285ea7a86623ec41ecd9bd
@@ -22782,8 +4728,8 @@ Date:   Thu Jul 7 13:39:19 2011 +0200
     iter = buffer.get_start_iter()
     end = buffer.get_end_iter()
     ret = iter.forward_search("foo",
-                              Gtk.TextSearchFlags.VISIBLE_ONLY,
-                                                        end)
+                             Gtk.TextSearchFlags.VISIBLE_ONLY,
+                                                   end)
     print "this is my return value"
     print ret
     print "now I crash"
@@ -22792,124 +4738,124 @@ Date:   Thu Jul 7 13:39:19 2011 +0200
     Gtk.main()
     -------------- 8< -----------------
 
- gi/overrides/Gtk.py | 10 ++++++++--
+ gi/overrides/Gtk.py |  10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit 5c04fc5b2ca7e262c052426d5863d69d0c4a24da
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 5 15:57:23 2011 -0400
+Date:  Tue Jul 5 15:57:23 2011 -0400
 
     use gssize instead of int for arg indexes
 
- gi/pygi-cache.c           | 24 ++++++++++++------------
- gi/pygi-cache.h           |  6 +++---
- gi/pygi-invoke-ng.c       |  6 +++---
- gi/pygi-marshal-cleanup.c |  6 +++---
+ gi/pygi-cache.c          |   24 ++++++++++++------------
+ gi/pygi-cache.h          |    6 +++---
+ gi/pygi-invoke-ng.c      |    6 +++---
+ gi/pygi-marshal-cleanup.c |   6 +++---
  4 files changed, 21 insertions(+), 21 deletions(-)
 
 commit ecc09749c34cd4eabf47cc722d768b042dc0be9f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 5 14:17:30 2011 -0400
+Date:  Tue Jul 5 14:17:30 2011 -0400
 
     [cache] remove refrence to default value as it is not implemented yet
 
- gi/pygi-cache.h | 1 -
+ gi/pygi-cache.h |    1 -
  1 file changed, 1 deletion(-)
 
 commit 433e0fb259047d8c81e5949a31abb5e0feefd27b
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Thu May 12 18:53:06 2011 +0200
+Date:  Thu May 12 18:53:06 2011 +0200
 
     Handle arguments that are flags correctly
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647581
 
- gi/pygi-argument.c | 2 ++
+ gi/pygi-argument.c |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 38cca3c14e79fbc383e3fc65a120bee03714b99f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jul 1 05:19:15 2011 -0400
+Date:  Fri Jul 1 05:19:15 2011 -0400
 
     correctly initialize the _gi_cairo_functions array to be zero filled
 
- gi/pygi-foreign-cairo.c | 2 +-
+ gi/pygi-foreign-cairo.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9ae43fdbcc547eb1e3c61bf9545da40555b2e2c6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jul 1 05:19:15 2011 -0400
+Date:  Fri Jul 1 05:19:15 2011 -0400
 
     correctly initialize the _gi_cairo_functions array to be zero filled
 
- gi/pygi-foreign-cairo.c | 2 +-
+ gi/pygi-foreign-cairo.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d3ee40b36b1718e6fb4544dbe07e291138ea1eb9
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 29 18:14:40 2011 -0400
+Date:  Wed Jun 29 18:14:40 2011 -0400
 
     pass in the address of the gerror, not the gerror itself
 
- gi/pygi-argument.c | 2 +-
+ gi/pygi-argument.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 49dc98eb9339ea64355cd752ca000c79da56f3a2
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 29 18:01:44 2011 -0400
+Date:  Wed Jun 29 18:01:44 2011 -0400
 
     [gi] handle marshalling gerrors arguments for signals
 
- gi/pygi-argument.c | 18 ++++++++++++++++--
+ gi/pygi-argument.c |  18 ++++++++++++++++--
  1 file changed, 16 insertions(+), 2 deletions(-)
 
 commit db9419fcef628e9ffee10591156007ea9c0bc1f0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 29 12:12:29 2011 -0400
+Date:  Wed Jun 29 12:12:29 2011 -0400
 
     [gi-invoke-ng] fix NULL check to check before we access the cache
     struct
 
- gi/pygi-cache.c | 6 +++---
+ gi/pygi-cache.c |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 9027e1a20fd06df5c26edcec1893ef0814ec938a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 28 18:21:55 2011 -0400
+Date:  Tue Jun 28 18:21:55 2011 -0400
 
     [gi-tests] add test for PyGObject->PyObject TreeModel storage
 
       * make sure we can store a custom GObject as a PyObject inside of
       a TreeModel
 
- tests/test_overrides.py | 26 +++++++++++++++-----------
+ tests/test_overrides.py |   26 +++++++++++++++-----------
  1 file changed, 15 insertions(+), 11 deletions(-)
 
 commit b6842e4b2a28733e143d4022864041ca82e91f7a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 28 18:13:38 2011 -0400
+Date:  Tue Jun 28 18:13:38 2011 -0400
 
     [gtk-overrides] special case TreeModel columns of PYGOBJECT types
 
      * box the PYGOBJECT in a GValue so we can store PyGObjects in a
      TreeModel row
 
- gi/overrides/Gtk.py | 7 ++++---
- gobject/pygtype.c   | 7 ++++---
+ gi/overrides/Gtk.py |   7 ++++---
+ gobject/pygtype.c   |   7 ++++---
  2 files changed, 8 insertions(+), 6 deletions(-)
 
 commit 7fc9d45860210fd9d333fd3769c6cf93a6a20eb6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 28 17:32:29 2011 -0400
+Date:  Tue Jun 28 17:32:29 2011 -0400
 
     [gi-invoke-ng] copy structs when transfer is full for array
 
- gi/pygi-marshal.c | 21 ++++++++++++++++++---
+ gi/pygi-marshal.c |   21 ++++++++++++++++++---
  1 file changed, 18 insertions(+), 3 deletions(-)
 
 commit 8d60c0bc7b327aa757a8727f1146f02cc0b78af8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 28 13:54:48 2011 -0400
+Date:  Tue Jun 28 13:54:48 2011 -0400
 
     [gtk-override] print warning if user imports Gtk 2.0
 
@@ -22917,12 +4863,12 @@ Date:   Tue Jun 28 13:54:48 2011 -0400
      importing 2.0
        which is not supported
 
- gi/overrides/Gtk.py | 12 ++++++++++++
+ gi/overrides/Gtk.py |  12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 7c589c0c1de1a786e00685afd5292b6fb1f93ed3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 28 13:08:49 2011 -0400
+Date:  Tue Jun 28 13:08:49 2011 -0400
 
     [gtk-overrides] allow the message_type keyword to be used for
     MessageDialogs
@@ -22943,86 +4889,86 @@ Date:   Tue Jun 28 13:08:49 2011 -0400
        dict
        to avoid name clashing
 
- gi/overrides/Gtk.py | 5 +++++
+ gi/overrides/Gtk.py |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 2aa12267bee91aa696633a0cea2a0accae09250a
 Author: Johan Dahlin <jdahlin@litl.com>
-Date:   Mon Jun 27 10:56:20 2011 -0300
+Date:  Mon Jun 27 10:56:20 2011 -0300
 
     Add support for enums in gobject.property
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653488
 
- gobject/propertyhelper.py | 23 ++++++++++++++++-------
- tests/test_properties.py  | 40 ++++++++++++++++++++++++++++++++++++----
+ gobject/propertyhelper.py |   23 ++++++++++++++++-------
+ tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
  2 files changed, 52 insertions(+), 11 deletions(-)
 
 commit dc62e67b447ef526a6f2d1aa8648ad101d95024b
 Author: Johan Dahlin <jdahlin@litl.com>
-Date:   Mon Jun 27 10:56:20 2011 -0300
+Date:  Mon Jun 27 10:56:20 2011 -0300
 
     Add support for enums in gobject.property
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653488
 
- gobject/propertyhelper.py | 23 ++++++++++++++++-------
- tests/test_properties.py  | 40 ++++++++++++++++++++++++++++++++++++----
+ gobject/propertyhelper.py |   23 ++++++++++++++++-------
+ tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
  2 files changed, 52 insertions(+), 11 deletions(-)
 
 commit 50cfccb5801c1b9a0a42ffe2826cd245f21fd88d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 24 14:17:24 2011 -0400
+Date:  Fri Jun 24 14:17:24 2011 -0400
 
     [gi-invoke-ng] use g_slice for allocating GValues that are caller
     allocated
 
- gi/pygi-invoke-ng.c       | 2 ++
- gi/pygi-marshal-cleanup.c | 2 ++
+ gi/pygi-invoke-ng.c      |    2 ++
+ gi/pygi-marshal-cleanup.c |   2 ++
  2 files changed, 4 insertions(+)
 
 commit eff65cd2ce490296865441c3c78b7846f380459c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 24 11:49:05 2011 -0400
+Date:  Fri Jun 24 11:49:05 2011 -0400
 
     [gi-invoke-ng] Convert Overflow errors to ValueErrors when marshalling
     integers
 
- gi/pygi-marshal.c | 56
- +++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-marshal.c |   56
+ +++++++++++++++++++++++++++++++++++++++++------------
  1 file changed, 44 insertions(+), 12 deletions(-)
 
 commit 05ed688d54e3ff04e961b60d0b5d3ed0b97c771d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 22 12:26:39 2011 -0400
+Date:  Wed Jun 22 12:26:39 2011 -0400
 
     [gi-invoke-ng] only cache caller allocates for interfaces as some
     API are broken
 
- gi/pygi-cache.c | 6 ++++--
+ gi/pygi-cache.c |    6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 4fd957a5de364c0588168dee15e1e61d4f12e173
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 17 17:07:56 2011 -0400
+Date:  Fri Jun 17 17:07:56 2011 -0400
 
     [gi-invoke-ng] handle in pointer array marshalling
 
- gi/pygi-marshal.c | 28 ++++++++++++++++++++++------
+ gi/pygi-marshal.c |   28 ++++++++++++++++++++++------
  1 file changed, 22 insertions(+), 6 deletions(-)
 
 commit df3911ad2ce83af9bf9679ed1b221847b23ba2de
 Author: Alex Eftimie <alex@eftimie.ro>
-Date:   Fri Jun 10 08:44:04 2011 +0300
+Date:  Fri Jun 10 08:44:04 2011 +0300
 
     Adding GPtrArray tests
 
- tests/test_gi.py | 43 ++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gi.py |   43 ++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 42 insertions(+), 1 deletion(-)
 
 commit e32c2be53175014399d89e1e85c9afc6e53c94be
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 17 11:32:28 2011 -0400
+Date:  Fri Jun 17 11:32:28 2011 -0400
 
     [gi-invoke-ng] fix array element offset calculations
 
@@ -23030,193 +4976,193 @@ Date:   Fri Jun 17 11:32:28 2011 -0400
       relying on the size of GIArgument
     * special case GPtrArrays
 
- gi/pygi-marshal.c | 27 +++++++++------------------
+ gi/pygi-marshal.c |   27 +++++++++------------------
  1 file changed, 9 insertions(+), 18 deletions(-)
 
 commit 6e8dc28cb261cafbfed40fc0797a0dd5f91f497b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 15 12:46:03 2011 -0400
+Date:  Wed Jun 15 12:46:03 2011 -0400
 
     [gi] don't clean up arguments that weren't yet processed during in
     arg failure
 
- gi/pygi-marshal-cleanup.c | 2 +-
+ gi/pygi-marshal-cleanup.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit af7c93ea98b7f492eef265e58c8b3c878805524f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 15 12:06:47 2011 -0400
+Date:  Wed Jun 15 12:06:47 2011 -0400
 
     [gi-overrides] use new instead of init when constructing a
     GLib.VariantBuilder
 
     * init is now skipped in the gir
 
- gi/overrides/GLib.py    | 18 ++++++++----------
- tests/test_overrides.py |  6 ++----
+ gi/overrides/GLib.py   |   18 ++++++++----------
+ tests/test_overrides.py |    6 ++----
  2 files changed, 10 insertions(+), 14 deletions(-)
 
 commit c6112307f29f9a850e6e9efa5f55d5d4a363c6b0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 15 11:42:45 2011 -0400
+Date:  Wed Jun 15 11:42:45 2011 -0400
 
     [gi-invoke-ng] actual code to import overrides
 
- gi/pygi-cache.c | 7 +------
+ gi/pygi-cache.c |    7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit 902575d857beffb14e56821ea8a52f705385f6bb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 15 11:25:10 2011 -0400
+Date:  Wed Jun 15 11:25:10 2011 -0400
 
     [gi-invoke-ng] import pytypes so we get overrides
 
- gi/pygi-marshal.c | 4 +++-
+ gi/pygi-marshal.c |   4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit 9d5604220bd56ae2708e9b74122c14208e0a30b4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 14 16:13:37 2011 -0400
+Date:  Tue Jun 14 16:13:37 2011 -0400
 
     [gi-invoke-ng] handle gvariants now that they are not foreign
 
- gi/pygi-marshal.c | 7 ++++++-
+ gi/pygi-marshal.c |   7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit c1f5651062687e800a52b5d8d16c88c0acde2934
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 14 16:12:43 2011 -0400
+Date:  Tue Jun 14 16:12:43 2011 -0400
 
     [gi-invoke-ng] do not try to clean up NULL arguments
 
- gi/pygi-marshal-cleanup.c | 24 ++++++++++++++++--------
+ gi/pygi-marshal-cleanup.c |   24 ++++++++++++++++--------
  1 file changed, 16 insertions(+), 8 deletions(-)
 
 commit fbf5382fbc1aed49ed491d2255d616a1643a45fc
-Merge: 499b68d6 1491f622
+Merge: 499b68d 1491f62
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 13 17:28:23 2011 -0400
+Date:  Mon Jun 13 17:28:23 2011 -0400
 
     Merge branch 'master' into invoke-rewrite
 
 commit 499b68d6c9040cffc6e43dc87789d68446564a92
-Merge: 4c9bcedb 426c7109
+Merge: 4c9bced 426c710
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 13 17:26:37 2011 -0400
+Date:  Mon Jun 13 17:26:37 2011 -0400
 
     Merge branch 'master' into invoke-rewrite
 
 commit 1491f6225b9906bd369b5a42e6369ab6884736b7
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jun 10 14:01:32 2011 +0200
+Date:  Fri Jun 10 14:01:32 2011 +0200
 
     closure: avoid double free crash
 
- gi/pygi-closure.c | 12 ++++--------
+ gi/pygi-closure.c |   12 ++++--------
  1 file changed, 4 insertions(+), 8 deletions(-)
 
 commit 929f4236f2b8601e7960a4a7b0a860d976ad83c6
 Author: Jason Siefken <siefkenj@gmail.com>
-Date:   Fri Jun 3 23:11:17 2011 -0700
+Date:  Fri Jun 3 23:11:17 2011 -0700
 
     Added __eq__ method for Gdk.Color and Gdk.RGBA
 
     Call Gdk.Color.equal and Gdk.RGBA.equal when
     == equality testing is used.
 
- gi/overrides/Gdk.py     | 6 ++++++
- tests/test_overrides.py | 4 ++++
+ gi/overrides/Gdk.py    |    6 ++++++
+ tests/test_overrides.py |    4 ++++
  2 files changed, 10 insertions(+)
 
 commit dff5961ba229c7c34bd7b0a18a446b56bbe39e3a
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jun 8 19:13:48 2011 +0200
+Date:  Wed Jun 8 19:13:48 2011 +0200
 
     closure: Check the out arg is not null. Fixes bug #651812
 
- gi/pygi-closure.c | 3 +++
+ gi/pygi-closure.c |   3 +++
  1 file changed, 3 insertions(+)
 
 commit d7d178206bfbb0858556fcfd6c9ca8eefda3fdf5
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 8 09:47:20 2011 +0200
+Date:  Wed Jun 8 09:47:20 2011 +0200
 
     Use constants instead of literals
 
- tests/test_overrides.py | 8 ++++----
+ tests/test_overrides.py |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit fe386a0ad548a23e30e9cb947bfa2198fb48ef29
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 19:07:22 2011 +0200
+Date:  Mon Jun 6 19:07:22 2011 +0200
 
     GVariant has now a GType, take that into account
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/pygi-argument.c |  8 ++++----
- gi/pygi-invoke.c   | 20 +++++++++++++-------
+ gi/pygi-argument.c |   8 ++++----
+ gi/pygi-invoke.c   |  20 +++++++++++++-------
  2 files changed, 17 insertions(+), 11 deletions(-)
 
 commit bd7b8d96a7420522c1fdc127ef8cfb7d6e8a1b31
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 19:05:07 2011 +0200
+Date:  Mon Jun 6 19:05:07 2011 +0200
 
     GVariantType is a boxed struct
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/gimodule.c | 2 +-
+ gi/gimodule.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2d73012e5dbcc45a5782a6c119dfb272c14b5a61
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 17:38:21 2011 +0200
+Date:  Mon Jun 6 17:38:21 2011 +0200
 
     Use _gi.Struct to wrap fundamentals
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/module.py | 4 +++-
+ gi/module.py |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit d82e6c8d1d9f2fc48fdcc15b7d2a97e4f24cf3bf
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 6 17:24:28 2011 +0200
+Date:  Mon Jun 6 17:24:28 2011 +0200
 
     Merge gi/HACKING into /HACKING
 
- HACKING    | 16 ++++++++++++++++
- gi/HACKING | 26 --------------------------
+ HACKING    |  16 ++++++++++++++++
+ gi/HACKING |  26 --------------------------
  2 files changed, 16 insertions(+), 26 deletions(-)
 
 commit 92aca4416a7930e5870b8d1a4016bae8140462ee
 Author: Daniel Drake <dsd@laptop.org>
-Date:   Fri Jun 3 16:59:15 2011 +0100
+Date:  Fri Jun 3 16:59:15 2011 +0100
 
     Fix GC-related crash during PyGObject deallocation
 
     Python-2.7.1's GC source has the following comment:
 
-            /* Python's cyclic gc should never see an incoming refcount
-             * of 0:  if something decref'ed to 0, it should have been
-             * deallocated immediately at that time.
-             * Possible cause (if the assert triggers):  a tp_dealloc
-             * routine left a gc-aware object tracked during its teardown
-             * phase, and did something-- or allowed something to
-             happen --
-             * that called back into Python.  gc can trigger then, and may
-             * see the still-tracked dying object.  Before this assert
-             * was added, such mistakes went on to allow gc to try to
-             * delete the object again.  In a debug build, that caused
-             * a mysterious segfault, when _Py_ForgetReference tried
-             * to remove the object from the doubly-linked list of all
-             * objects a second time.  In a release build, an actual
-             * double deallocation occurred, which leads to corruption
-             * of the allocator's internal bookkeeping pointers.  That's
-             * so serious that maybe this should be a release-build
-             * check instead of an assert?
-             */
+           /* Python's cyclic gc should never see an incoming refcount
+            * of 0:  if something decref'ed to 0, it should have been
+            * deallocated immediately at that time.
+            * Possible cause (if the assert triggers):  a tp_dealloc
+            * routine left a gc-aware object tracked during its teardown
+            * phase, and did something-- or allowed something to
+            happen --
+            * that called back into Python.  gc can trigger then, and may
+            * see the still-tracked dying object.  Before this assert
+            * was added, such mistakes went on to allow gc to try to
+            * delete the object again.  In a debug build, that caused
+            * a mysterious segfault, when _Py_ForgetReference tried
+            * to remove the object from the doubly-linked list of all
+            * objects a second time.  In a release build, an actual
+            * double deallocation occurred, which leads to corruption
+            * of the allocator's internal bookkeeping pointers.  That's
+            * so serious that maybe this should be a release-build
+            * check instead of an assert?
+            */
 
     As shown in a backtrace at
     https://bugzilla.redhat.com/show_bug.cgi?id=640972 , pygobject
@@ -23236,119 +5182,119 @@ Date:   Fri Jun 3 16:59:15 2011 +0100
 
     Thanks to Bernie Innocenti for initial diagnosis.
 
- glib/pygsource.c    | 6 ++++--
- gobject/pygobject.c | 8 +++++++-
+ glib/pygsource.c    |   6 ++++--
+ gobject/pygobject.c |   8 +++++++-
  2 files changed, 11 insertions(+), 3 deletions(-)
 
 commit 4c9bcedb4e11ad66a4b86174e2425c7afcafc473
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue May 31 16:59:41 2011 -0400
+Date:  Tue May 31 16:59:41 2011 -0400
 
     [gi-invoke-ng] enable invoke-ng by default
 
- configure.ac | 8 ++++----
+ configure.ac |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 2e4cfb85a55ff205e263591d573ee5ecf0ffff3e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue May 31 16:37:21 2011 -0400
+Date:  Tue May 31 16:37:21 2011 -0400
 
     [gi-invoke-ng] add code to clean up when input values fail to marshal
 
- gi/pygi-marshal-cleanup.c | 30 +++++++++++++++++++++++++-----
+ gi/pygi-marshal-cleanup.c |   30 +++++++++++++++++++++++++-----
  1 file changed, 25 insertions(+), 5 deletions(-)
 
 commit 508b1b6ca1b143f1e123a3ddb83e8ce146758dfc
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue May 31 16:01:03 2011 -0400
+Date:  Tue May 31 16:01:03 2011 -0400
 
     [gi-invoke-ng] add hash cleanup routines
 
- gi/pygi-cache.c           |  2 ++
- gi/pygi-marshal-cleanup.c | 64
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h | 10 ++++++--
+ gi/pygi-cache.c          |    2 ++
+ gi/pygi-marshal-cleanup.c |   64
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   10 +++++--
  3 files changed, 74 insertions(+), 2 deletions(-)
 
 commit 1954c75b94a74259b4e5d28f5ff8d76aa4610832
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue May 31 14:47:30 2011 -0400
+Date:  Tue May 31 14:47:30 2011 -0400
 
     [gi-invoke-ng] handle arrays with transfers of GI_TRANSFER_CONTAINER
 
- gi/pygi-marshal-cleanup.c | 3 ++-
+ gi/pygi-marshal-cleanup.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit b626c46b4a95602c7bf1278c2a39aacb7f5027d9
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue May 31 14:40:49 2011 -0400
+Date:  Tue May 31 14:40:49 2011 -0400
 
     [gi-invoke-ng] add list cleanup routines
 
- gi/pygi-cache.c           |  8 ++---
- gi/pygi-marshal-cleanup.c | 84
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h |  8 +++++
+ gi/pygi-cache.c          |    8 ++---
+ gi/pygi-marshal-cleanup.c |   84
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   8 +++++
  3 files changed, 96 insertions(+), 4 deletions(-)
 
 commit 2e542c327cd52c1f77af28905557dd25c64175d8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 26 16:10:13 2011 -0400
+Date:  Thu May 26 16:10:13 2011 -0400
 
     indentation fix
 
- gi/pygi-marshal.c | 8 ++++----
+ gi/pygi-marshal.c |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 601aec11c49e821fe97dd30a2187fe3c75844712
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 26 16:09:38 2011 -0400
+Date:  Thu May 26 16:09:38 2011 -0400
 
     [gi-invoke-ng] add out array cleanup
 
- gi/pygi-cache.c           |  2 +-
- gi/pygi-marshal-cleanup.c | 24 ++++++++++++++++++++++++
- gi/pygi-marshal.c         | 37 +++++++++++++++++++++++++++++++------
+ gi/pygi-cache.c          |    2 +-
+ gi/pygi-marshal-cleanup.c |   24 ++++++++++++++++++++++++
+ gi/pygi-marshal.c        |   37 +++++++++++++++++++++++++++++++------
  3 files changed, 56 insertions(+), 7 deletions(-)
 
 commit e9ad4428b769f8c9ace1cdc973c684de84fb1a5e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 26 13:22:38 2011 -0400
+Date:  Thu May 26 13:22:38 2011 -0400
 
     [gi-invoke-ng] do not allocate null terminator for garray
 
     * We are simply setting our own array so we don't want any allocate
     null byte
 
- gi/pygi-marshal.c | 2 +-
+ gi/pygi-marshal.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a986b2b8e5ee37f2a330f5aabc85c73ebb0de508
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 26 13:21:55 2011 -0400
+Date:  Thu May 26 13:21:55 2011 -0400
 
     [gi-invoke-ng] add array cleanup for in arrays
 
- gi/pygi-cache.c           |  2 +-
- gi/pygi-marshal-cleanup.c | 72
- ++++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-marshal-cleanup.h |  9 ++++++
- gi/pygi-marshal.c         | 13 +++++++--
+ gi/pygi-cache.c          |    2 +-
+ gi/pygi-marshal-cleanup.c |   72
+ ++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-cleanup.h |   9 ++++++
+ gi/pygi-marshal.c        |   13 ++++++--
  4 files changed, 91 insertions(+), 5 deletions(-)
 
 commit 990c60805c8ef718eb29e2e1b24f057552c6159e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon May 23 17:06:30 2011 -0400
+Date:  Mon May 23 17:06:30 2011 -0400
 
     [gi-invoke-ng] remove remaining bits of the invoke stage state machine
 
- gi/pygi-invoke-ng.c           |  7 +------
- gi/pygi-invoke-state-struct.h | 14 --------------
+ gi/pygi-invoke-ng.c          |    7 +------
+ gi/pygi-invoke-state-struct.h |   14 --------------
  2 files changed, 1 insertion(+), 20 deletions(-)
 
 commit dbbcf4a0e76fb572d85843ee31c3798df5cd5cc5
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon May 23 16:59:57 2011 -0400
+Date:  Mon May 23 16:59:57 2011 -0400
 
     [gi-invoke-ng] revamp cleanup framework to be orthogonal to cache
     setup
@@ -23362,19 +5308,19 @@ Date:   Mon May 23 16:59:57 2011 -0400
       happens at
       each stage
 
- gi/pygi-cache.c               |  19 ++-
- gi/pygi-cache.h               |   7 +-
- gi/pygi-invoke-ng.c           |  10 +-
- gi/pygi-invoke-state-struct.h |   2 +
- gi/pygi-marshal-cleanup.c     | 301
- +++++++++++++++++-------------------------
- gi/pygi-marshal-cleanup.h     |  45 ++++---
- gi/pygi-marshal.c             |  15 +--
+ gi/pygi-cache.c                19 ++-
+ gi/pygi-cache.h                 7 +-
+ gi/pygi-invoke-ng.c            10 +-
+ gi/pygi-invoke-state-struct.h |    2 +
+ gi/pygi-marshal-cleanup.c     |  301
+ ++++++++++++++++-------------------------
+ gi/pygi-marshal-cleanup.h     |   45 +++---
+ gi/pygi-marshal.c            |   15 +-
  7 files changed, 174 insertions(+), 225 deletions(-)
 
 commit 198714dc4585f7463f38929f1ca4e4b60a27dadb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 12 17:29:20 2011 -0400
+Date:  Thu May 12 17:29:20 2011 -0400
 
     [gi-invoke-ng] stub out a cleaner way of cleaning up after ourselves
 
@@ -23383,68 +5329,66 @@ Date:   Thu May 12 17:29:20 2011 -0400
     * Now we call specific cleanup functions at the point of failure (or
       successful completion of a marshalling stage)
 
- gi/pygi-invoke-ng.c       | 59 +++++++++++++++++++++++++++++++-------
- gi/pygi-marshal-cleanup.c | 72
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h | 14 +++++++++
+ gi/pygi-invoke-ng.c      |   59 ++++++++++++++++++++++++++++++-------
+ gi/pygi-marshal-cleanup.c |   72
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |   14 +++++++++
  3 files changed, 135 insertions(+), 10 deletions(-)
 
 commit c1389dadbf35afee3f28d90ef637efd8c1f071a5
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Thu May 12 11:53:40 2011 -0400
+Date:  Thu May 12 11:53:40 2011 -0400
 
     Doc Extractor: Correct the logic of the --no-since option.
 
-            * codegen/docextract.py (process_final_sections): If the
-            --no-since
-            option has been specified and a "Since:" is encountered
-            during the
-            processing of the final sections, simply don't append the
-            "Since: ..."
-            instead of reading the next line.  This preserves the logical
-            flow of
-            processing.
-
- codegen/docextract.py | 4 ++--
+       * codegen/docextract.py (process_final_sections): If the
+       --no-since
+       option has been specified and a "Since:" is encountered during the
+       processing of the final sections, simply don't append the
+       "Since: ..."
+       instead of reading the next line.  This preserves the logical
+       flow of
+       processing.
+
+ codegen/docextract.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 303d8e8ab9e60cb554de7fc0e8592cd9b2c50843
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Mon May 9 17:32:09 2011 -0400
+Date:  Mon May 9 17:32:09 2011 -0400
 
     Doc Extractor: Add a --no-since option.
 
-            * codegen/docextract.py:
-            * codegen/docextract_to_xml.py: Modified so that if a
-            --no-since
-            option is specified at the command line, the "Since:
-            ..." portion of
-            the gtkdoc function block is omitted.  This is useful for
-            C++ modules
-            such as gstreamermm where this information would not be
-            useful as long
-            as the C API is still unstable.
-
- codegen/docextract.py        | 15 ++++++++++++++-
- codegen/docextract_to_xml.py |  9 ++++++---
+       * codegen/docextract.py:
+       * codegen/docextract_to_xml.py: Modified so that if a --no-since
+       option is specified at the command line, the "Since: ..." portion
+       of
+       the gtkdoc function block is omitted.  This is useful for C++
+       modules
+       such as gstreamermm where this information would not be useful
+       as long
+       as the C API is still unstable.
+
+ codegen/docextract.py       |   15 ++++++++++++++-
+ codegen/docextract_to_xml.py |    9 ++++++---
  2 files changed, 20 insertions(+), 4 deletions(-)
 
 commit 4f615c6e300d6f2d7551b640efa301060206ab58
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu May 5 14:04:34 2011 -0400
+Date:  Thu May 5 14:04:34 2011 -0400
 
     [gi-invoke-ng] tweek cleanup routines
 
- gi/pygi-cache.c           |  5 +++
- gi/pygi-marshal-cleanup.c | 87
- +++++++++++++++++++++++++++++++++++------------
- gi/pygi-marshal-cleanup.h |  6 ++--
- gi/pygi-marshal.c         | 11 ++----
+ gi/pygi-cache.c          |    5 +++
+ gi/pygi-marshal-cleanup.c |   87
+ ++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-marshal-cleanup.h |   6 ++--
+ gi/pygi-marshal.c        |   11 ++----
  4 files changed, 76 insertions(+), 33 deletions(-)
 
 commit 63c7f17c224821cb7136d06e8ef87eab7291848d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon May 2 15:49:52 2011 +0200
+Date:  Mon May 2 15:49:52 2011 +0200
 
     Fix symbol names to be locale independent
 
@@ -23465,60 +5409,60 @@ Date:   Mon May 2 15:49:52 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=649165
 
- gi/module.py         |  9 ++++++++-
- tests/te_ST@nouppera | 50
+ gi/module.py        |    9 ++++++++-
+ tests/te_ST@nouppera |   50
  ++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py     | 30 ++++++++++++++++++++++++++++++
+ tests/test_gi.py     |   30 ++++++++++++++++++++++++++++++
  3 files changed, 88 insertions(+), 1 deletion(-)
 
 commit b5e150da76c3d4de1a75f58d03c3a761e9005a63
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed May 4 08:35:27 2011 +0200
+Date:  Wed May 4 08:35:27 2011 +0200
 
     [gi] pygi-convert.sh: Convert gtk.gdk.CROSSHAIR
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit fcc5ea201ab25da6db94ea8a37364a1d3c4d7c65
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Apr 29 17:41:08 2011 -0400
+Date:  Fri Apr 29 17:41:08 2011 -0400
 
     [gi-invoke-ng] handle filename cleanup with the utf8 cleanup function
 
- gi/pygi-cache.c | 2 ++
+ gi/pygi-cache.c |    2 ++
  1 file changed, 2 insertions(+)
 
 commit dbe8c4fabc8ac19415a3be0e854d3a54c2317e0b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Apr 29 17:40:13 2011 -0400
+Date:  Fri Apr 29 17:40:13 2011 -0400
 
     [gi-invoke-ng] handle caller allocates cleanup
 
- gi/pygi-invoke-ng.c       |   5 ++-
- gi/pygi-marshal-cleanup.c | 104
- ++++++++++++++++++++++++++++++++++++----------
- gi/pygi-marshal-cleanup.h |   7 ++--
+ gi/pygi-invoke-ng.c         5 ++-
+ gi/pygi-marshal-cleanup.c |  104
+ ++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-marshal-cleanup.h |   7 +--
  3 files changed, 90 insertions(+), 26 deletions(-)
 
 commit cdbf57f3b1f041a06cf545a5557424f701ed1ec7
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Apr 28 19:16:02 2011 -0400
+Date:  Thu Apr 28 19:16:02 2011 -0400
 
     [gi-invoke-ng] refactor the cleanup code and add utf8 cleanup as
     initial test
 
- gi/pygi-cache.c               | 15 ++-----------
- gi/pygi-invoke-ng.c           |  8 +++----
- gi/pygi-invoke-state-struct.h |  2 ++
- gi/pygi-marshal-cleanup.c     | 51
- ++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-marshal-cleanup.h     |  3 +++
+ gi/pygi-cache.c              |   15 ++----------
+ gi/pygi-invoke-ng.c          |    8 +++----
+ gi/pygi-invoke-state-struct.h |    2 ++
+ gi/pygi-marshal-cleanup.c     |   51
+ ++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-cleanup.h     |    3 +++
  5 files changed, 60 insertions(+), 19 deletions(-)
 
 commit d1f1f4ccc55f9ecab73b7c0ee78762c4039b2c79
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Apr 27 15:47:19 2011 -0400
+Date:  Wed Apr 27 15:47:19 2011 -0400
 
     use PyCapsule when importing pycairo/require pycairo 1.10.0 for
     python3 builds
@@ -23526,52 +5470,52 @@ Date:   Wed Apr 27 15:47:19 2011 -0400
     * PyCObject is deprecated and pycairo 1.10.0 is first release to
     fix this issue
 
- configure.ac            | 15 +++++++++++----
- gi/pygi-foreign-cairo.c |  2 +-
+ configure.ac           |   15 +++++++++++----
+ gi/pygi-foreign-cairo.c |    2 +-
  2 files changed, 12 insertions(+), 5 deletions(-)
 
 commit 83b7823a510b0b391560c6deaf9d15d8303c7b14
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Apr 21 16:52:20 2011 +0200
+Date:  Thu Apr 21 16:52:20 2011 +0200
 
     [python3] fix build. PYcairo_IMPORT doesn't exists anymore
 
- gi/pygi-foreign-cairo.c | 7 ++++++-
+ gi/pygi-foreign-cairo.c |    7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 3e933784df423757e591d703614cb700adb0bbe0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 18 18:36:25 2011 +0200
+Date:  Mon Apr 18 18:36:25 2011 +0200
 
     Updated DOAP file
 
- pygobject.doap | 15 +++++++++++++++
+ pygobject.doap |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 399d06b4b20685eb38acfd7e43226e06737ab7d2
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Apr 16 16:02:05 2011 +0200
+Date:  Sat Apr 16 16:02:05 2011 +0200
 
     [gi] Don't create variant twice
 
- gi/overrides/GLib.py | 2 +-
+ gi/overrides/GLib.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8d8a84ea23d28d25851c5870f261c020d762cef4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 16:14:43 2011 +0200
+Date:  Fri Apr 15 16:14:43 2011 +0200
 
     pygi-convert.sh: Make sure the uppercase GObject module is imported
     instead of the lowercase
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647736
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 3b51d6426d0f59b2dd7e0dcdcded4bed43d6b9d8
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:53 2011 +0200
+Date:  Fri Apr 15 15:58:53 2011 +0200
 
     [gi] Removed hack to avoid using GLib.Variant.new_variant.
 
@@ -23579,21 +5523,21 @@ Date:   Fri Apr 15 15:58:53 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=639952
     https://bugzilla.gnome.org/show_bug.cgi?id=647796
 
- gi/overrides/GLib.py | 14 +-------------
+ gi/overrides/GLib.py |   14 +-------------
  1 file changed, 1 insertion(+), 13 deletions(-)
 
 commit bb4dce14ba666969815d4e56adbc38f0ac4f7ff7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:31 2011 +0200
+Date:  Fri Apr 15 15:58:31 2011 +0200
 
     [gi] Added additional test case for GVariant handling
 
- tests/test_overrides.py | 15 +++++++++++++++
+ tests/test_overrides.py |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 138df2778543409752e229a09828a805f68a420d
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 11 18:34:31 2011 +0200
+Date:  Mon Apr 11 18:34:31 2011 +0200
 
     [gi] Added support for GVariant arguments
 
@@ -23603,12 +5547,12 @@ Date:   Mon Apr 11 18:34:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647477
 
- gi/pygi-argument.c | 2 ++
+ gi/pygi-argument.c |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 985f239d891c7697d76ccecb797b189669ae6ee1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 18:46:28 2011 -0400
+Date:  Tue Mar 22 18:46:28 2011 -0400
 
     fix static ABI for setting string gvalues from python objects
 
@@ -23619,32 +5563,32 @@ Date:   Tue Mar 22 18:46:28 2011 -0400
      * this restores that code while still keeping unicode and python 3
        compatability
 
- gobject/pygtype.c        | 28 +++++++++++++++++++---------
- tests/test_properties.py |  8 ++++++++
+ gobject/pygtype.c       |   28 +++++++++++++++++++---------
+ tests/test_properties.py |    8 ++++++++
  2 files changed, 27 insertions(+), 9 deletions(-)
 
 commit 58cfc3cd1152b4448b56a6ff597f954d8450b83e
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 20:47:51 2011 +0100
+Date:  Tue Mar 22 20:47:51 2011 +0100
 
     dsextras.py: ensure eol characters are preserved when writing template
     files (so \n does not become \r\n)
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 629d267478982c426ba61a639d5c9603fed856e6
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 11:35:44 2011 +0100
+Date:  Tue Mar 22 11:35:44 2011 +0100
 
     dsextras.py: remove \r as wel as \n character
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 426c7109d4c0dbf0d56cc075f97f33b3451f79a8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Apr 27 15:47:19 2011 -0400
+Date:  Wed Apr 27 15:47:19 2011 -0400
 
     use PyCapsule when importing pycairo/require pycairo 1.10.0 for
     python3 builds
@@ -23652,52 +5596,52 @@ Date:   Wed Apr 27 15:47:19 2011 -0400
     * PyCObject is deprecated and pycairo 1.10.0 is first release to
     fix this issue
 
- configure.ac            | 15 +++++++++++----
- gi/pygi-foreign-cairo.c |  2 +-
+ configure.ac           |   15 +++++++++++----
+ gi/pygi-foreign-cairo.c |    2 +-
  2 files changed, 12 insertions(+), 5 deletions(-)
 
 commit 4e5833d0c2fe548617e5ea510f05920fd0caf73b
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Apr 21 16:52:20 2011 +0200
+Date:  Thu Apr 21 16:52:20 2011 +0200
 
     [python3] fix build. PYcairo_IMPORT doesn't exists anymore
 
- gi/pygi-foreign-cairo.c | 7 ++++++-
+ gi/pygi-foreign-cairo.c |    7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 91ec337359720839862d3f5a8a0ea98f760a0752
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 18 18:36:25 2011 +0200
+Date:  Mon Apr 18 18:36:25 2011 +0200
 
     Updated DOAP file
 
- pygobject.doap | 15 +++++++++++++++
+ pygobject.doap |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 05c766044c83340c44564d0097514bfc1d1d9df7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Apr 16 16:02:05 2011 +0200
+Date:  Sat Apr 16 16:02:05 2011 +0200
 
     [gi] Don't create variant twice
 
- gi/overrides/GLib.py | 2 +-
+ gi/overrides/GLib.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit eb8f212e3687af30407cf01fcdfbf530257bcddb
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 16:14:43 2011 +0200
+Date:  Fri Apr 15 16:14:43 2011 +0200
 
     pygi-convert.sh: Make sure the uppercase GObject module is imported
     instead of the lowercase
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647736
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit af31729573de24161ee90563e5738187c749783c
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:53 2011 +0200
+Date:  Fri Apr 15 15:58:53 2011 +0200
 
     [gi] Removed hack to avoid using GLib.Variant.new_variant.
 
@@ -23705,30 +5649,30 @@ Date:   Fri Apr 15 15:58:53 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=639952
     https://bugzilla.gnome.org/show_bug.cgi?id=647796
 
- gi/overrides/GLib.py | 14 +-------------
+ gi/overrides/GLib.py |   14 +-------------
  1 file changed, 1 insertion(+), 13 deletions(-)
 
 commit 070f6688be4afb926656038dcceac4c8b8ed97c7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Apr 15 15:58:31 2011 +0200
+Date:  Fri Apr 15 15:58:31 2011 +0200
 
     [gi] Added additional test case for GVariant handling
 
- tests/test_overrides.py | 15 +++++++++++++++
+ tests/test_overrides.py |   15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 65aa040e86d94ee6bb227a2bce09668b60208027
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Apr 12 14:51:35 2011 -0400
+Date:  Tue Apr 12 14:51:35 2011 -0400
 
     [gi-invoke-ng] fix prototype
 
- gi/pygi-cache.h | 2 +-
+ gi/pygi-cache.h |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 12aa4e6376366ca9d758434f6544c9c70a1e5df8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Apr 12 14:48:16 2011 -0400
+Date:  Tue Apr 12 14:48:16 2011 -0400
 
     [gi-invoke-ng] create new framework for cleaning up args
 
@@ -23739,20 +5683,20 @@ Date:   Tue Apr 12 14:48:16 2011 -0400
     marshalling
       the out parameters and at any time an error occures
 
- gi/Makefile.am                |  4 ++-
- gi/pygi-cache.c               | 25 +++++++------
- gi/pygi-cache.h               |  5 ++-
- gi/pygi-invoke-ng.c           | 34 ++++++++++++++----
- gi/pygi-invoke-state-struct.h | 13 +++++++
- gi/pygi-marshal-cleanup.c     | 81
- +++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h     | 43 +++++++++++++++++++++++
- gi/pygi-marshal.c             |  1 +
+ gi/Makefile.am                       |    4 +-
+ gi/pygi-cache.c              |   25 +++++++------
+ gi/pygi-cache.h              |    5 ++-
+ gi/pygi-invoke-ng.c          |   34 ++++++++++++++---
+ gi/pygi-invoke-state-struct.h |   13 +++++++
+ gi/pygi-marshal-cleanup.c     |   81
+ +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h     |   43 ++++++++++++++++++++++
+ gi/pygi-marshal.c            |    1 +
  8 files changed, 187 insertions(+), 19 deletions(-)
 
 commit 0463295cd046bd6382ad9dc71ea1518858d63c5f
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Apr 11 18:34:31 2011 +0200
+Date:  Mon Apr 11 18:34:31 2011 +0200
 
     [gi] Added support for GVariant arguments
 
@@ -23762,147 +5706,147 @@ Date:   Mon Apr 11 18:34:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647477
 
- gi/pygi-argument.c | 2 ++
+ gi/pygi-argument.c |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 1d64c3d3db2ec17b9a48df55271f712db6c07060
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 30 16:40:31 2011 -0400
+Date:  Wed Mar 30 16:40:31 2011 -0400
 
     [gi-invoke-ng] fix marshal header that is no longer part of
     pygi-arguments.h
 
- gi/pygi-marshal.h | 8 ++++----
+ gi/pygi-marshal.h |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 3580cd1c7222022ebeef3476f9e609c8045f12a3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 30 15:53:13 2011 -0400
+Date:  Wed Mar 30 15:53:13 2011 -0400
 
     [gi-invoke-ng] code style space fixes
 
- gi/pygi-cache.c     | 420 +++++++++++++++++++-------------------
- gi/pygi-invoke-ng.c | 145 +++++++-------
- gi/pygi-marshal.c   | 565
- ++++++++++++++++++++++++++--------------------------
+ gi/pygi-cache.c     | 420 +++++++++++++++++++-------------------
+ gi/pygi-invoke-ng.c | 145 +++++++------
+ gi/pygi-marshal.c   | 565
+ ++++++++++++++++++++++++++-------------------------
  3 files changed, 566 insertions(+), 564 deletions(-)
 
 commit 81662fcd09f112bfffcdc5b7f01a5537b84cd9d4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 29 16:54:44 2011 -0400
+Date:  Tue Mar 29 16:54:44 2011 -0400
 
     [gi-invoke-ng] don't decref value taken from a dict as it is borrowed
 
- gi/pygi-invoke-ng.c | 1 -
+ gi/pygi-invoke-ng.c |   1 -
  1 file changed, 1 deletion(-)
 
 commit a456fc0adc1f8a0754bf59cde8924f905bfc7dc1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 29 15:23:06 2011 -0400
+Date:  Tue Mar 29 15:23:06 2011 -0400
 
     [gi-invoke-ng] return None when appropriate so we don't crash
 
- gi/pygi-marshal.c | 18 +++++++++++++++++-
+ gi/pygi-marshal.c |   18 +++++++++++++++++-
  1 file changed, 17 insertions(+), 1 deletion(-)
 
 commit e8c8c37e5587dc7ff62519df336988a12e6f5d0a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 29 15:21:41 2011 -0400
+Date:  Tue Mar 29 15:21:41 2011 -0400
 
     [gi-invoke-ng] fix aux value caching
 
- gi/pygi-cache.c | 15 ++++++++++-----
+ gi/pygi-cache.c |   15 ++++++++++-----
  1 file changed, 10 insertions(+), 5 deletions(-)
 
 commit 4e4c1847c713a4eb4ab34d04488e94dac24d9167
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 28 20:25:46 2011 -0400
+Date:  Mon Mar 28 20:25:46 2011 -0400
 
     [gi-invoke-ng] backport handling flags with no gtype
 
- gi/pygi-marshal.c | 25 ++++++++++++++++++++++++-
+ gi/pygi-marshal.c |   25 ++++++++++++++++++++++++-
  1 file changed, 24 insertions(+), 1 deletion(-)
 
 commit fd76423e655b3711e1ffbf9b61ea4e2c94040234
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 28 18:32:00 2011 -0400
+Date:  Mon Mar 28 18:32:00 2011 -0400
 
     [gi-invoke-ng] backport raw gvalue handling
 
- gi/pygi-marshal.c | 23 ++++++++++++++++++-----
+ gi/pygi-marshal.c |   23 ++++++++++++++++++-----
  1 file changed, 18 insertions(+), 5 deletions(-)
 
 commit 507b5051c83f70ceae79e0fa693c86e5cbb9f442
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 28 18:30:31 2011 -0400
+Date:  Mon Mar 28 18:30:31 2011 -0400
 
     [gi-invoke-ng] marshal instances seperately since they differ slightly
     from other args
 
- gi/pygi-cache.c   |  2 +-
- gi/pygi-marshal.c | 38 ++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.c   |   2 +-
+ gi/pygi-marshal.c |   38 ++++++++++++++++++++++++++++++++++++++
  2 files changed, 39 insertions(+), 1 deletion(-)
 
 commit 726a27c0e74ace3ff23d9cc4d393ae53e57f1fac
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 28 18:26:09 2011 -0400
+Date:  Mon Mar 28 18:26:09 2011 -0400
 
     [gi-invoke-ng] refactor FunctionCache to be more generic CallableCache
 
- gi/pygi-cache.c     | 392
- +++++++++++++++++++++++++++-------------------------
- gi/pygi-cache.h     |  12 +-
- gi/pygi-info.c      |   2 +-
- gi/pygi-invoke-ng.c |  40 +++---
- gi/pygi-marshal.c   | 140 +++++++++----------
- gi/pygi-marshal.h   | 159 +++++++++------------
- gi/pygi.h           |   2 +-
+ gi/pygi-cache.c     | 392
+ ++++++++++++++++++++++++++-------------------------
+ gi/pygi-cache.h     |  12 +-
+ gi/pygi-info.c      |   2 +-
+ gi/pygi-invoke-ng.c |  40 +++---
+ gi/pygi-marshal.c   | 140 +++++++++---------
+ gi/pygi-marshal.h   | 159 +++++++++------------
+ gi/pygi.h             2 +-
  7 files changed, 362 insertions(+), 385 deletions(-)
 
 commit 3d5d9ff5c18a850650992bdd52e8e4c722b23396
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 28 15:01:12 2011 -0400
+Date:  Mon Mar 28 15:01:12 2011 -0400
 
     [gi-invoke-rewrite] backport glib error handling
 
- gi/pygi-invoke-ng.c | 14 ++++++--------
+ gi/pygi-invoke-ng.c |  14 ++++++--------
  1 file changed, 6 insertions(+), 8 deletions(-)
 
 commit 37b14b28a5f2aec16ac7f321efbf07e1403e9531
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 25 18:48:42 2011 -0400
+Date:  Fri Mar 25 18:48:42 2011 -0400
 
     [gi-invoke-ng] backport closure passing from invoke
 
- gi/pygi-marshal.c | 13 ++++++++++---
+ gi/pygi-marshal.c |   13 ++++++++++---
  1 file changed, 10 insertions(+), 3 deletions(-)
 
 commit cf7f97eabc9c49773c2916929b8c43ef453d0652
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 25 18:47:36 2011 -0400
+Date:  Fri Mar 25 18:47:36 2011 -0400
 
     [gi-invoke-ng] handle vfuncs and fix cosntrutors
 
- gi/pygi-cache.c               |  9 +++++++
- gi/pygi-cache.h               |  2 ++
- gi/pygi-invoke-ng.c           | 56
- ++++++++++++++++++++++++++++++++-----------
- gi/pygi-invoke-state-struct.h |  2 ++
+ gi/pygi-cache.c              |    9 +++++++
+ gi/pygi-cache.h              |    2 ++
+ gi/pygi-invoke-ng.c          |   56
+ ++++++++++++++++++++++++++++++-----------
+ gi/pygi-invoke-state-struct.h |    2 ++
  4 files changed, 55 insertions(+), 14 deletions(-)
 
 commit af2ce400fcf771ee6c9bc01aecfb59467be5a0ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 25 18:39:06 2011 -0400
+Date:  Fri Mar 25 18:39:06 2011 -0400
 
     [gi-invoke-ng] handle foreign types correctly
 
- gi/pygi-cache.c   | 22 ++++++----------------
- gi/pygi-marshal.c |  3 +++
+ gi/pygi-cache.c   |   22 ++++++----------------
+ gi/pygi-marshal.c |   3 +++
  2 files changed, 9 insertions(+), 16 deletions(-)
 
 commit 482553ae5d863ca523be3bd1eededa5d02a4f87e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 25 13:14:01 2011 -0400
+Date:  Fri Mar 25 13:14:01 2011 -0400
 
     [gi] remove the class parameter from the argument list of constructors
 
@@ -23911,14 +5855,14 @@ Date:   Fri Mar 25 13:14:01 2011 -0400
        and g_object_new to do the construction we ignore this for now but
        keep it around in the state for future use.
 
- gi/pygi-invoke-ng.c           | 46
- +++++++++++++++++++++++++++++++++++++------
- gi/pygi-invoke-state-struct.h |  1 +
+ gi/pygi-invoke-ng.c          |   46
+ +++++++++++++++++++++++++++++++++++------
+ gi/pygi-invoke-state-struct.h |    1 +
  2 files changed, 41 insertions(+), 6 deletions(-)
 
 commit 0534eb0e843cdf09611143da184052f7e549e4dc
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 18:46:28 2011 -0400
+Date:  Tue Mar 22 18:46:28 2011 -0400
 
     fix static ABI for setting string gvalues from python objects
 
@@ -23929,100 +5873,100 @@ Date:   Tue Mar 22 18:46:28 2011 -0400
      * this restores that code while still keeping unicode and python 3
        compatability
 
- gobject/pygtype.c        | 28 +++++++++++++++++++---------
- tests/test_properties.py |  8 ++++++++
+ gobject/pygtype.c       |   28 +++++++++++++++++++---------
+ tests/test_properties.py |    8 ++++++++
  2 files changed, 27 insertions(+), 9 deletions(-)
 
 commit 5f0e130026a663a57ed1317e0fa0e1f78f9e6e0a
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 20:47:51 2011 +0100
+Date:  Tue Mar 22 20:47:51 2011 +0100
 
     dsextras.py: ensure eol characters are preserved when writing template
     files (so \n does not become \r\n)
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 62a6274105003ef386ddfe9ef38e8afa8c43d124
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Mar 22 11:35:44 2011 +0100
+Date:  Tue Mar 22 11:35:44 2011 +0100
 
     dsextras.py: remove \r as wel as \n character
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 86c436978c933f6ebe17627abe98325ce66f6baa
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 16:13:58 2011 -0400
+Date:  Tue Mar 22 16:13:58 2011 -0400
 
     [gi] make new invoke-ng codepath compile correctly
 
- configure.ac        |    4 +
- gi/Makefile.am      |    5 +-
- gi/pygi-cache.c     |    2 +-
- gi/pygi-invoke-ng.c |  841 ----------------------
+ configure.ac       |    4 +
+ gi/Makefile.am      |   5 +-
+ gi/pygi-cache.c     |   2 +-
+ gi/pygi-invoke-ng.c | 841 ----------------------
  gi/pygi-marshal.c   | 1962
  +--------------------------------------------------
- gi/pygi-private.h   |    4 +-
+ gi/pygi-private.h   |   4 +-
  6 files changed, 9 insertions(+), 2809 deletions(-)
 
 commit 35619fec43f4df85edf5456f3fc9733b16f2ba90
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 15:40:02 2011 -0400
+Date:  Tue Mar 22 15:40:02 2011 -0400
 
     [gi] conditionalize invoke code paths
 
- configure.ac      |  7 +++++++
- gi/Makefile.am    | 20 +++++++++++++++-----
- gi/pygi-cache.h   |  2 ++
- gi/pygi-info.c    |  4 +++-
- gi/pygi-private.h |  9 +++++++--
- gi/pygi.h         |  4 +++-
+ configure.ac     |    7 +++++++
+ gi/Makefile.am    |   20 +++++++++++++++-----
+ gi/pygi-cache.h   |   2 ++
+ gi/pygi-info.c    |   4 +++-
+ gi/pygi-private.h |   9 +++++++--
+ gi/pygi.h        |    4 +++-
  6 files changed, 37 insertions(+), 9 deletions(-)
 
 commit 83c51bd2bb6ca24ce610c04cff1527bcd2689d90
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 15:37:24 2011 -0400
+Date:  Tue Mar 22 15:37:24 2011 -0400
 
     [gi] revert back to the type.py from master
 
- gi/types.py | 21 +++++++++++++++------
+ gi/types.py |  21 +++++++++++++++------
  1 file changed, 15 insertions(+), 6 deletions(-)
 
 commit cb30d00d1c92e73d9bfb08cc7b600a5aa70f2fc0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 14:46:29 2011 -0400
+Date:  Tue Mar 22 14:46:29 2011 -0400
 
     [gi] revert pygi-argument.h and move the invoke-ng code to
     pygi-marshal.h
 
- gi/pygi-argument.h | 268 +-----------------------------------------
- gi/pygi-marshal.h  | 336
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.h |  268 +----------------------------------------
+ gi/pygi-marshal.h  |  336
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 337 insertions(+), 267 deletions(-)
 
 commit 17cb714cfdaf45b6d7dd627b0189bd24e6578f74
-Merge: 7332a1b9 01596a9b
+Merge: 7332a1b 01596a9
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 13:34:36 2011 -0400
+Date:  Tue Mar 22 13:34:36 2011 -0400
 
     Merge branch 'master' into invoke-rewrite
 
     Conflicts:
-            gi/Makefile.am
-            gi/pygi-argument.c
-            gi/pygi-foreign-cairo.c
-            gi/pygi-foreign-gvariant.c
-            gi/pygi-foreign-gvariant.h
-            gi/pygi-foreign.c
-            gi/pygi-foreign.h
-            gi/pygi-private.h
-            gi/pygi.h
+       gi/Makefile.am
+       gi/pygi-argument.c
+       gi/pygi-foreign-cairo.c
+       gi/pygi-foreign-gvariant.c
+       gi/pygi-foreign-gvariant.h
+       gi/pygi-foreign.c
+       gi/pygi-foreign.h
+       gi/pygi-private.h
+       gi/pygi.h
 
 commit 01596a9b7cc0ceef3904da5b96939140ee0732fd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 22 13:20:54 2011 -0400
+Date:  Tue Mar 22 13:20:54 2011 -0400
 
     [gi] foreign types now take interface infos instead of type infos
 
@@ -24034,18 +5978,18 @@ Date:   Tue Mar 22 13:20:54 2011 -0400
        refcounting to keep track of
      * also fixes a bug where we were leaking PyNone ref counts
 
- gi/pygi-argument.c         |  4 ++--
- gi/pygi-foreign-cairo.c    | 16 ++++++++--------
- gi/pygi-foreign-gvariant.c | 12 ++++++------
- gi/pygi-foreign.c          | 32 +++++++++++++-------------------
- gi/pygi-foreign.h          |  8 ++++----
- gi/pygi-invoke.c           |  6 +++---
- gi/pygi.h                  | 12 ++++++------
+ gi/pygi-argument.c        |    4 ++--
+ gi/pygi-foreign-cairo.c    |  16 ++++++++--------
+ gi/pygi-foreign-gvariant.c |  12 ++++++------
+ gi/pygi-foreign.c         |   32 +++++++++++++-------------------
+ gi/pygi-foreign.h         |    8 ++++----
+ gi/pygi-invoke.c          |    6 +++---
+ gi/pygi.h                 |   12 ++++++------
  7 files changed, 42 insertions(+), 48 deletions(-)
 
 commit fbabc1fdafa1dcbd1f6aaea7b821bd1c64a546ab
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 22 15:04:01 2011 +0100
+Date:  Tue Mar 22 15:04:01 2011 +0100
 
     Fix GSchema tests for separate build tree
 
@@ -24057,13 +6001,13 @@ Date:   Tue Mar 22 15:04:01 2011 +0100
     prefer it
     over test_overrides.py's directory.
 
- tests/Makefile.am       | 3 ++-
- tests/test_overrides.py | 4 +++-
+ tests/Makefile.am      |    3 ++-
+ tests/test_overrides.py |    4 +++-
  2 files changed, 5 insertions(+), 2 deletions(-)
 
 commit 7332a1b99775519fdc5500cab6628b713e946a8c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 21 19:03:29 2011 -0400
+Date:  Mon Mar 21 19:03:29 2011 -0400
 
     [gi] start of merge from master
 
@@ -24074,14 +6018,14 @@ Date:   Mon Mar 21 19:03:29 2011 -0400
 
  gi/pygi-argument.c  | 2101 +++------------------------
  gi/pygi-invoke-ng.c | 1179 ++++++++++++++++
- gi/pygi-invoke.c    |  421 ++----
+ gi/pygi-invoke.c    | 421 ++----
  gi/pygi-marshal.c   | 3916
  +++++++++++++++++++++++++++++++++++++++++++++++++++
  4 files changed, 5389 insertions(+), 2228 deletions(-)
 
 commit 62b49dae97441953452d097cb1751df14302547a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 16 17:34:18 2011 -0400
+Date:  Wed Mar 16 17:34:18 2011 -0400
 
     [gi] marshal raw closures
 
@@ -24092,64 +6036,64 @@ Date:   Wed Mar 16 17:34:18 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644757
 
- gi/pygi-argument.c | 17 ++++++++++-------
- tests/test_gi.py   |  4 ++++
+ gi/pygi-argument.c |  17 ++++++++++-------
+ tests/test_gi.py   |   4 ++++
  2 files changed, 14 insertions(+), 7 deletions(-)
 
 commit 1e70957c5470a0f4bceba38ca66a4e4274fdc8d8
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:41:01 2011 +1300
+Date:  Sun Mar 6 23:41:01 2011 +1300
 
     pygi-convert.sh add GObject.xxx and webkit
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
- pygi-convert.sh | 7 +++++++
+ pygi-convert.sh |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 2292673c96e7973a0732ca15bbd5b0bf7a9c7dcf
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:41:30 2011 +1300
+Date:  Sun Mar 6 23:41:30 2011 +1300
 
     pygi-convert.sh remove gobject tests, GObject works now
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
- pygi-convert.sh | 28 ----------------------------
+ pygi-convert.sh |   28 ----------------------------
  1 file changed, 28 deletions(-)
 
 commit d26e5cc45f277f6b7edb32aa416520bb53bff9c2
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 11 14:09:02 2011 -0500
+Date:  Fri Mar 11 14:09:02 2011 -0500
 
     [gi-demos] add pickers demo
 
- demos/gtk-demo/demos/pickers.py | 74
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/pickers.py |   74
+ +++++++++++++++++++++++++++++++++++++++
  1 file changed, 74 insertions(+)
 
 commit b8d926a458ed7d7e92719e41b5bc1c36f68882b3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 10 18:12:50 2011 -0500
+Date:  Thu Mar 10 18:12:50 2011 -0500
 
     [gi-demos] add menu demo
 
- demos/gtk-demo/demos/menus.py | 122
- ++++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/menus.py |  122
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 122 insertions(+)
 
 commit 9baec8ed1c5d99c1677a75eaa1d38912f41f0b2d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 9 13:02:50 2011 -0500
+Date:  Wed Mar 9 13:02:50 2011 -0500
 
     [gi-overrides] fix exception block so it works in Python 2.5
 
- gi/overrides/Gio.py | 5 ++++-
+ gi/overrides/Gio.py |   5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 5ac534ac3ceee3cc19fe2297e3cd009817ed726f
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Mar 21 13:19:58 2011 +0100
+Date:  Mon Mar 21 13:19:58 2011 +0100
 
     Revert "Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES"
 
@@ -24163,24 +6107,24 @@ Date:   Mon Mar 21 13:19:58 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- gi/Makefile.am    | 4 +---
- glib/Makefile.am  | 2 +-
- m4/python.m4      | 7 ++-----
- tests/Makefile.am | 2 +-
+ gi/Makefile.am    |   4 +---
+ glib/Makefile.am  |   2 +-
+ m4/python.m4     |    7 ++-----
+ tests/Makefile.am |   2 +-
  4 files changed, 5 insertions(+), 10 deletions(-)
 
 commit cd01f8ce1373f28b1427dd847bef44f747f1e6b3
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Mar 18 17:06:08 2011 +0100
+Date:  Fri Mar 18 17:06:08 2011 +0100
 
     setup.py: fix user_access_control option
 
- setup.py | 2 +-
+ setup.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2da60baec4f43c41f43527cbfde4e21e0eea728c
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Mar 16 10:22:35 2011 +0100
+Date:  Wed Mar 16 10:22:35 2011 +0100
 
     [gi] Respect the MessageType for Gtk.MessageDialog
 
@@ -24188,12 +6132,12 @@ Date:   Wed Mar 16 10:22:35 2011 +0100
     to Tualatrix
     Chou for spotting this!
 
- gi/overrides/Gtk.py | 1 +
+ gi/overrides/Gtk.py |   1 +
  1 file changed, 1 insertion(+)
 
 commit 029a79d1af1e0998aa6bc88ce1c1f48ce0ccd2a0
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 15 10:22:39 2011 +0100
+Date:  Tue Mar 15 10:22:39 2011 +0100
 
     [gi] Do not require signature for D-BUS methods without arguments
 
@@ -24212,65 +6156,64 @@ Date:   Tue Mar 15 10:22:39 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644260
 
- gi/overrides/Gio.py | 16 +++++++++++++++-
- tests/test_gdbus.py | 13 +++++++++++++
+ gi/overrides/Gio.py |  16 +++++++++++++++-
+ tests/test_gdbus.py |  13 +++++++++++++
  2 files changed, 28 insertions(+), 1 deletion(-)
 
 commit 5bf66ce79267b25bcc80251f9170498fa1d765f6
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 23:05:33 2011 +1300
+Date:  Sun Mar 6 23:05:33 2011 +1300
 
     [gi-overrides] TreeViewColumn.set_cell_data_func func_data can be None
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644343
 
- gi/overrides/Gtk.py | 2 ++
+ gi/overrides/Gtk.py |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 8e4f86e17a1de533a93b0748fd8de3cbfa70ba62
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sun Mar 6 17:48:04 2011 +1300
+Date:  Sun Mar 6 17:48:04 2011 +1300
 
     [gi-demos] dont try and run demos that represent directories
 
- demos/gtk-demo/gtk-demo.py | 3 ++-
+ demos/gtk-demo/gtk-demo.py |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 097e5efab29d3d2d91d0b9fc75bf00219e9b7810
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 7 18:09:18 2011 -0500
+Date:  Mon Mar 7 18:09:18 2011 -0500
 
     [gi-demos] some python 3 compat fixes
 
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 6 ++++++
- demos/gtk-demo/demos/Tree View/liststore.py      | 2 +-
- demos/gtk-demo/demos/rotatedtext.py              | 4 ++--
- demos/gtk-demo/gtk-demo.py                       | 4 ++--
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |    6 ++++++
+ demos/gtk-demo/demos/Tree View/liststore.py     |    2 +-
+ demos/gtk-demo/demos/rotatedtext.py             |    4 ++--
+ demos/gtk-demo/gtk-demo.py                      |    4 ++--
  4 files changed, 11 insertions(+), 5 deletions(-)
 
 commit fd5d5ef3abc947d3c6066eea6378514f87b7f0ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 22 15:07:40 2011 -0500
+Date:  Tue Feb 22 15:07:40 2011 -0500
 
     [gi-demos] add liststore demo
 
- demos/gtk-demo/demos/Tree View/__init__.py  |   0
- demos/gtk-demo/demos/Tree View/liststore.py | 205
- ++++++++++++++++++++++++++++
- 2 files changed, 205 insertions(+)
+ demos/gtk-demo/demos/Tree View/liststore.py | 205
+ +++++++++++++++++++++++++++
+ 1 file changed, 205 insertions(+)
 
 commit 09de5cf99474fc8a34b5f4a61cede1fb47353ebb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Mar 7 18:08:40 2011 -0500
+Date:  Mon Mar 7 18:08:40 2011 -0500
 
     [gi-demos] catch the correct error class
 
- demos/gtk-demo/demos/images.py | 11 ++++++-----
+ demos/gtk-demo/demos/images.py |   11 ++++++-----
  1 file changed, 6 insertions(+), 5 deletions(-)
 
 commit 7284d2d4622978fc9ddfd00f2714b3a572b7ab56
 Author: Steve Frécinaux <code@istique.net>
-Date:   Sun Mar 6 21:18:36 2011 +0100
+Date:  Sun Mar 6 21:18:36 2011 +0100
 
     Do not leak python references when using the gobject.property()
     helper.
@@ -24282,13 +6225,13 @@ Date:   Sun Mar 6 21:18:36 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644039
 
- gobject/propertyhelper.py |  5 ++---
- tests/test_properties.py  | 23 +++++++++++++++++++++++
+ gobject/propertyhelper.py |   5 ++---
+ tests/test_properties.py  |   23 +++++++++++++++++++++++
  2 files changed, 25 insertions(+), 3 deletions(-)
 
 commit 618dbb0ee15b47e5e7cb16a34ffce0937d7fa26d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 12:25:49 2011 -0500
+Date:  Fri Mar 4 12:25:49 2011 -0500
 
     handle uchar as bytes, not strings in python 3
 
@@ -24300,51 +6243,51 @@ Date:   Fri Mar 4 12:25:49 2011 -0500
     * PYGLIB_PyBytes_FromStringAndSize evaluates to a PyString in Python 2
       and a PyBytes object in Python 3
 
- gobject/pygtype.c | 2 +-
+ gobject/pygtype.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7e9483ff75b7a63ddda0fa9a9847f9f22ad71240
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 12:24:35 2011 -0500
+Date:  Fri Mar 4 12:24:35 2011 -0500
 
     [gi-overrides] handle unichar gvalues when setting treemodels
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 6367bffa006e94dc667d7008fccad8d47d8d3646
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 11:43:51 2011 -0500
+Date:  Fri Mar 4 11:43:51 2011 -0500
 
     [gi-overrides] special case python 2 keywords that crept in
 
- gi/overrides/Gtk.py     | 6 +++++-
- tests/test_overrides.py | 8 ++++----
+ gi/overrides/Gtk.py    |    6 +++++-
+ tests/test_overrides.py |    8 ++++----
  2 files changed, 9 insertions(+), 5 deletions(-)
 
 commit 83b0f8a37d5f3236780d87a1ca466c5e44ae2bc0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 11:10:16 2011 -0500
+Date:  Fri Mar 4 11:10:16 2011 -0500
 
     check for the py3 _thread module in configure.ac if thread is
     not found
 
- configure.ac | 6 +++++-
+ configure.ac |    6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 4645af87d3c587f535404867dab56608719e5c7b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Mar 4 00:39:23 2011 -0500
+Date:  Fri Mar 4 00:39:23 2011 -0500
 
     [gi-demos] add iconview demo
 
- demos/gtk-demo/demos/Icon View/iconviewbasics.py | 212
- +++++++++++++++++++++++
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py |  212
+ ++++++++++++++++++++++
  1 file changed, 212 insertions(+)
 
 commit 761dcb516a04f7a89b3c7d68e88fff23055e2a80
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 18:39:16 2011 -0500
+Date:  Thu Mar 3 18:39:16 2011 -0500
 
     [gi] wrap the keyword argument in a dict so we don't break Python 2.5
 
@@ -24352,97 +6295,97 @@ Date:   Thu Mar 3 18:39:16 2011 -0500
     sending in
       *args.  You can only send in **kwds.
 
- gi/types.py | 2 +-
+ gi/types.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f9604e90af12a1b9dbe7d7f311308e87cd0ed7dd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 18:30:40 2011 -0500
+Date:  Thu Mar 3 18:30:40 2011 -0500
 
     [gi-demos] add the combobox with string ids section to the demos
 
- demos/gtk-demo/demos/combobox.py | 49
- +++++++++++++++++++++++++++++++++++++++-
+ demos/gtk-demo/demos/combobox.py |   49
+ +++++++++++++++++++++++++++++++++++++-
  1 file changed, 48 insertions(+), 1 deletion(-)
 
 commit b70f4daf071cf77a4561b57f5521eb928f66d1ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 16:47:51 2011 -0500
+Date:  Thu Mar 3 16:47:51 2011 -0500
 
     [gi-overrides] add an override for Gdk.RGBA
 
- gi/overrides/Gdk.py     | 18 ++++++++++++++++++
- tests/test_overrides.py | 10 ++++++++++
+ gi/overrides/Gdk.py    |   18 ++++++++++++++++++
+ tests/test_overrides.py |   10 ++++++++++
  2 files changed, 28 insertions(+)
 
 commit ee2b63f60f350332ed21927721ed9ddff3a8034e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Mar 3 16:10:17 2011 -0500
+Date:  Thu Mar 3 16:10:17 2011 -0500
 
     [gi-demos] fix up search-entry to reflect annotations fixed in Gtk+
     master
 
- demos/gtk-demo/demos/Entry/search_entry.py | 23 +++++++++--------------
+ demos/gtk-demo/demos/Entry/search_entry.py |  23 +++++++++--------------
  1 file changed, 9 insertions(+), 14 deletions(-)
 
 commit cd046e4c355706ead5f512b810a2a48317f8c32e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 2 18:13:43 2011 -0500
+Date:  Wed Mar 2 18:13:43 2011 -0500
 
     [gi-demos] add search entry demo
 
- demos/gtk-demo/demos/Entry/search_entry.py | 257
- +++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/Entry/search_entry.py |  257
+ ++++++++++++++++++++++++++++
  1 file changed, 257 insertions(+)
 
 commit d5ddaa92e6349c2f52b67317326060973cb69661
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Mar 2 15:37:27 2011 -0500
+Date:  Wed Mar 2 15:37:27 2011 -0500
 
     [gi] wrap map in a list for Python 3 compat
 
- gi/types.py | 2 +-
+ gi/types.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3e5ab72a2e1fa2d8c4c2864137c6251f264ff4af
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 1 14:52:00 2011 -0500
+Date:  Tue Mar 1 14:52:00 2011 -0500
 
     [gi-demos] fix up the validation combobox
 
- demos/gtk-demo/demos/combobox.py | 21 +++++++++++++++------
+ demos/gtk-demo/demos/combobox.py |   21 +++++++++++++++------
  1 file changed, 15 insertions(+), 6 deletions(-)
 
 commit 08af5f99f0838b3584f6a3b210d0a0304811e8ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Mar 1 12:31:35 2011 -0500
+Date:  Tue Mar 1 12:31:35 2011 -0500
 
     add overridesdir variable in the .pc file for 3rd party overrides
 
- pygobject-2.0.pc.in | 1 +
+ pygobject-2.0.pc.in |   1 +
  1 file changed, 1 insertion(+)
 
 commit 4a6b14a92a687a2311516b2c16c355216b5270a7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Feb 11 17:14:11 2011 +0100
+Date:  Fri Feb 11 17:14:11 2011 +0100
 
     setup.py: Set bdist_wininst user-access-control property
 
- setup.py | 3 ++-
+ setup.py |    3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit ad3ab659b83cb985730e19a83651da319d4bcb9c
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Mar 2 16:29:00 2011 +0100
+Date:  Wed Mar 2 16:29:00 2011 +0100
 
     Fix uninitialized variable in gi.require_version()
 
- gi/__init__.py | 3 ++-
+ gi/__init__.py |    3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 6e7606ee8830f6f51b777f41f6df2f6ea1784e89
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Mar 1 23:26:07 2011 +0100
+Date:  Tue Mar 1 23:26:07 2011 +0100
 
     Run tests with LC_MESSAGES="C"
 
@@ -24451,32 +6394,32 @@ Date:   Tue Mar 1 23:26:07 2011 +0100
     visible strings. Ensure that these do not get translated in the
     test suite.
 
- tests/runtests.py | 2 ++
+ tests/runtests.py |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 0461e05174637ae02f34029b85ba217d5ae48c53
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 18:21:43 2011 -0500
+Date:  Mon Feb 28 18:21:43 2011 -0500
 
     [gi-overrides] override Gtk.stock_lookup to not return success
 
- demos/gtk-demo/demos/combobox.py | 2 +-
- gi/overrides/Gtk.py              | 9 +++++++++
+ demos/gtk-demo/demos/combobox.py |    2 +-
+ gi/overrides/Gtk.py             |    9 +++++++++
  2 files changed, 10 insertions(+), 1 deletion(-)
 
 commit 40decf3501823004a6e4d3acbbf204c4d4d0a7ec
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 14:16:00 2011 -0500
+Date:  Mon Feb 28 14:16:00 2011 -0500
 
     update NEWS to reflect changes in the 2.27.91 release (PYGOBJECT_2_28
     branch)
 
- NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 50 insertions(+)
 
 commit c2d5122b8e3cf51ec52418f90f1788895b842b6a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 28 14:08:05 2011 -0500
+Date:  Mon Feb 28 14:08:05 2011 -0500
 
     [gi-tests] use Gdk.test_simulate_button instead of emitting event
     ourselves
@@ -24485,12 +6428,12 @@ Date:   Mon Feb 28 14:08:05 2011 -0500
      use this
        instead of creating our own button press event
 
- tests/test_overrides.py | 9 +++++----
+ tests/test_overrides.py |    9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 1be1a2ea2787dffeb71ab4a38233fb71e761bd21
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 24 19:30:32 2011 +0100
+Date:  Thu Feb 24 19:30:32 2011 +0100
 
     [gi-tests] tests for EventButton override.
 
@@ -24499,24 +6442,24 @@ Date:   Thu Feb 24 19:30:32 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- tests/test_overrides.py | 21 +++++++++++++++++++++
+ tests/test_overrides.py |   21 +++++++++++++++++++++
  1 file changed, 21 insertions(+)
 
 commit 99044a4860dd65c97f52b41b7cd3f216f4a97cd4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 18:43:27 2011 -0500
+Date:  Wed Feb 23 18:43:27 2011 -0500
 
     [gi-overrides] Add event methods to all event union members
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/overrides/Gdk.py | 70
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gdk.py |  70
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 70 insertions(+)
 
 commit 6e30c69d38fd382414eb820097c297a80be547ac
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 14:14:16 2011 -0500
+Date:  Wed Feb 23 14:14:16 2011 -0500
 
     [gi] check to see if object is a member of a union when validating
     paramaters
@@ -24536,36 +6479,36 @@ Date:   Wed Feb 23 14:14:16 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/pygi-argument.c | 38 ++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c |  38 ++++++++++++++++++++++++++++++++++++++
  1 file changed, 38 insertions(+)
 
 commit 525f21d1365c24488b768955362085bf82512dee
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Feb 16 09:44:12 2011 +0100
+Date:  Wed Feb 16 09:44:12 2011 +0100
 
     Skip interfaces when checking for conflicts in the MRO
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642437
 
- gi/types.py             | 40 ++++++++++++++++++++++++++++++++++++++++
- gobject/gobjectmodule.c |  9 +++++++--
- tests/test_gi.py        | 16 ++++++++++++++++
+ gi/types.py            |   40 ++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c |    9 +++++++--
+ tests/test_gi.py       |   16 ++++++++++++++++
  3 files changed, 63 insertions(+), 2 deletions(-)
 
 commit da212024772a7a0c32f04f3589bfb24d2eb5706f
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 24 18:46:15 2011 +0100
+Date:  Thu Feb 24 18:46:15 2011 +0100
 
     [gi] Remove DyanmicModule.load() to _load() to prevent overriding
     GI attrs.
 
- gi/importer.py | 2 +-
- gi/module.py   | 2 +-
+ gi/importer.py |    2 +-
+ gi/module.py  |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 2ce6b58c7427cf67ba4f55731ba0a4c04703e495
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 12:05:03 2011 +0100
+Date:  Wed Feb 23 12:05:03 2011 +0100
 
     Test case with John's fix for crash with C arrays and a GError is set.
 
@@ -24577,69 +6520,69 @@ Date:   Wed Feb 23 12:05:03 2011 +0100
 
      * This is a hack and there is really no way around it without
      ripping out
-        the current array handling code which spans between pygi-invoke.c
-        and
-        pygi-argument.c and completely rewriting it.
+       the current array handling code which spans between pygi-invoke.c
+       and
+       pygi-argument.c and completely rewriting it.
       * The is no time before our stable release
       * This patch trades a segfault for a leak in the very unusual
       case where
-        an error occures inside an interface that takes one or more C
-        arrays. Since
-        we wrap C arrays in GArrays internally but have to unwrap them
-        to send them
-        to the introspected C function, there is a period of time where
-        an error
-        can occure with the C array in an unknown state (some being true
-        C arrays
-        and others still wrapped in a GArray)
+       an error occures inside an interface that takes one or more C
+       arrays. Since
+       we wrap C arrays in GArrays internally but have to unwrap them
+       to send them
+       to the introspected C function, there is a period of time where
+       an error
+       can occure with the C array in an unknown state (some being true
+       C arrays
+       and others still wrapped in a GArray)
       * This patch adds a c_arrays_are_wrapped state to signal that it
       is safe to
-        free them.  However since c_arrays_are_wrapped can only track
-        arrays
-        as a group, not individually, if it is set to FALSE we can
-        not assume
-        that every array is a pure C array, so instead we will simply
-        leak them
-        to avoid incorrectly freeing one and causing a segfault.
+       free them.  However since c_arrays_are_wrapped can only track
+       arrays
+       as a group, not individually, if it is set to FALSE we can
+       not assume
+       that every array is a pure C array, so instead we will simply
+       leak them
+       to avoid incorrectly freeing one and causing a segfault.
       * This issue is fixed in the invoke rewrite branch as it treats
       C arrays and
-        GArrays separately, however that branch is not yet ready to be
-        merged and
-        won't be until the next release.
+       GArrays separately, however that branch is not yet ready to be
+       merged and
+       won't be until the next release.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642708
 
- gi/pygi-invoke.c | 54
+ gi/pygi-invoke.c |   54
  ++++++++++++++++++++++++++++++++++++++++++++++++++----
- tests/test_gi.py |  9 +++++++++
+ tests/test_gi.py |    9 +++++++++
  2 files changed, 59 insertions(+), 4 deletions(-)
 
 commit 702a89beca92cab6b0142829b20281b9245f28b8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 23 15:11:59 2011 -0500
+Date:  Wed Feb 23 15:11:59 2011 -0500
 
     [gi-overrides] fix setting rows in treeview to accept None as a value
 
      * as done in PyGTK None indicates the column should not be set
 
- gi/overrides/Gtk.py     |  3 +++
- tests/test_overrides.py | 18 +++++++++++++-----
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |   18 +++++++++++++-----
  2 files changed, 16 insertions(+), 5 deletions(-)
 
 commit 498f0d9c903131aca5efe27ffaad7620e40f72ea
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 14:23:19 2011 +0100
+Date:  Wed Feb 23 14:23:19 2011 +0100
 
     [gi] Add value_name for enum and flags from introspection
     "c:identifier" (if attr is available).
 
- gi/gimodule.c    | 22 ++++++++++++++++++----
- tests/test_gi.py | 36 ++++++++++++++++++++++++++++++++++++
+ gi/gimodule.c   |   22 ++++++++++++++++++----
+ tests/test_gi.py |   36 ++++++++++++++++++++++++++++++++++++
  2 files changed, 54 insertions(+), 4 deletions(-)
 
 commit 824aeb7fab17d6590e5babf2d1f64298f2d0e16b
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Feb 23 11:40:55 2011 +0100
+Date:  Wed Feb 23 11:40:55 2011 +0100
 
     Fix flags with multiple names for the same value.
 
@@ -24652,12 +6595,12 @@ Date:   Wed Feb 23 11:40:55 2011 +0100
     of duplicate instances we keep, because if an instance is not
     found in the dict, a new one is created anyway.
 
- gobject/pygflags.c | 2 +-
+ gobject/pygflags.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3afbebeee486e14fd3f48552368903eb78f6b10c
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Feb 22 21:37:33 2011 +0100
+Date:  Tue Feb 22 21:37:33 2011 +0100
 
     Don't force loading of DynamicModule until set in sys.modules
 
@@ -24667,12 +6610,12 @@ Date:   Tue Feb 22 21:37:33 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642305
 
- gi/importer.py | 2 +-
+ gi/importer.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2a9cbfb435b47dc646e2c6ffe630464b560229a6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 21 17:20:57 2011 -0500
+Date:  Mon Feb 21 17:20:57 2011 -0500
 
     use GValue support to marshal GtkTreeModel values correctly
 
@@ -24680,14 +6623,14 @@ Date:   Mon Feb 21 17:20:57 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642921
 
- gi/overrides/Gtk.py     | 37 ++++++++++++++++++---
- tests/test_overrides.py | 87
- +++++++++++++++++++++++++++++++++++++++++--------
+ gi/overrides/Gtk.py    |   37 +++++++++++++++++---
+ tests/test_overrides.py |   87
+ ++++++++++++++++++++++++++++++++++++++++-------
  2 files changed, 107 insertions(+), 17 deletions(-)
 
 commit 9e4ce7dc0f03ea407654c4af028122f57cbc4c5e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 21 16:14:20 2011 -0500
+Date:  Mon Feb 21 16:14:20 2011 -0500
 
     [gi] pass raw GValues instead of trying to marshal them
 
@@ -24700,9 +6643,9 @@ Date:   Mon Feb 21 16:14:20 2011 -0500
        the raw GValue interfaces and expect paramaters that take
        GValues to
        marshal them correctly e.g.:
-           value = GObject.Value()
-           value.int(GObject.TYPE_UINT)
-           value.set_uint(1234)
+          value = GObject.Value()
+          value.int(GObject.TYPE_UINT)
+          value.set_uint(1234)
      * The objective here is to not for users to use this API but for
      overrides
        to be able to utilize them.  For instance in the TreeModel API
@@ -24713,34 +6656,33 @@ Date:   Mon Feb 21 16:14:20 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642914
 
- gi/pygi-argument.c | 24 ++++++++++++++++++------
- tests/test_gi.py   |  9 ++++++++-
+ gi/pygi-argument.c |  24 ++++++++++++++++++------
+ tests/test_gi.py   |   9 ++++++++-
  2 files changed, 26 insertions(+), 7 deletions(-)
 
 commit b458f6f3424a04f6ceece09d443009372d70544c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Feb 19 19:42:41 2011 -0500
+Date:  Sat Feb 19 19:42:41 2011 -0500
 
     [gi-demos] add icon view edit and drag-and-drop demo
 
- demos/gtk-demo/demos/Icon View/__init__.py     |   0
- demos/gtk-demo/demos/Icon View/iconviewedit.py | 101
- +++++++++++++++++++++++++
- 2 files changed, 101 insertions(+)
+ demos/gtk-demo/demos/Icon View/iconviewedit.py |  101
+ ++++++++++++++++++++++++
+ 1 file changed, 101 insertions(+)
 
 commit 7b47289e25d1dd57ce15556ccfbb3ede1c4bfe8b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Feb 19 17:26:42 2011 -0500
+Date:  Sat Feb 19 17:26:42 2011 -0500
 
     [gi-demos] add info bars demo
 
- demos/gtk-demo/demos/infobars.py | 99
- ++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/infobars.py |   99
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 99 insertions(+)
 
 commit 76758efb6579752237a0dc4d56cf9518de6c6e55
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Feb 16 11:53:18 2011 +0100
+Date:  Wed Feb 16 11:53:18 2011 +0100
 
     Load typelibs at import time, add gi.require_version()
 
@@ -24748,15 +6690,15 @@ Date:   Wed Feb 16 11:53:18 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642305
 
- gi/__init__.py       | 29 ++++++++++++++++++++++++++++-
- gi/importer.py       |  1 +
- gi/module.py         | 21 ++++-----------------
- gi/pygi-repository.c | 23 +++++++++++++++++++++++
+ gi/__init__.py       |   29 ++++++++++++++++++++++++++++-
+ gi/importer.py       |    1 +
+ gi/module.py        |   21 ++++-----------------
+ gi/pygi-repository.c |   23 +++++++++++++++++++++++
  4 files changed, 56 insertions(+), 18 deletions(-)
 
 commit 96f7d1aed732db09a74cd463ed894b7347dbcb15
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Sat Feb 19 23:11:25 2011 +0100
+Date:  Sat Feb 19 23:11:25 2011 +0100
 
     [gi] Register GType for non-GType enums and flags at runtime.
 
@@ -24773,18 +6715,18 @@ Date:   Sat Feb 19 23:11:25 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642607
 
- gi/gimodule.c      | 117
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/module.py       |  24 ++++++-----
- gi/pygi-info.c     |  15 +++++++
- gi/types.py        |  16 --------
- gobject/pygflags.c |  13 ++++--
- tests/test_gi.py   |  35 ++++++++++++++++
+ gi/gimodule.c      117
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/module.py      |   24 +++++++----
+ gi/pygi-info.c     |  15 +++++++
+ gi/types.py       |   16 -------
+ gobject/pygflags.c |  13 ++++--
+ tests/test_gi.py   |  35 ++++++++++++++++
  6 files changed, 191 insertions(+), 29 deletions(-)
 
 commit 63a60bcc20e724f96ea8d565ee0cf13a228b72b9
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Feb 8 15:38:21 2011 +0100
+Date:  Tue Feb 8 15:38:21 2011 +0100
 
     [gi] Add Pythonic gdbus method invocation
 
@@ -24804,15 +6746,15 @@ Date:   Tue Feb 8 15:38:21 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640181
 
- gi/overrides/Gio.py |  99
- ++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gdbus.py | 102
- ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gio.py |  99
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gdbus.py | 102
+ ++++++++++++++++++++++++++++++++++++++++++++++++++-
  2 files changed, 199 insertions(+), 2 deletions(-)
 
 commit ed5cdbb6f52bdbd13521a814516b15687955d6f7
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Fri Feb 18 22:48:59 2011 +0100
+Date:  Fri Feb 18 22:48:59 2011 +0100
 
     Skip GError out parameters in Python closure.
 
@@ -24823,119 +6765,119 @@ Date:   Fri Feb 18 22:48:59 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642715
 
- gi/pygi-closure.c | 8 ++++++++
+ gi/pygi-closure.c |   8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 5a5ee3877e22939a697772a7f0630ef8cae3d52f
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Fri Feb 18 10:15:59 2011 +0100
+Date:  Fri Feb 18 10:15:59 2011 +0100
 
     Fix runtests.py to work with Python3 (print function syntax error).
 
- tests/runtests.py | 2 +-
+ tests/runtests.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit ad5d3fccff9433e2dadac89d731dac5cafb0eac3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 19:46:49 2011 -0500
+Date:  Thu Feb 17 19:46:49 2011 -0500
 
     [gi-demos] added rotate text demo
 
     * needs some Pango Attr fixes to be 100% done, See FIXME
 
- demos/gtk-demo/demos/rotatedtext.py | 196
- ++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/rotatedtext.py | 196
+ +++++++++++++++++++++++++++++++++++
  1 file changed, 196 insertions(+)
 
 commit 9ac11c3c3b1c0399c85ece57c0983ed60d419d7a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 17:25:00 2011 -0500
+Date:  Thu Feb 17 17:25:00 2011 -0500
 
     [gi-demos] add images demo
 
      * needs annotation fix from GdkPixbuf for ImageLoader to work
 
- demos/gtk-demo/demos/images.py | 311
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/images.py |  311
+ ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 311 insertions(+)
 
 commit 13b06170b89b3468e6255be32af4833ffc675c9d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 14:48:24 2011 -0500
+Date:  Thu Feb 17 14:48:24 2011 -0500
 
     [gi-demos] add pixbuf demo
 
- demos/gtk-demo/demos/pixbuf.py | 183
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/pixbuf.py |  183
+ ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 183 insertions(+)
 
 commit 7abcfd5b4db99bb0f50c5a47d346a2de3836f994
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 17 14:47:12 2011 -0500
+Date:  Thu Feb 17 14:47:12 2011 -0500
 
     [gi-demos] remove fixmes from print demo, fixed in pango
 
- demos/gtk-demo/demos/printing.py | 10 +++-------
+ demos/gtk-demo/demos/printing.py |   10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 9b13f49356da7d71c69b82da2a59d92f456a6913
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 19:39:30 2011 -0500
+Date:  Wed Feb 16 19:39:30 2011 -0500
 
     [gi-demos] add printing demo
 
     * needs some annotations for pango before it is 100% useful
 
- demos/gtk-demo/demos/printing.py | 177
- +++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/printing.py |  177
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 177 insertions(+)
 
 commit 6025b62ee662af347e48b6752e6d5be74b4a8215
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 17:52:38 2011 -0500
+Date:  Wed Feb 16 17:52:38 2011 -0500
 
     [gi-overrides] add cursor overrides
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635947
 
- gi/overrides/Gdk.py     | 41 +++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 23 +++++++++++++++++++++++
+ gi/overrides/Gdk.py    |   41 +++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   23 +++++++++++++++++++++++
  2 files changed, 64 insertions(+)
 
 commit 03c0aa498470037ef2aa6a8233198ff521f8d42f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 16:18:24 2011 -0500
+Date:  Wed Feb 16 16:18:24 2011 -0500
 
     [gi-demos] add the links demo
 
- demos/gtk-demo/demos/links.py | 74
- +++++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/links.py |   74
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 74 insertions(+)
 
 commit 79ecddf8d54b3f4f8b5ef05d302675152622c832
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 15:48:40 2011 -0500
+Date:  Wed Feb 16 15:48:40 2011 -0500
 
     [gi-demos] add expander demo
 
- demos/gtk-demo/demos/expander.py | 60
- ++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/expander.py |   60
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 60 insertions(+)
 
 commit 76cdb13ab872f91f8384d26b0f2932087a746117
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 16 15:14:35 2011 -0500
+Date:  Wed Feb 16 15:14:35 2011 -0500
 
     [gi-overrides] use pop instead of del and add extra tests for
     Gtk.Table kwargs
 
- gi/overrides/Gtk.py     | 6 ++----
- tests/test_overrides.py | 8 ++++++++
+ gi/overrides/Gtk.py    |    6 ++----
+ tests/test_overrides.py |    8 ++++++++
  2 files changed, 10 insertions(+), 4 deletions(-)
 
 commit 6ef83c049735689c42f085ca9d7b8e1f251c410f
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Feb 15 20:07:42 2011 +0100
+Date:  Tue Feb 15 20:07:42 2011 +0100
 
     [tests] Separate processes for GI and static binding tests.
 
@@ -24950,60 +6892,60 @@ Date:   Tue Feb 15 20:07:42 2011 +0100
     so that make does not continue. Otherwise you might miss the
     failures from the first batch of tests in the scrollback.
 
- tests/Makefile.am | 19 +++++++++++--------
- tests/runtests.py |  4 +++-
+ tests/Makefile.am |   19 +++++++++++--------
+ tests/runtests.py |   4 +++-
  2 files changed, 14 insertions(+), 9 deletions(-)
 
 commit e0896b45f60f37097ec521f1bc38778383b78dd8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 14:47:10 2011 -0500
+Date:  Tue Feb 15 14:47:10 2011 -0500
 
     [gi-demos] add dialogs demo
 
- demos/gtk-demo/demos/dialogs.py | 153
- ++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/dialogs.py |  153
+ +++++++++++++++++++++++++++++++++++++++
  1 file changed, 153 insertions(+)
 
 commit 2dea743e82f6b18697950c34f116b2d0f1d6b1dd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 14:46:41 2011 -0500
+Date:  Tue Feb 15 14:46:41 2011 -0500
 
     [gi-overrides] fix typo in GtkTable constructor
 
- gi/overrides/Gtk.py | 8 ++++----
+ gi/overrides/Gtk.py |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 9c277e1782c5a9d672d91fabf5289c5415891682
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:26:38 2011 -0500
+Date:  Tue Feb 15 13:26:38 2011 -0500
 
     [gi-demos] keep popup menu from destroying itself by holding a ref
     in app class
 
- demos/gtk-demo/demos/clipboard.py | 8 ++++----
+ demos/gtk-demo/demos/clipboard.py |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 18800c4db0e1faea38fd84f635d26a7ded5d10de
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:25:13 2011 -0500
+Date:  Tue Feb 15 13:25:13 2011 -0500
 
     [gi-overrides] add a Gtk.Menu override for the popup method
 
- gi/overrides/Gtk.py | 7 +++++++
+ gi/overrides/Gtk.py |   7 +++++++
  1 file changed, 7 insertions(+)
 
 commit ad93386ba9f73ef4c3826544b3868cf03c01225e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 13:24:33 2011 -0500
+Date:  Tue Feb 15 13:24:33 2011 -0500
 
     [gi-demos] fix the about dialog in appwindow demo
 
- demos/gtk-demo/demos/appwindow.py | 22 +++++++++-------------
+ demos/gtk-demo/demos/appwindow.py |   22 +++++++++-------------
  1 file changed, 9 insertions(+), 13 deletions(-)
 
 commit d0c45c80974f05b6adfd3bb01d785be268a53a98
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 11:21:13 2011 -0500
+Date:  Tue Feb 15 11:21:13 2011 -0500
 
     [gi-demos] fix clipboard demo so DnD works
 
@@ -25011,43 +6953,43 @@ Date:   Tue Feb 15 11:21:13 2011 -0500
     a destroy
       notify
 
- demos/gtk-demo/demos/clipboard.py | 20 ++++++++++----------
+ demos/gtk-demo/demos/clipboard.py |   20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)
 
 commit 02d0327508234ab2e3b7dc6de506d70e6fcaaa17
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Feb 15 10:18:53 2011 -0500
+Date:  Tue Feb 15 10:18:53 2011 -0500
 
     [gi-demos] fix clipboard demo to reflect new API
 
- demos/gtk-demo/demos/clipboard.py | 6 +++---
+ demos/gtk-demo/demos/clipboard.py |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit aa006cad6990eff0cbb68fa9550e428f2bc96473
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 18:17:20 2011 -0500
+Date:  Mon Feb 14 18:17:20 2011 -0500
 
     [gi-demo] Fix color dialog demo to run with new draw, style and
     color apis
 
- demos/gtk-demo/demos/colorselector.py | 44
- ++++++++++++++---------------------
+ demos/gtk-demo/demos/colorselector.py |   44
+ +++++++++++++--------------------
  1 file changed, 17 insertions(+), 27 deletions(-)
 
 commit f94a96c53e9432ac085bd05acee7ebdd2803fbad
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 17:58:25 2011 -0500
+Date:  Mon Feb 14 17:58:25 2011 -0500
 
     [gi-demos] fix most of the combobox app
 
     * Still having some issues with filtering the ComboBoxText widget
 
- demos/gtk-demo/demos/combobox.py | 17 ++++++++---------
+ demos/gtk-demo/demos/combobox.py |   17 ++++++++---------
  1 file changed, 8 insertions(+), 9 deletions(-)
 
 commit 3606eb20ad1651af621bf1aa429ec102082565eb
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Mon Feb 14 19:36:27 2011 +0100
+Date:  Mon Feb 14 19:36:27 2011 +0100
 
     Use PyGI type conversion (to fix foreign types) for signal callbacks.
 
@@ -25056,31 +6998,31 @@ Date:   Mon Feb 14 19:36:27 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637601
 
- gi/Makefile.am           |   2 +
- gi/gimodule.c            |   1 +
- gi/pygi-argument.c       |  91 ++++++++++++++++++
- gi/pygi-argument.h       |   2 +
- gi/pygi-private.h        |   1 +
- gi/pygi-signal-closure.c | 245
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-signal-closure.h |  46 +++++++++
- gi/pygi.h                |  28 ++++++
- gobject/pygobject.c      |  24 ++++-
+ gi/Makefile.am                  |    2 +
+ gi/gimodule.c              1 +
+ gi/pygi-argument.c      |   91 +++++++++++++++++
+ gi/pygi-argument.h         2 +
+ gi/pygi-private.h          1 +
+ gi/pygi-signal-closure.c |  245
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-signal-closure.h |   46 +++++++++
+ gi/pygi.h                 28 ++++++
+ gobject/pygobject.c       24 ++++-
  9 files changed, 436 insertions(+), 4 deletions(-)
 
 commit 2e39d5e8f96be2253acb2f34a0d0b5b9c9adb8ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 16:47:03 2011 -0500
+Date:  Mon Feb 14 16:47:03 2011 -0500
 
     [gi-demos] fix drawingarea app to use the new draw api
 
- demos/gtk-demo/demos/drawingarea.py | 144
- +++++++++++++-----------------------
+ demos/gtk-demo/demos/drawingarea.py | 144
+ ++++++++++++-----------------------
  1 file changed, 50 insertions(+), 94 deletions(-)
 
 commit 8385afbbc5df295d9b7cd3b5d19c90faa1f7ea8e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 16:43:35 2011 -0500
+Date:  Mon Feb 14 16:43:35 2011 -0500
 
     [gi-overrides] for Gtk 3 alias Gdk.Rectangle to cairo.RectangleInt
 
@@ -25089,12 +7031,12 @@ Date:   Mon Feb 14 16:43:35 2011 -0500
       bindings
     * we alias this so people do not get confused
 
- gi/overrides/Gdk.py | 5 +++++
+ gi/overrides/Gdk.py |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit d491c369e049ab726f09002af0462391d5c2f3ec
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:07:11 2011 -0500
+Date:  Mon Feb 14 15:07:11 2011 -0500
 
     [gi-overrides] let user set the proper property names in Gtk.Table
 
@@ -25104,100 +7046,100 @@ Date:   Mon Feb 14 15:07:11 2011 -0500
     * The GTK properties are n_columns and n_rows
     * support both
 
- gi/overrides/Gtk.py | 8 ++++++++
+ gi/overrides/Gtk.py |   8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 95bc2b2b025d659725d701c3b759c0c4d9681a36
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:06:38 2011 -0500
+Date:  Mon Feb 14 15:06:38 2011 -0500
 
     [gi-demos] get appwindow demo working again
 
- demos/gtk-demo/demos/appwindow.py | 24 ++++--------------------
+ demos/gtk-demo/demos/appwindow.py |   24 ++++--------------------
  1 file changed, 4 insertions(+), 20 deletions(-)
 
 commit 015185f502c498c21cb108d3bb288c5b6dbf202f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Feb 14 15:05:44 2011 -0500
+Date:  Mon Feb 14 15:05:44 2011 -0500
 
     [gi-demos] fixed use of tree_iter_get
 
- demos/gtk-demo/gtk-demo.py | 2 +-
+ demos/gtk-demo/gtk-demo.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0c20977e4598e5447dd07c069e91226efacb1160
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Fri Feb 11 22:02:03 2011 +0100
+Date:  Fri Feb 11 22:02:03 2011 +0100
 
     Remove last GIO-related bits
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- PKG-INFO.in                     |  2 +-
- README                          |  3 +-
- configure.ac                    |  3 --
- examples/gio/directory-async.py | 33 ------------------
- examples/gio/downloader.py      | 77
- -----------------------------------------
- pygobject.doap                  |  2 +-
+ PKG-INFO.in                    |    2 +-
+ README                                 |    3 +-
+ configure.ac                   |    3 --
+ examples/gio/directory-async.py |   33 -----------------
+ examples/gio/downloader.py     |   77
+ ---------------------------------------
+ pygobject.doap                         |    2 +-
  6 files changed, 3 insertions(+), 117 deletions(-)
 
 commit e4ebbd7de5570af1abf41bdf9469d4ce3edd48cb
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Fri Feb 11 18:38:27 2011 +0100
+Date:  Fri Feb 11 18:38:27 2011 +0100
 
     Remove GIO documentation
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- docs/Makefile.am                              |   82 +-
- docs/reference/pygio-appinfo.xml              |  894 -----
+ docs/Makefile.am                             |   82 +-
+ docs/reference/pygio-appinfo.xml             |  894 -----
  docs/reference/pygio-applaunchcontext.xml     |  194 --
- docs/reference/pygio-asyncresult.xml          |  117 -
+ docs/reference/pygio-asyncresult.xml         |  117 -
  docs/reference/pygio-bufferedinputstream.xml  |  461 ---
  docs/reference/pygio-bufferedoutputstream.xml |  275 --
- docs/reference/pygio-cancellable.xml          |  290 --
- docs/reference/pygio-classes.xml              |   47 -
- docs/reference/pygio-constants.xml            | 1540 ---------
+ docs/reference/pygio-cancellable.xml         |  290 --
+ docs/reference/pygio-classes.xml             |   47 -
+ docs/reference/pygio-constants.xml           | 1540 ---------
  docs/reference/pygio-datainputstream.xml      |  799 -----
  docs/reference/pygio-dataoutputstream.xml     |  504 ---
- docs/reference/pygio-drive.xml                |  546 ---
- docs/reference/pygio-emblem.xml               |  232 --
- docs/reference/pygio-emblemedicon.xml         |  160 -
- docs/reference/pygio-file.xml                 | 4534
+ docs/reference/pygio-drive.xml                       |  546 ---
+ docs/reference/pygio-emblem.xml              |  232 --
+ docs/reference/pygio-emblemedicon.xml        |  160 -
+ docs/reference/pygio-file.xml                | 4534
  -------------------------
  docs/reference/pygio-fileattributeinfo.xml    |   73 -
  docs/reference/pygio-fileenumerator.xml       |  488 ---
- docs/reference/pygio-fileicon.xml             |  109 -
- docs/reference/pygio-fileinfo.xml             |  346 --
+ docs/reference/pygio-fileicon.xml            |  109 -
+ docs/reference/pygio-fileinfo.xml            |  346 --
  docs/reference/pygio-fileinputstream.xml      |  214 --
- docs/reference/pygio-filemonitor.xml          |  128 -
+ docs/reference/pygio-filemonitor.xml         |  128 -
  docs/reference/pygio-fileoutputstream.xml     |  257 --
  docs/reference/pygio-filterinputstream.xml    |  152 -
  docs/reference/pygio-filteroutputstream.xml   |  152 -
- docs/reference/pygio-functions.xml            |  395 ---
- docs/reference/pygio-icon.xml                 |  217 --
- docs/reference/pygio-inputstream.xml          |  730 ----
- docs/reference/pygio-loadableicon.xml         |  198 --
+ docs/reference/pygio-functions.xml           |  395 ---
+ docs/reference/pygio-icon.xml                |  217 --
+ docs/reference/pygio-inputstream.xml         |  730 ----
+ docs/reference/pygio-loadableicon.xml        |  198 --
  docs/reference/pygio-memoryinputstream.xml    |  151 -
  docs/reference/pygio-memoryoutputstream.xml   |  175 -
- docs/reference/pygio-mount.xml                |  962 ------
+ docs/reference/pygio-mount.xml                       |  962 ------
  docs/reference/pygio-mountoperation.xml       |  726 ----
- docs/reference/pygio-outputstream.xml         |  140 -
- docs/reference/pygio-seekable.xml             |  231 --
+ docs/reference/pygio-outputstream.xml        |  140 -
+ docs/reference/pygio-seekable.xml            |  231 --
  docs/reference/pygio-simpleasyncresult.xml    |  317 --
- docs/reference/pygio-themedicon.xml           |  204 --
+ docs/reference/pygio-themedicon.xml          |  204 --
  docs/reference/pygio-unixinputstream.xml      |  202 --
  docs/reference/pygio-unixoutputstream.xml     |  202 --
- docs/reference/pygio-volume.xml               |  718 ----
+ docs/reference/pygio-volume.xml              |  718 ----
  docs/reference/pygio-volumemonitor.xml        |  844 -----
- docs/reference/pygiounix-classes.xml          |   13 -
- docs/reference/pygobject-ref.xml              |    2 -
+ docs/reference/pygiounix-classes.xml         |   13 -
+ docs/reference/pygobject-ref.xml             |    2 -
  42 files changed, 1 insertion(+), 19020 deletions(-)
 
 commit abdebc7f6515f9658812c0355d8ad0892e5371e4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Feb 11 11:05:04 2011 -0500
+Date:  Fri Feb 11 11:05:04 2011 -0500
 
     bump version to reflect the master branch moving towards pygobject 3.0
 
@@ -25206,36 +7148,36 @@ Date:   Fri Feb 11 11:05:04 2011 -0500
     * this branch will drop support for the static binding
     * use the pygobject-2-28 branch for static binding fixes
 
- NEWS         | 289
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- configure.ac |   4 +-
+ NEWS         289
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac |    4 +-
  2 files changed, 291 insertions(+), 2 deletions(-)
 
 commit 16140237aa45b4f188923da9f95b9d2af971011b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 10 16:46:08 2011 -0500
+Date:  Thu Feb 10 16:46:08 2011 -0500
 
     fix build to correctly use python-config
 
- autogen.sh        | 3 +++
- configure.ac      | 6 ------
- m4/python.m4      | 9 +++++----
- tests/runtests.py | 1 +
+ autogen.sh       |    3 +++
+ configure.ac     |    6 ------
+ m4/python.m4     |    9 +++++----
+ tests/runtests.py |   1 +
  4 files changed, 9 insertions(+), 10 deletions(-)
 
 commit c2079f415638ef892b1e51f25eaafa3e1621667f
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Feb 10 22:26:00 2011 +0100
+Date:  Thu Feb 10 22:26:00 2011 +0100
 
     Add missing libraries to link against
 
- glib/Makefile.am    | 2 +-
- gobject/Makefile.am | 1 +
+ glib/Makefile.am    |   2 +-
+ gobject/Makefile.am |   1 +
  2 files changed, 2 insertions(+), 1 deletion(-)
 
 commit 3cca62a9e7afd3d3d302c66f4fafe253f7743d4e
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 15:00:56 2011 +0100
+Date:  Wed Jan 19 15:00:56 2011 +0100
 
     Make runtests.py able to run command-line provided test files
 
@@ -25245,12 +7187,12 @@ Date:   Wed Jan 19 15:00:56 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639948
 
- tests/runtests.py | 9 +++++++++
+ tests/runtests.py |   9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 14c4cf8e6edae893538680964380d543bde4a14d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Feb 9 11:34:59 2011 +0100
+Date:  Wed Feb 9 11:34:59 2011 +0100
 
     Run test suite under dbus-launch
 
@@ -25260,24 +7202,24 @@ Date:   Wed Feb 9 11:34:59 2011 +0100
     session
     D-BUS (such as distribution package builds).
 
- tests/Makefile.am | 3 ++-
+ tests/Makefile.am |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 0858f550e2b6f75e3f583f963f5952f5ddae4e0e
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Feb 8 15:46:36 2011 +0100
+Date:  Tue Feb 8 15:46:36 2011 +0100
 
     Fix test_gdbus.py to be Python3 friendly
 
     - TestCase.assert_() has been deprecated by assertTrue().
     - Exceptions don't have a message attribute any more, use str(e)
 
- tests/test_gdbus.py | 34 +++++++++++++++-------------------
+ tests/test_gdbus.py |  34 +++++++++++++++-------------------
  1 file changed, 15 insertions(+), 19 deletions(-)
 
 commit b7f32e4cca0cef201489b55653f96ac64a8f9ab9
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Sat Jan 29 12:20:50 2011 +0100
+Date:  Sat Jan 29 12:20:50 2011 +0100
 
     [gi] Provide comfortable GSettings API
 
@@ -25287,15 +7229,15 @@ Date:   Sat Jan 29 12:20:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640838
 
- gi/overrides/Gio.py              | 54 +++++++++++++++++++++++++++++
- tests/org.gnome.test.gschema.xml |  9 +++++
- tests/test_overrides.py          | 73
- ++++++++++++++++++++++++++++++++--------
+ gi/overrides/Gio.py             |   54 ++++++++++++++++++++++++++++
+ tests/org.gnome.test.gschema.xml |    9 +++++
+ tests/test_overrides.py         |   73
+ ++++++++++++++++++++++++++++++--------
  3 files changed, 122 insertions(+), 14 deletions(-)
 
 commit 8dad0eaed60a9de26e9a729a48a1f6bc74be486e
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Fri Feb 4 16:36:07 2011 +0100
+Date:  Fri Feb 4 16:36:07 2011 +0100
 
     Fix vfunc search bug when using GInterfaces and a do_* method.
 
@@ -25306,13 +7248,13 @@ Date:   Fri Feb 4 16:36:07 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=641493
 
- gi/types.py      | 4 +++-
- tests/test_gi.py | 8 ++++++++
+ gi/types.py     |    4 +++-
+ tests/test_gi.py |    8 ++++++++
  2 files changed, 11 insertions(+), 1 deletion(-)
 
 commit 2660be1f227be7a53092483bc9d8ead1bd1fb266
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Feb 3 15:31:42 2011 +0100
+Date:  Thu Feb 3 15:31:42 2011 +0100
 
     [GI] Add tests for Gtk.Widget.drag_* methods.
 
@@ -25323,63 +7265,63 @@ Date:   Thu Feb 3 15:31:42 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639945
 
- tests/test_overrides.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   40 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 40 insertions(+)
 
 commit d57500537014b3da624be33b40401ba289fa22b8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Feb 3 09:02:16 2011 -0500
+Date:  Thu Feb 3 09:02:16 2011 -0500
 
     [gi] make caller allocates work again
 
- gi/pygi-cache.c  | 18 +++---------------
- gi/pygi-invoke.c | 37 ++++++++++++++++++++++++++++++++++---
+ gi/pygi-cache.c  |   18 +++---------------
+ gi/pygi-invoke.c |   37 ++++++++++++++++++++++++++++++++++---
  2 files changed, 37 insertions(+), 18 deletions(-)
 
 commit 99d6e6c8d806e6f9e48c3c2380024fb3511d110a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Feb 2 19:27:40 2011 -0500
+Date:  Wed Feb 2 19:27:40 2011 -0500
 
     [gi] fix container object reffing
 
- gi/pygi-argument.c |  7 +++----
- gi/pygi-cache.c    | 12 ++++--------
+ gi/pygi-argument.c |   7 +++----
+ gi/pygi-cache.c    |  12 ++++--------
  2 files changed, 7 insertions(+), 12 deletions(-)
 
 commit 09acaff29dfaabc77477cffca2c7137f68991e7f
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 21:00:48 2011 +0100
+Date:  Wed Feb 2 21:00:48 2011 +0100
 
     [python 3] use the right syntaxis to raise exceptions
 
- codegen/argtypes.py    |  8 ++++----
- codegen/definitions.py | 14 +++++++-------
- gi/overrides/Gtk.py    |  2 +-
+ codegen/argtypes.py   |    8 ++++----
+ codegen/definitions.py |   14 +++++++-------
+ gi/overrides/Gtk.py   |    2 +-
  3 files changed, 12 insertions(+), 12 deletions(-)
 
 commit 36094e5982d3e05d5662843b6d401f0974f5235f
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 20:50:12 2011 +0100
+Date:  Wed Feb 2 20:50:12 2011 +0100
 
     [gi] return PYGLIB_MODULE_ERROR_RETURN on error and use pygobject_init
 
- tests/testhelpermodule.c | 6 +++---
+ tests/testhelpermodule.c |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit c913c1789296310c2cf27554ce719d7f6e9c94cd
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Feb 2 20:37:21 2011 +0100
+Date:  Wed Feb 2 20:37:21 2011 +0100
 
     [gi] return PYGLIB_MODULE_ERROR_RETURN on error
 
     This is to avoid some warnings when building with python 3
 
- gi/gimodule.c | 6 +++---
+ gi/gimodule.c |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 7bc4122897d9d05172a2bd5b56bded87e2afaec4
 Author: Steve Frécinaux <code@istique.net>
-Date:   Sat Jan 29 00:16:50 2011 +0100
+Date:  Sat Jan 29 00:16:50 2011 +0100
 
     Fix wrong refcount when calling introspected widget constructors
 
@@ -25395,13 +7337,13 @@ Date:   Sat Jan 29 00:16:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640868
 
- gobject/pygobject.c      | 4 +++-
- tests/test_everything.py | 9 ++++++++-
+ gobject/pygobject.c     |    4 +++-
+ tests/test_everything.py |    9 ++++++++-
  2 files changed, 11 insertions(+), 2 deletions(-)
 
 commit afeaaa126f7cd6556fb855ecd0facc174c0f946c
 Author: Simon Schampijer <simon@laptop.org>
-Date:   Wed Jan 19 16:19:46 2011 +0100
+Date:  Wed Jan 19 16:19:46 2011 +0100
 
     Gdk.Window: Map the standard constructor to the *new* constructor
 
@@ -25413,63 +7355,63 @@ Date:   Wed Jan 19 16:19:46 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639936
 
- gi/overrides/Gdk.py     | 6 ++++++
- tests/test_overrides.py | 8 ++++++++
+ gi/overrides/Gdk.py    |    6 ++++++
+ tests/test_overrides.py |    8 ++++++++
  2 files changed, 14 insertions(+)
 
 commit 4a67f45880433905de33632fe0c32a13b44c0b33
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 31 16:51:37 2011 -0500
+Date:  Mon Jan 31 16:51:37 2011 -0500
 
     [gi] handle hash being NULL
 
- gi/pygi-argument.c | 6 ++++++
+ gi/pygi-argument.c |   6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 2fbfe410f4b4394a2018ada0e538585c1bec23ae
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 31 16:50:52 2011 -0500
+Date:  Mon Jan 31 16:50:52 2011 -0500
 
     [gi] handle the situation where an aux arg comes before its parent
 
- gi/pygi-cache.c  | 70
- ++++++++++++++++++++++++++++++++++++++++----------------
- gi/pygi-invoke.c |  2 +-
+ gi/pygi-cache.c  |   70
+ ++++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-invoke.c |    2 +-
  2 files changed, 51 insertions(+), 21 deletions(-)
 
 commit 858669f92c9907dd70b4966d6a8521ed122225be
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 31 17:38:52 2011 +0100
+Date:  Mon Jan 31 17:38:52 2011 +0100
 
     Ship tests/org.gnome.test.gschema.xml in dist tarballs
 
- tests/Makefile.am | 3 ++-
+ tests/Makefile.am |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 77d76df59606e470808085e977fb199cc76e8251
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 30 18:21:24 2011 -0500
+Date:  Sun Jan 30 18:21:24 2011 -0500
 
     [gi] allow caching and marshalling of ghash out
 
- gi/pygi-argument.c | 155
- +++++++++++++++++++++++++++++++++++++++++++++++++----
- gi/pygi-cache.c    |  27 ++++++----
+ gi/pygi-argument.c |  155
+ ++++++++++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-cache.c    |  27 +++++----
  2 files changed, 162 insertions(+), 20 deletions(-)
 
 commit bd66af67f248a3ca90d2fa2626605263c2392e16
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 30 17:06:44 2011 -0500
+Date:  Sun Jan 30 17:06:44 2011 -0500
 
     [gi] whitespace fixes
 
- gi/pygi-cache.c | 60
- ++++++++++++++++++++++++++++-----------------------------
+ gi/pygi-cache.c |   60
+ +++++++++++++++++++++++++++----------------------------
  1 file changed, 30 insertions(+), 30 deletions(-)
 
 commit 1cdbd4be9b015f792c2c02afa5ac7e24edbdae86
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 30 17:04:13 2011 -0500
+Date:  Sun Jan 30 17:04:13 2011 -0500
 
     [gi] added ugly aux arg counters
 
@@ -25478,16 +7420,16 @@ Date:   Sun Jan 30 17:04:13 2011 -0500
     * this works for now but is fragile if new aux values are added in
     the future
 
- gi/pygi-argument.c | 12 ++++++++--
- gi/pygi-cache.c    | 66
- +++++++++++++++++++++++++++++++++++++-----------------
- gi/pygi-cache.h    |  2 ++
- gi/pygi-invoke.c   | 12 +++++++---
+ gi/pygi-argument.c |  12 ++++++++--
+ gi/pygi-cache.c    |  66
+ +++++++++++++++++++++++++++++++++++-----------------
+ gi/pygi-cache.h    |   2 ++
+ gi/pygi-invoke.c   |  12 +++++++---
  4 files changed, 66 insertions(+), 26 deletions(-)
 
 commit c51447f4efde2ce4caf39c1ffac905ec428d1d64
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 30 11:30:54 2011 -0500
+Date:  Sun Jan 30 11:30:54 2011 -0500
 
     [gi] make inout marshalling work
 
@@ -25503,27 +7445,27 @@ Date:   Sun Jan 30 11:30:54 2011 -0500
 
 commit 2b185362de45f46ce0f0b8816499aef06ab1ad1e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jan 29 13:49:36 2011 -0500
+Date:  Sat Jan 29 13:49:36 2011 -0500
 
     [gi] marshal arrays out
 
- gi/pygi-argument.c | 101
- +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-argument.c |  101
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 99 insertions(+), 2 deletions(-)
 
 commit e62e7062d5cfd782eac64852f681c63e2776b8d4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jan 29 13:48:23 2011 -0500
+Date:  Sat Jan 29 13:48:23 2011 -0500
 
     [gi] fix sequence caching to support out
 
- gi/pygi-cache.c | 111
- ++++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.c |  111
+ +++++++++++++++++++++++++++++++++++++++++++------------
  1 file changed, 87 insertions(+), 24 deletions(-)
 
 commit 69207910209ebfe450df616aeb8fa4cc2e7eccf3
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 28 17:14:19 2011 +0100
+Date:  Fri Jan 28 17:14:19 2011 +0100
 
     [gi] Add GSettings tests
 
@@ -25531,14 +7473,14 @@ Date:   Fri Jan 28 17:14:19 2011 +0100
     so let's
     first make sure that the canonical GLib API works.
 
- tests/Makefile.am                |  7 +++++--
- tests/org.gnome.test.gschema.xml | 16 ++++++++++++++++
- tests/test_overrides.py          | 31 +++++++++++++++++++++++++++++++
+ tests/Makefile.am               |    7 +++++--
+ tests/org.gnome.test.gschema.xml |   16 ++++++++++++++++
+ tests/test_overrides.py         |   31 +++++++++++++++++++++++++++++++
  3 files changed, 52 insertions(+), 2 deletions(-)
 
 commit 488478a83640d50baee963337fcc870fec76b784
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 28 07:20:26 2011 +0100
+Date:  Fri Jan 28 07:20:26 2011 +0100
 
     [gi] Provide GtkTextBuffer.insert_with_tags_by_name()
 
@@ -25547,13 +7489,13 @@ Date:   Fri Jan 28 07:20:26 2011 +0100
     consistent
     with the actual GTK API.
 
- gi/overrides/Gtk.py     | 19 ++++++++++++++-----
- tests/test_overrides.py |  4 ++--
+ gi/overrides/Gtk.py    |   19 ++++++++++++++-----
+ tests/test_overrides.py |    4 ++--
  2 files changed, 16 insertions(+), 7 deletions(-)
 
 commit dace1a553793fb7fb054b60760f02c9e5cf00b38
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 13:37:18 2011 +0100
+Date:  Thu Jan 27 13:37:18 2011 +0100
 
     [gi] Support tag names in GtkTextBuffer.insert_with_tags()
 
@@ -25562,146 +7504,146 @@ Date:   Thu Jan 27 13:37:18 2011 +0100
     due to using varargs. As both are useful, support both cases in
     the override.
 
- gi/overrides/Gtk.py     | 5 +++++
- tests/test_overrides.py | 9 +++++++++
+ gi/overrides/Gtk.py    |    5 +++++
+ tests/test_overrides.py |    9 +++++++++
  2 files changed, 14 insertions(+)
 
 commit 91d34124b2a5128e93e13c7fee8693d5edc4e9bb
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Jan 27 12:23:18 2011 +0100
+Date:  Thu Jan 27 12:23:18 2011 +0100
 
     Add MAINTAINERCLEANFILES
 
     This var behaves like .gitignore and allows us to skip some specific
     files.
 
- Makefile.am | 27 +++++++++++++++++++++++++++
+ Makefile.am |  27 +++++++++++++++++++++++++++
  1 file changed, 27 insertions(+)
 
 commit 8a98d26981ce68809a21c64cac4962e58c927905
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Jan 27 12:15:30 2011 +0100
+Date:  Thu Jan 27 12:15:30 2011 +0100
 
     Remove .gitignore files and use git.mk
 
     git.mk is a script maintained in pango. From time to time we must
     check if it was updated and update it here.
 
- .gitignore                |  46 -----------
- Makefile.am               |   2 +
- codegen/.gitignore        |   2 -
- codegen/Makefile.am       |   2 +
- docs/.gitignore           |   7 --
- docs/Makefile.am          |   2 +
- examples/Makefile.am      |   2 +
- gi/.gitignore             |  40 ----------
- gi/Makefile.am            |   2 +
- gi/overrides/Makefile.am  |   2 +
- gi/repository/Makefile.am |   2 +
- gi/tests/Makefile.am      |   2 +
- git.mk                    | 200
- ++++++++++++++++++++++++++++++++++++++++++++++
- glib/Makefile.am          |   2 +
- gobject/.gitignore        |   3 -
- gobject/Makefile.am       |   2 +
- tests/.gitignore          |   2 -
- tests/Makefile.am         |   2 +
+ .gitignore                 46 -----------
+ Makefile.am                 2 +
+ codegen/.gitignore          2 -
+ codegen/Makefile.am         2 +
+ docs/.gitignore             7 --
+ docs/Makefile.am            2 +
+ examples/Makefile.am        2 +
+ gi/.gitignore            |   40 ---------
+ gi/Makefile.am                   |    2 +
+ gi/overrides/Makefile.am  |   2 +
+ gi/repository/Makefile.am |   2 +
+ gi/tests/Makefile.am        2 +
+ git.mk                           |  200
+ +++++++++++++++++++++++++++++++++++++++++++++
+ glib/Makefile.am            2 +
+ gobject/.gitignore          3 -
+ gobject/Makefile.am         2 +
+ tests/.gitignore            2 -
+ tests/Makefile.am           2 +
  18 files changed, 222 insertions(+), 100 deletions(-)
 
 commit 331c42b63bc60a3b906fa21e1c0a7c1b9428f347
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 12:04:19 2011 +0100
+Date:  Thu Jan 27 12:04:19 2011 +0100
 
     pygi-convert.sh: Convert Pango.TabAlign.*
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit be1a2959fa0a3d8682e0e8aef389d73dacab0689
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 12:02:39 2011 +0100
+Date:  Thu Jan 27 12:02:39 2011 +0100
 
     pygi-convert.sh: Drop window -> get_window() conversion
 
     It is doing more harm than good for projects which use things like
     self.window.
 
- pygi-convert.sh | 1 -
+ pygi-convert.sh |    1 -
  1 file changed, 1 deletion(-)
 
 commit dd7deb4b658c56857c26b1a278a3d688f2ea6a2a
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 27 11:58:26 2011 +0100
+Date:  Thu Jan 27 11:58:26 2011 +0100
 
     pygi-convert.sh: Don't convert self.window assignments
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 975341a26772966d4afc87a88a6a566d61237fa0
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 18:41:54 2011 +0100
+Date:  Fri Jan 21 18:41:54 2011 +0100
 
     Fix leaked python reference in python-defined subclasses
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
- gobject/gobjectmodule.c | 1 +
- tests/test_gobject.py   | 4 ++++
+ gobject/gobjectmodule.c |    1 +
+ tests/test_gobject.py  |    4 ++++
  2 files changed, 5 insertions(+)
 
 commit a59e2d58bdb3f31a4f415dbe14b7d9988ac28ce3
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 15:54:43 2011 +0100
+Date:  Fri Jan 21 15:54:43 2011 +0100
 
     Add some tests for the number of python refs held at creation time
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
- tests/test_gobject.py | 21 +++++++++++++++++++++
+ tests/test_gobject.py |   21 +++++++++++++++++++++
  1 file changed, 21 insertions(+)
 
 commit 7d70105eb324ea4b6a58c2d3fb3f2dda36e7ab33
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri Jan 21 17:24:49 2011 +0100
+Date:  Fri Jan 21 17:24:49 2011 +0100
 
     Factor out parameter marshalling from construction functions.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640197
 
- gobject/gobjectmodule.c     | 35 ++--------------------
- gobject/pygobject-private.h |  5 ++++
- gobject/pygobject.c         | 71
- +++++++++++++++++++++++++++------------------
+ gobject/gobjectmodule.c     |  35 ++-------------------
+ gobject/pygobject-private.h |   5 +++
+ gobject/pygobject.c        |   71
+ +++++++++++++++++++++++++------------------
  3 files changed, 50 insertions(+), 61 deletions(-)
 
 commit a3e0cfe8924887ecd1e07cedd2cfb999c853ac62
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:34:24 2011 -0500
+Date:  Wed Jan 26 15:34:24 2011 -0500
 
     [gi] in python 3 an array of uint8 can be bytes but not string
 
- tests/test_gi.py | 4 +++-
+ tests/test_gi.py |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit 843553ea958eddec185bb660851a310dc050a14b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:30:06 2011 -0500
+Date:  Wed Jan 26 15:30:06 2011 -0500
 
     [gi] fix Gio.FileEnumerator to reflect the Python 3 iter protocol
 
- gi/overrides/Gio.py | 6 +++++-
+ gi/overrides/Gio.py |   6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 6ff357839feb39930a5f3175de3d0ed35f24d3f4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 15:17:03 2011 -0500
+Date:  Wed Jan 26 15:17:03 2011 -0500
 
     [gi] python 3 fixes
 
     Patches need to work in Python 3 - here are some of the issues I
     fixed up.
-    Patch submitters should keep this in mind.  When I note to only
+    Patch submitters should keep this in mind. When I note to only
     use something
     in tests it means that there is a compat module that is only available
     to the
@@ -25718,9 +7660,9 @@ Date:   Wed Jan 26 15:17:03 2011 -0500
     issue
     * callable does not exist in 3.x, use hasattr(obj, '__call__') or
 
-          if sys.version_info > (3, 0):
-              def callable(obj):
-                  return hasattr(obj, '__call__')
+         if sys.version_info > (3, 0):
+             def callable(obj):
+                 return hasattr(obj, '__call__')
 
     * using unicode in tests is tricky, you can't use u'' even in
     a versioned
@@ -25728,71 +7670,71 @@ Date:   Wed Jan 26 15:17:03 2011 -0500
       (and only i
       in tests):
 
-          from compathelper import _unicode
-          unicode_string = _unicode('this is a unicode string')
+         from compathelper import _unicode
+         unicode_string = _unicode('this is a unicode string')
 
     * exception caching changed in 2.7, instead of except Exception,
     e we now use
       except Exception as e.  Do this to be compatible with older
       versions:
 
-          except Exception:
-              etype, e = sys.exc_info()[:2]
+         except Exception:
+             etype, e = sys.exc_info()[:2]
 
     * Unbound methods with an im_func attribute no longer exits in 3.x.
       Unbound methods are now just functions so class.method in 3.x is
       equivalent to class.method.im_func in 2.x.  If you have to go this
       low level do this:
 
-          func = class1.method
-          if sys.version_info < (3,0):
-              func = func.im_func
+         func = class1.method
+         if sys.version_info < (3,0):
+             func = func.im_func
 
     * all numbers are long in 3.x so 42L is invalid in 3.x.  In tests (and
       only in tests) do this:
 
-          from compathelper import _long
-          l = _long(42)
+         from compathelper import _long
+         l = _long(42)
 
- gi/overrides/GLib.py    | 16 ++++++++--------
- gi/types.py             |  5 ++++-
- tests/compathelper.py   | 19 +++++++++++++++++++
- tests/test_gdbus.py     | 12 ++++++++----
- tests/test_gi.py        | 19 ++++++++++++-------
- tests/test_overrides.py |  8 +++++---
+ gi/overrides/GLib.py   |   16 ++++++++--------
+ gi/types.py            |    5 ++++-
+ tests/compathelper.py  |   19 +++++++++++++++++++
+ tests/test_gdbus.py    |   12 ++++++++----
+ tests/test_gi.py       |   19 ++++++++++++-------
+ tests/test_overrides.py |    8 +++++---
  6 files changed, 56 insertions(+), 23 deletions(-)
 
 commit 832d662b9f90f5762bbf28b3cca73f947c1f83ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 26 14:00:08 2011 -0500
+Date:  Wed Jan 26 14:00:08 2011 -0500
 
     [gi] fix try/except blocks using depricated raise format
 
- gi/overrides/GLib.py | 4 ++--
- gi/overrides/Gdk.py  | 2 +-
+ gi/overrides/GLib.py |    4 ++--
+ gi/overrides/Gdk.py  |    2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 commit d3e30e240fed6ef1dd40fd29fd13dc2effc6c7b1
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 19:03:48 2011 +0100
+Date:  Wed Jan 26 19:03:48 2011 +0100
 
     [gi] Add docstring to GLib.Variant constructor
 
- gi/overrides/GLib.py | 11 +++++++++++
+ gi/overrides/GLib.py |   11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 963cd52fec26f7a4fb34414f8ac6662932ede322
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 18:45:38 2011 +0100
+Date:  Wed Jan 26 18:45:38 2011 +0100
 
     [gi] update gdbus test cases for previous GVariant change
 
- tests/test_gdbus.py | 4 ++--
+ tests/test_gdbus.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 27e3a6276ff5f2cdc03ddf69ee80d44c3bf2c094
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 26 18:39:17 2011 +0100
+Date:  Wed Jan 26 18:39:17 2011 +0100
 
     [gi] Accept only a single object in GLib.Variant constructor
 
@@ -25812,13 +7754,13 @@ Date:   Wed Jan 26 18:39:17 2011 +0100
 
     Thanks to Ryan Lortie for pointing this out!
 
- gi/overrides/GLib.py    | 25 ++++++++++---------------
- tests/test_overrides.py | 32 +++++++++++++-------------------
+ gi/overrides/GLib.py   |   25 ++++++++++---------------
+ tests/test_overrides.py |   32 +++++++++++++-------------------
  2 files changed, 23 insertions(+), 34 deletions(-)
 
 commit b15e8e2c0c933d0f827a70280faf875ac383d81b
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 26 00:40:49 2011 +0100
+Date:  Wed Jan 26 00:40:49 2011 +0100
 
     Speed up _setup_native_vfuncs()
 
@@ -25840,13 +7782,13 @@ Date:   Wed Jan 26 00:40:49 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640629
 
- gi/types.py      | 26 +++++++++++++-------------
- tests/test_gi.py | 13 +++++++++++++
+ gi/types.py     |   26 +++++++++++++-------------
+ tests/test_gi.py |   13 +++++++++++++
  2 files changed, 26 insertions(+), 13 deletions(-)
 
 commit 569d42ac2f50fb706ef289ff631db743483f40ee
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Thu Jan 20 16:26:18 2011 +0100
+Date:  Thu Jan 20 16:26:18 2011 +0100
 
     Speed up class creation: rewrite _setup_vfuncs() to be much more
     efficient.
@@ -25874,113 +7816,113 @@ Date:   Thu Jan 20 16:26:18 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640073
 
- gi/types.py      | 104
- ++++++++++++++++++++++++++++++++++---------------------
- tests/test_gi.py |  13 +++++++
+ gi/types.py      104
+ +++++++++++++++++++++++++++++++++---------------------
+ tests/test_gi.py |   13 +++++++
  2 files changed, 77 insertions(+), 40 deletions(-)
 
 commit 8f4e6536f3c2edf38a45632d1c23eb7c6681c3be
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 24 19:23:19 2011 +0100
+Date:  Mon Jan 24 19:23:19 2011 +0100
 
     pygi-convert.sh: Convert gtk.UI_MANAGER_*
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 1f473b5164407a178203eb8cc7f3c786e0d0e5c2
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Fri Jan 21 18:41:54 2011 +0100
+Date:  Fri Jan 21 18:41:54 2011 +0100
 
     pygi-convert.sh: Convert gdk.GRAB_*
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit f5d0b7b9d189f65503c0bf66d8bda4186ca3223a
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jan 21 16:45:07 2011 +0100
+Date:  Fri Jan 21 16:45:07 2011 +0100
 
     [gi] set the gtype GValue correctly
 
- gi/pygi-property.c | 4 ++--
+ gi/pygi-property.c |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit ce521011d7f6d7f082aaea76fa05c5af9f6e93f5
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Fri Jan 21 16:20:23 2011 +0100
+Date:  Fri Jan 21 16:20:23 2011 +0100
 
     [gi] use the right argument type for callback
 
- gi/pygi-foreign-cairo.c    | 8 ++++----
- gi/pygi-foreign-gvariant.c | 4 ++--
- gi/pygi-foreign-gvariant.h | 2 +-
- gi/pygi-foreign.c          | 2 +-
- gi/pygi.h                  | 2 +-
+ gi/pygi-foreign-cairo.c    |   8 ++++----
+ gi/pygi-foreign-gvariant.c |   4 ++--
+ gi/pygi-foreign-gvariant.h |   2 +-
+ gi/pygi-foreign.c         |    2 +-
+ gi/pygi.h                 |    2 +-
  5 files changed, 9 insertions(+), 9 deletions(-)
 
 commit 9f101baaa63a75acf62f955cfc4b311ff0dd5464
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 09:23:54 2011 -0500
+Date:  Fri Jan 21 09:23:54 2011 -0500
 
     [gi] marshal out flags and enum
 
- gi/pygi-argument.c | 14 +++++++++-----
- gi/pygi-cache.c    | 24 ++++++++++++------------
+ gi/pygi-argument.c |  14 +++++++++-----
+ gi/pygi-cache.c    |  24 ++++++++++++------------
  2 files changed, 21 insertions(+), 17 deletions(-)
 
 commit 4c93bdeae76830aa4029dfc86e32e6f277d5271d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 08:18:37 2011 -0500
+Date:  Fri Jan 21 08:18:37 2011 -0500
 
     [gi] marshal unions
 
- gi/pygi-cache.c | 27 +++++++++++++--------------
+ gi/pygi-cache.c |   27 +++++++++++++--------------
  1 file changed, 13 insertions(+), 14 deletions(-)
 
 commit a060287d1a6d190acb9d344f08fd5662e3296da5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 21 11:00:27 2011 +0100
+Date:  Fri Jan 21 11:00:27 2011 +0100
 
     [gi] Add test cases for GDBus client operations
 
- tests/Makefile.am   |  1 +
- tests/test_gdbus.py | 94
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am   |   1 +
+ tests/test_gdbus.py |  94
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 95 insertions(+)
 
 commit e7699d9af41f8c374326b8a4ec0939ef1426e386
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 04:28:15 2011 -0500
+Date:  Fri Jan 21 04:28:15 2011 -0500
 
     [gi] error out if the constructor returns NULL
 
- gi/pygi-invoke.c | 7 +++++++
+ gi/pygi-invoke.c |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 58ff2b2c38c1004861083ca88633be76767229f0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 04:26:45 2011 -0500
+Date:  Fri Jan 21 04:26:45 2011 -0500
 
     [gi] throw error for caller allocates until we can write code to
     support it
 
- gi/pygi-cache.c | 11 +++++++++++
+ gi/pygi-cache.c |   11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 5eb779439daa8bf1e86df689377dc10ef1430eab
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 04:26:11 2011 -0500
+Date:  Fri Jan 21 04:26:11 2011 -0500
 
     [gi] support struct out
 
- gi/pygi-argument.c | 30 ++++++++++++++++++++++++++----
- gi/pygi-cache.c    | 15 ++-------------
+ gi/pygi-argument.c |  30 ++++++++++++++++++++++++++----
+ gi/pygi-cache.c    |  15 ++-------------
  2 files changed, 28 insertions(+), 17 deletions(-)
 
 commit 3133dc595adf44279397d30712c0f8595f0e1acc
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jan 21 04:22:06 2011 -0500
+Date:  Fri Jan 21 04:22:06 2011 -0500
 
     [gi] move to using type_info and interface_info instead of arg_info
 
@@ -25992,21 +7934,21 @@ Date:   Fri Jan 21 04:22:06 2011 -0500
       interface_info
       to the interface cache
 
- gi/pygi-argument.c         | 20 ++++----------------
- gi/pygi-cache.c            | 43
+ gi/pygi-argument.c        |   20 ++++----------------
+ gi/pygi-cache.c           |   43
  ++++++++++++++++++++++++++++++++-----------
- gi/pygi-cache.h            |  4 +++-
- gi/pygi-foreign-cairo.c    | 24 ++++++++++++------------
- gi/pygi-foreign-gvariant.c | 11 +++++------
- gi/pygi-foreign-gvariant.h | 10 +++++-----
- gi/pygi-foreign.c          | 21 +++++++++------------
- gi/pygi-foreign.h          |  6 +++---
- gi/pygi.h                  |  8 ++++----
+ gi/pygi-cache.h           |    4 +++-
+ gi/pygi-foreign-cairo.c    |  24 ++++++++++++------------
+ gi/pygi-foreign-gvariant.c |  11 +++++------
+ gi/pygi-foreign-gvariant.h |  10 +++++-----
+ gi/pygi-foreign.c         |   21 +++++++++------------
+ gi/pygi-foreign.h         |    6 +++---
+ gi/pygi.h                 |    8 ++++----
  9 files changed, 77 insertions(+), 70 deletions(-)
 
 commit e97e28048efb966ecc1a03277d36cbaa81b8db7d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Jan 21 09:54:14 2011 +0100
+Date:  Fri Jan 21 09:54:14 2011 +0100
 
     [gi] Add Variant construction/unpack support for boxed Variants
 
@@ -26015,42 +7957,42 @@ Date:   Fri Jan 21 09:54:14 2011 +0100
     currently does not work (see
     https://bugzilla.gnome.org/show_bug.cgi?id=639952)
 
- gi/overrides/GLib.py    | 18 +++++++++++++++++-
- tests/test_overrides.py | 26 ++++++++++++++++++++++++++
+ gi/overrides/GLib.py   |   18 +++++++++++++++++-
+ tests/test_overrides.py |   26 ++++++++++++++++++++++++++
  2 files changed, 43 insertions(+), 1 deletion(-)
 
 commit 71dd03261fc06b8180c14cd31b54d8e4b200be3a
-Merge: bc29600a bd002c72
+Merge: bc29600 bd002c7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Fri Jan 21 09:33:16 2011 +0100
+Date:  Fri Jan 21 09:33:16 2011 +0100
 
     Merge branch 'windows-setup-fixes'
 
 commit bc29600a2a04c972ceab7ef8d3292e8633977591
 Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date:   Thu Jan 20 19:48:23 2011 +0100
+Date:  Thu Jan 20 19:48:23 2011 +0100
 
     pygi-convert.sh: GdkPixbuf methods
 
     GNOME bug #639880
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit d1b0fa501cc431baa530d96fb50f4c35590890ac
 Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date:   Thu Jan 20 19:45:01 2011 +0100
+Date:  Thu Jan 20 19:45:01 2011 +0100
 
     pygi-convert.sh: Gdk.COLORSPACE_RGB
 
     GNOME bug #639880
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 6d8ff4d5bdda5480089543869535cc3ee83da2f5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 11:41:11 2011 +0100
+Date:  Wed Jan 19 11:41:11 2011 +0100
 
     [gi] Support nested objects and empty sequences in GLib.Variant
     building
@@ -26070,34 +8012,34 @@ Date:   Wed Jan 19 11:41:11 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639939
 
- gi/overrides/GLib.py    | 229
- ++++++++++++++++++++++++++----------------------
- tests/test_overrides.py | 159 +++++++++++++++++++++++++++++++--
+ gi/overrides/GLib.py    229
+ +++++++++++++++++++++++++----------------------
+ tests/test_overrides.py |  159 ++++++++++++++++++++++++++++++--
  2 files changed, 273 insertions(+), 115 deletions(-)
 
 commit ac095f5435f106e175fa3297cb273e63c85d2809
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jan 20 15:55:45 2011 +0100
+Date:  Thu Jan 20 15:55:45 2011 +0100
 
     Uncomment test_gi.TestInterfaceClash
 
- tests/test_gi.py | 22 +++++++++++-----------
+ tests/test_gi.py |   22 +++++++++++-----------
  1 file changed, 11 insertions(+), 11 deletions(-)
 
 commit 1239f3709ba257c404dda72b7067b77b19c240fa
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jan 20 09:05:02 2011 -0500
+Date:  Thu Jan 20 09:05:02 2011 -0500
 
     [gi] add support for enum and flags
 
- gi/pygi-argument.c | 121
- +++++++++++++++++++++++++++++++++++++++++------------
- gi/pygi-cache.c    |  30 ++++++-------
+ gi/pygi-argument.c |  121
+ +++++++++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.c    |  30 +++++++------
  2 files changed, 111 insertions(+), 40 deletions(-)
 
 commit f0a0b6c2eda89622de2b1e5ebb6a48103ad72a42
 Author: Steve Frécinaux <code@istique.net>
-Date:   Thu Jan 20 14:14:15 2011 +0100
+Date:  Thu Jan 20 14:14:15 2011 +0100
 
     Fix reference leaks for GInitiallyUnowned objects
 
@@ -26107,18 +8049,18 @@ Date:   Thu Jan 20 14:14:15 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- gobject/gobjectmodule.c  |  2 ++
- gobject/pygobject.c      | 14 +++++------
- tests/test-floating.c    | 36 +++++++++++++++++++++++++++
- tests/test-floating.h    | 21 ++++++++++++++++
- tests/test_gobject.py    | 63
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/testhelpermodule.c | 50 ++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c  |    2 ++
+ gobject/pygobject.c     |   14 +++++------
+ tests/test-floating.c   |   36 ++++++++++++++++++++++++++
+ tests/test-floating.h   |   21 ++++++++++++++++
+ tests/test_gobject.py   |   63
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c |   50 ++++++++++++++++++++++++++++++++++++
  6 files changed, 179 insertions(+), 7 deletions(-)
 
 commit cae2cf3d4fb049c94389bf8f84d7d97a544d7a3f
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 16:57:57 2011 +0100
+Date:  Wed Jan 19 16:57:57 2011 +0100
 
     Add tests for refcount of a GObject owned by a library
 
@@ -26128,27 +8070,27 @@ Date:   Wed Jan 19 16:57:57 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- tests/test-floating.c    | 30 +++++++++++++++++++++++
- tests/test-floating.h    | 20 ++++++++++++++++
- tests/test_gobject.py    | 62
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/testhelpermodule.c | 51 +++++++++++++++++++++++++++++++++++++++
+ tests/test-floating.c   |   30 ++++++++++++++++++++++
+ tests/test-floating.h   |   20 +++++++++++++++
+ tests/test_gobject.py   |   62
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c |   51 ++++++++++++++++++++++++++++++++++++++
  4 files changed, 163 insertions(+)
 
 commit b6737b91938d527872eff1d645a205cacf94e15d
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 14:52:41 2011 +0100
+Date:  Wed Jan 19 14:52:41 2011 +0100
 
     Add a test to check for regular object reference count
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- tests/test_gobject.py | 8 +++++++-
+ tests/test_gobject.py |    8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit 2b0f1ede820414ef1cfd6b37569fcb946d2031fc
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 14:15:52 2011 +0100
+Date:  Thu Jan 20 14:15:52 2011 +0100
 
     [gi] Update TreeView.enable_model_drag_{source,dest} to current GTK
 
@@ -26158,49 +8100,49 @@ Date:   Thu Jan 20 14:15:52 2011 +0100
     Gtk.TreeView.enable_model_drag_{source,dest}(). Thus
     drop the explicit array length argument from the call in the override.
 
- gi/overrides/Gtk.py | 2 --
+ gi/overrides/Gtk.py |   2 --
  1 file changed, 2 deletions(-)
 
 commit b59edf4f0f7cab44033f9d704d476e10ee0d0c0a
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Jan 19 18:04:10 2011 +0100
+Date:  Wed Jan 19 18:04:10 2011 +0100
 
     Fix a typo in a private symbol name.
 
- gobject/gobjectmodule.c | 6 +++---
+ gobject/gobjectmodule.c |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 6447688e283a8fb22de3ab68cbc06e34ad23d198
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:49:08 2011 +0100
+Date:  Thu Jan 20 11:49:08 2011 +0100
 
     pygi-convert.sh: Convert glib.source_remove()
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 84ee8de4bc00a8f901926cc6386d73c12dbd0b0b
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:42:34 2011 +0100
+Date:  Thu Jan 20 11:42:34 2011 +0100
 
     Fix typo in previous commit to actually convert glib.GError
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b238cb614338f46e6feb7935cca0a55c7a929418
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Thu Jan 20 11:40:14 2011 +0100
+Date:  Thu Jan 20 11:40:14 2011 +0100
 
     pygi-convert.sh: Move some glib bits which are better handled
     by gobject
 
- pygi-convert.sh | 3 +++
+ pygi-convert.sh |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 21c09a7ee294b59abb3eca6f64f13bf5c8a2fa0e
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 12:00:02 2011 +0100
+Date:  Wed Jan 19 12:00:02 2011 +0100
 
     Modify override for Gtk.Adjustment to allow position or keyword
     arguments in __init__().
@@ -26213,13 +8155,13 @@ Date:   Wed Jan 19 12:00:02 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639934
 
- gi/overrides/Gtk.py     | 14 ++++++++++++--
- tests/test_overrides.py | 34 +++++++++++++++++++++++++++-------
+ gi/overrides/Gtk.py    |   14 ++++++++++++--
+ tests/test_overrides.py |   34 +++++++++++++++++++++++++++-------
  2 files changed, 39 insertions(+), 9 deletions(-)
 
 commit d465e25297ad6589ff2cd0c00e11e8bd8ffe3f78
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 22:52:51 2011 +0100
+Date:  Wed Jan 19 22:52:51 2011 +0100
 
     [gi] Fix small typo in previous commit
 
@@ -26229,44 +8171,44 @@ Date:   Wed Jan 19 22:52:51 2011 +0100
     in bug
     639939 does.
 
- tests/test_overrides.py | 2 +-
+ tests/test_overrides.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2b8e1d0531dcb8f57dc9f2fddf25970bee3daa90
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 20:18:19 2011 +0100
+Date:  Wed Jan 19 20:18:19 2011 +0100
 
     [gi] Add pythonic iterator and indexing for string GVariants
 
     This extends commit b1a98083c to also work for strings.
 
- gi/overrides/GLib.py    |  8 +++++++-
- tests/test_overrides.py | 13 +++++++++++++
+ gi/overrides/GLib.py   |    8 +++++++-
+ tests/test_overrides.py |   13 +++++++++++++
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit 8efd14c87b35072cdd039bf223f8ced8f51be9bb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 14:08:03 2011 -0500
+Date:  Wed Jan 19 14:08:03 2011 -0500
 
     [gi] return NULL if out_marshaller fails
 
- gi/pygi-invoke.c | 5 +++++
+ gi/pygi-invoke.c |    5 +++++
  1 file changed, 5 insertions(+)
 
 commit 5b1db41d60204c8021f47f43b85dac126c389c8d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 13:57:54 2011 -0500
+Date:  Wed Jan 19 13:57:54 2011 -0500
 
     [gi] fix some transfer issues and test case failures
 
- gi/pygi-argument.c |  4 ++++
- gi/pygi-cache.c    | 11 ++++++++---
- gi/pygi-invoke.c   | 17 +++++++++--------
+ gi/pygi-argument.c |   4 ++++
+ gi/pygi-cache.c    |  11 ++++++++---
+ gi/pygi-invoke.c   |  17 +++++++++--------
  3 files changed, 21 insertions(+), 11 deletions(-)
 
 commit 7c2f48bb6d67ec9a1ee5ac03a5aee34b54c6ebdd
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 18:09:23 2011 +0100
+Date:  Wed Jan 19 18:09:23 2011 +0100
 
     Construct structs using default API constructor
 
@@ -26276,22 +8218,22 @@ Date:   Wed Jan 19 18:09:23 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627444
 
- gi/pygi-info.c | 37 +++++++++++++++++++++++++++++++++++++
- gi/types.py    |  7 +++++++
+ gi/pygi-info.c |   37 +++++++++++++++++++++++++++++++++++++
+ gi/types.py   |    7 +++++++
  2 files changed, 44 insertions(+)
 
 commit db7300e173388d9557dcd2333781bfaa6b021605
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 18:54:39 2011 +0100
+Date:  Wed Jan 19 18:54:39 2011 +0100
 
     pygi-convert.sh: Migrate Gdk.Cursor constructor, and some cursor names
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 4c1d4faddf1c9cb233c484da3eadd8e31c231f70
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 18:43:29 2011 +0100
+Date:  Wed Jan 19 18:43:29 2011 +0100
 
     pygi-convert.sh: Handle .window attributes
 
@@ -26299,12 +8241,12 @@ Date:   Wed Jan 19 18:43:29 2011 +0100
     calling the
     GtkWidget methods instead.
 
- pygi-convert.sh | 5 ++++-
+ pygi-convert.sh |    5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit b1049b947d073fb569ba900a4d5c8519482d831e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 17:35:09 2011 +0100
+Date:  Wed Jan 19 17:35:09 2011 +0100
 
     Also deal with foreign boxed structs
 
@@ -26312,12 +8254,12 @@ Date:   Wed Jan 19 17:35:09 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639967
 
- gi/pygi-argument.c | 4 ++--
+ gi/pygi-argument.c |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 25b69ae257a12b6dc97ed3f2f7ea54b166ddbba1
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 17:45:11 2011 +0100
+Date:  Wed Jan 19 17:45:11 2011 +0100
 
     [gi] Convert GErrors to GObject.GError exceptions, and throw them
     upon returning from calling the C function.
@@ -26332,36 +8274,36 @@ Date:   Wed Jan 19 17:45:11 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639834
 
- gi/Makefile.am   |  3 ++-
- gi/pygi-invoke.c | 12 +++---------
- tests/test_gi.py | 10 ++++++++++
+ gi/Makefile.am   |    3 ++-
+ gi/pygi-invoke.c |   12 +++---------
+ tests/test_gi.py |   10 ++++++++++
  3 files changed, 15 insertions(+), 10 deletions(-)
 
 commit 18b84767db1d66e3d6f09067ab19ffd4b82539ca
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 12:05:45 2011 -0500
+Date:  Wed Jan 19 12:05:45 2011 -0500
 
     [gi] fix out marshalling for a couple of int types
 
- gi/pygi-argument.c | 2 +-
- gi/pygi-cache.c    | 2 +-
+ gi/pygi-argument.c |   2 +-
+ gi/pygi-cache.c    |   2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit c5d7c730008275b2c585b2609fc2ff5e051cce47
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 11:59:09 2011 -0500
+Date:  Wed Jan 19 11:59:09 2011 -0500
 
     [gi] fixed range checking and type conversion with unsigned and
     large numbers
 
- gi/pygi-argument.c | 90
- +++++++++++++++++++++++++++++++++++++++++++++---------
- gi/pygi-cache.c    |  2 +-
+ gi/pygi-argument.c |  90
+ +++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c    |   2 +-
  2 files changed, 76 insertions(+), 16 deletions(-)
 
 commit e6fcafc6179e963cbae7774e7ee50415bde2c523
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 17:03:06 2011 +0100
+Date:  Wed Jan 19 17:03:06 2011 +0100
 
     pygi-convert.sh: Don't convert glib -> GLib for now
 
@@ -26374,21 +8316,21 @@ Date:   Wed Jan 19 17:03:06 2011 +0100
     preferred for
     now, so disable the replacement rules.
 
- pygi-convert.sh | 19 ++++++++++---------
+ pygi-convert.sh |   19 ++++++++++---------
  1 file changed, 10 insertions(+), 9 deletions(-)
 
 commit 167261d556eab0d2e448c7ed28eef540a024ba1d
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jan 19 16:47:08 2011 +0100
+Date:  Wed Jan 19 16:47:08 2011 +0100
 
     Link libregress.so to GIO_LIBS again
 
- configure.ac | 5 +++++
+ configure.ac |    5 +++++
  1 file changed, 5 insertions(+)
 
 commit d143afa6da4f5b5f47be8df11fa41d7b47ab1794
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Wed Jan 19 16:14:42 2011 +0100
+Date:  Wed Jan 19 16:14:42 2011 +0100
 
     Fix attributes 2BUTTON_PRESS and 3BUTTON_PRESS of Gdk.EventType.
 
@@ -26396,88 +8338,88 @@ Date:   Wed Jan 19 16:14:42 2011 +0100
     because in Python attributes starting with a numeral causes a
     syntax error.
 
- gi/overrides/Gdk.py | 7 +++++--
+ gi/overrides/Gdk.py |   7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 4f5d20966d4a8c649e5fae584039621edab178f3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 10:02:40 2011 -0500
+Date:  Wed Jan 19 10:02:40 2011 -0500
 
     [gi] use correct format stings when setting errors
 
- gi/pygi-argument.c | 12 ++++++------
+ gi/pygi-argument.c |  12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit 7f08fd5c33ee5c9907f5becbe2f21fb7122d6e19
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 09:45:09 2011 -0500
+Date:  Wed Jan 19 09:45:09 2011 -0500
 
     [gi] allow marshalling strings as None
 
- gi/pygi-argument.c | 5 +++++
+ gi/pygi-argument.c |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 093242a9e125998cd07bf66fc4b2880f532a2e4d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 09:41:56 2011 -0500
+Date:  Wed Jan 19 09:41:56 2011 -0500
 
     [gi] make error messages more detailed
 
- gi/pygi-argument.c |  2 +-
- gi/pygi-cache.c    | 18 +++++++++---------
+ gi/pygi-argument.c |   2 +-
+ gi/pygi-cache.c    |  18 +++++++++---------
  2 files changed, 10 insertions(+), 10 deletions(-)
 
 commit f0b17605ed2eb917b350654b070984beb553eae3
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 09:41:13 2011 -0500
+Date:  Wed Jan 19 09:41:13 2011 -0500
 
     [gi] allow marshalling None for hashes
 
- gi/pygi-argument.c | 5 +++++
+ gi/pygi-argument.c |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 93f1b787ab8420300d1064c0237a0c2d8a2ac98f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 09:40:37 2011 -0500
+Date:  Wed Jan 19 09:40:37 2011 -0500
 
     [gi] add marshalling to some out values
 
- gi/pygi-argument.c | 50
+ gi/pygi-argument.c |  50
  +++++++++++++++++++++++++++++++++++++++++---------
  1 file changed, 41 insertions(+), 9 deletions(-)
 
 commit 614b6ca7f45c4acbee088fe74fecf279ed50cc0c
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 15:27:33 2011 +0100
+Date:  Wed Jan 19 15:27:33 2011 +0100
 
     [gi] Fixed typo in exception
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 5f16df31b5a5a9f45f702eee48c3a18899ea3f71
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 09:13:44 2011 -0500
+Date:  Wed Jan 19 09:13:44 2011 -0500
 
     [gi] fix marshalling structs
 
- gi/pygi-argument.c | 47 +++++++++++++++++++++++++++++++++++------------
- gi/pygi-foreign.c  | 18 ++++++++++++------
- gi/pygi-foreign.h  |  8 ++++----
+ gi/pygi-argument.c |  47 +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign.c  |  18 ++++++++++++------
+ gi/pygi-foreign.h  |   8 ++++----
  3 files changed, 51 insertions(+), 22 deletions(-)
 
 commit b2189424f9dd6d3a4a5b9792f0d5843fc27657d1
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 15:12:25 2011 +0100
+Date:  Wed Jan 19 15:12:25 2011 +0100
 
     [gi] Enable handling of Gdk.EventType.2BUTTON_PRESS and 3BUTTON_PRESS
 
- gi/overrides/Gdk.py | 4 ++--
+ gi/overrides/Gdk.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 5eca5ff2c9509ec96158fe43b29f0fd951243efe
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Wed Jan 19 14:54:57 2011 +0100
+Date:  Wed Jan 19 14:54:57 2011 +0100
 
     Revert "Fix Pango FontDescription override"
 
@@ -26495,141 +8437,141 @@ Date:   Wed Jan 19 14:54:57 2011 +0100
 
     This reverts commit 8878c57676091c08e66bc6cbe735d898cb420582.
 
- gi/overrides/Pango.py   | 5 ++++-
- tests/test_overrides.py | 5 +++++
+ gi/overrides/Pango.py  |    5 ++++-
+ tests/test_overrides.py |    5 +++++
  2 files changed, 9 insertions(+), 1 deletion(-)
 
 commit 9e7b95b3676a1b502662523a9bd4ebe40ccb4845
 Author: Tony Young <rofflwaffls@gmail.com>
-Date:   Thu Dec 16 23:39:33 2010 +0000
+Date:  Thu Dec 16 23:39:33 2010 +0000
 
     Python iterator interface support for GFileEnumerator.
 
- gi/overrides/Gio.py      | 41 +++++++++++++++++++++++++++++++++++++++++
- gi/overrides/Makefile.am |  1 +
- tests/test_overrides.py  | 20 ++++++++++++++++++++
+ gi/overrides/Gio.py     |   41 +++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Makefile.am |    1 +
+ tests/test_overrides.py  |   20 ++++++++++++++++++++
  3 files changed, 62 insertions(+)
 
 commit bca5834fc8fa342149e0eec7b396877a2abe6d33
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jan 7 12:10:37 2011 +0100
+Date:  Fri Jan 7 12:10:37 2011 +0100
 
     Remove gio static bindings
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- Makefile.am                       |    2 +-
- configure.ac                      |   25 -
- gio/.gitignore                    |    3 -
- gio/Makefile.am                   |  117 -
- gio/__init__.py                   |   40 -
- gio/gappinfo.override             |  213 --
+ Makefile.am                      |    2 +-
+ configure.ac                     |   25 -
+ gio/.gitignore                           |    3 -
+ gio/Makefile.am                  |  117 -
+ gio/__init__.py                  |   40 -
+ gio/gappinfo.override            |  213 --
  gio/gapplaunchcontext.override    |   99 -
  gio/gbufferedinputstream.override |   70 -
- gio/gcancellable.override         |   38 -
- gio/gdatainputstream.override     |  250 --
- gio/gdrive.override               |  347 --
- gio/gfile.override                | 2215 -----------
- gio/gfileattribute.override       |  153 -
- gio/gfileenumerator.override      |  184 -
- gio/gfileinfo.override            |  121 -
- gio/gfileinputstream.override     |   68 -
- gio/gfileiostream.override        |   68 -
+ gio/gcancellable.override        |   38 -
+ gio/gdatainputstream.override    |  250 --
+ gio/gdrive.override              |  347 --
+ gio/gfile.override               | 2215 -----------
+ gio/gfileattribute.override      |  153 -
+ gio/gfileenumerator.override     |  184 -
+ gio/gfileinfo.override                   |  121 -
+ gio/gfileinputstream.override    |   68 -
+ gio/gfileiostream.override       |   68 -
  gio/gfileoutputstream.override    |   68 -
- gio/gicon.override                |  310 --
- gio/ginputstream.override         |  344 --
- gio/gio-types.defs                |  807 ----
- gio/gio.defs                      | 7465
+ gio/gicon.override               |  310 --
+ gio/ginputstream.override        |  344 --
+ gio/gio-types.defs               |  807 ----
+ gio/gio.defs                     | 7465
  -------------------------------------
- gio/gio.override                  |  409 --
- gio/giomodule.c                   |  208 --
- gio/giostream.override            |   68 -
+ gio/gio.override                 |  409 --
+ gio/giomodule.c                  |  208 --
+ gio/giostream.override                   |   68 -
  gio/gmemoryinputstream.override   |   91 -
  gio/gmemoryoutputstream.override  |   45 -
- gio/gmount.override               |  454 ---
- gio/goutputstream.override        |  292 --
- gio/gresolver.override            |  312 --
- gio/gsocket.override              |  575 ---
- gio/gvolume.override              |  237 --
- gio/gvolumemonitor.override       |   94 -
- gio/pygio-utils.c                 |  236 --
- gio/pygio-utils.h                 |   49 -
- gio/unix-types.defs               |   55 -
- gio/unix.defs                     |  475 ---
- gio/unix.override                 |   62 -
- gio/unixmodule.c                  |   52 -
- tests/Makefile.am                 |    9 -
- tests/runtests-windows.py         |    3 -
- tests/test_gcancellable.py        |   15 -
- tests/test_gicon.py               |  112 -
- tests/test_gio.py                 | 1138 ------
- tests/test_gresolver.py           |   68 -
- tests/test_gsocket.py             |  126 -
+ gio/gmount.override              |  454 ---
+ gio/goutputstream.override       |  292 --
+ gio/gresolver.override                   |  312 --
+ gio/gsocket.override             |  575 ---
+ gio/gvolume.override             |  237 --
+ gio/gvolumemonitor.override      |   94 -
+ gio/pygio-utils.c                |  236 --
+ gio/pygio-utils.h                |   49 -
+ gio/unix-types.defs              |   55 -
+ gio/unix.defs                    |  475 ---
+ gio/unix.override                |   62 -
+ gio/unixmodule.c                 |   52 -
+ tests/Makefile.am                |    9 -
+ tests/runtests-windows.py        |    3 -
+ tests/test_gcancellable.py       |   15 -
+ tests/test_gicon.py              |  112 -
+ tests/test_gio.py                | 1138 ------
+ tests/test_gresolver.py          |   68 -
+ tests/test_gsocket.py            |  126 -
  46 files changed, 1 insertion(+), 18191 deletions(-)
 
 commit 6ab3d8d286573289cf8e41eee31eb806621f6f43
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 07:56:16 2011 -0500
+Date:  Wed Jan 19 07:56:16 2011 -0500
 
     [gi] switch from using (*arg). to arg-> when referencing union
     memebers
 
- gi/pygi-argument.c | 54
- +++++++++++++++++++++++++++---------------------------
+ gi/pygi-argument.c |  54
+ ++++++++++++++++++++++++++--------------------------
  1 file changed, 27 insertions(+), 27 deletions(-)
 
 commit 762ccb3d2620ea22023446b6ae79f3a111d8b56a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 07:49:52 2011 -0500
+Date:  Wed Jan 19 07:49:52 2011 -0500
 
     [gi] return FALSE when setting errors in the marshaller
 
- gi/pygi-argument.c | 3 ++-
+ gi/pygi-argument.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit cbaba6357937cbed3ebd34d2db1cdd59d37df118
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 07:14:18 2011 -0500
+Date:  Wed Jan 19 07:14:18 2011 -0500
 
     [gi] do arg counting in new invoke
 
- gi/pygi-cache.c               |  2 ++
- gi/pygi-cache.h               | 14 ++++++++------
- gi/pygi-invoke-state-struct.h |  2 +-
- gi/pygi-invoke.c              | 20 +++++++++++++++++++-
+ gi/pygi-cache.c              |    2 ++
+ gi/pygi-cache.h              |   14 ++++++++------
+ gi/pygi-invoke-state-struct.h |    2 +-
+ gi/pygi-invoke.c             |   20 +++++++++++++++++++-
  4 files changed, 30 insertions(+), 8 deletions(-)
 
 commit f45033858bed70d7defec3f71f26aa5b3999d680
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 19 06:35:45 2011 -0500
+Date:  Wed Jan 19 06:35:45 2011 -0500
 
     [gi] set length for uint8 in arrays in new invoke marshaller
 
- gi/pygi-argument.c | 1 +
+ gi/pygi-argument.c |   1 +
  1 file changed, 1 insertion(+)
 
 commit 09f7ca7e2378e6679002677ac3f4802f4cc7d9d5
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jan 19 12:04:15 2011 +0100
+Date:  Wed Jan 19 12:04:15 2011 +0100
 
     [gi] set length when marshalling guint8 erases
 
- gi/pygi-argument.c | 1 +
- tests/test_gi.py   | 4 ++++
+ gi/pygi-argument.c |   1 +
+ tests/test_gi.py   |   4 ++++
  2 files changed, 5 insertions(+)
 
 commit 22eee43e50a150ace80694213fb87be9f0c72f51
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Jan 19 10:27:47 2011 +0100
+Date:  Wed Jan 19 10:27:47 2011 +0100
 
     Convert Gdk.Pixbuf to GdkPixbuf.Pixbuf
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit a4b210d69c832629894090b7154ae194209b0c60
 Author: Arnaud Charlet <charlet@adacore.com>
-Date:   Tue Jan 18 18:31:29 2011 +0100
+Date:  Tue Jan 18 18:31:29 2011 +0100
 
     Disable calls to PyGILState_* when threads are disabled
 
@@ -26639,43 +8581,43 @@ Date:   Tue Jan 18 18:31:29 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=374603
 
- glib/pyglib.c               | 12 ++++++++++++
- gobject/pygobject-private.h |  6 ++++++
+ glib/pyglib.c              |   12 ++++++++++++
+ gobject/pygobject-private.h |   6 ++++++
  2 files changed, 18 insertions(+)
 
 commit 329afb6fb1b3c325a6a9de2b6aca91c64d51dd9f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 18 12:31:57 2011 -0500
+Date:  Tue Jan 18 12:31:57 2011 -0500
 
     [gi] fix handling of garrays vs c arrays
 
- gi/pygi-argument.c | 9 +++++++--
- gi/pygi-cache.c    | 2 ++
- gi/pygi-cache.h    | 1 +
+ gi/pygi-argument.c |   9 +++++++--
+ gi/pygi-cache.c    |   2 ++
+ gi/pygi-cache.h    |   1 +
  3 files changed, 10 insertions(+), 2 deletions(-)
 
 commit a000627ec3904b9414ce375aec8d144fc0c26248
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:29:50 2011 +0100
+Date:  Tue Jan 18 18:29:50 2011 +0100
 
     pygi-convert.sh: Do not comment out set_cell_data_func() calls;
     these should be ported properly
 
- pygi-convert.sh | 1 -
+ pygi-convert.sh |    1 -
  1 file changed, 1 deletion(-)
 
 commit 99ff4610fb5ece2fc8d2f9eba13e661968adf3f0
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:26:01 2011 +0100
+Date:  Tue Jan 18 18:26:01 2011 +0100
 
     pygi-convert.sh: Fix match for adding missing imports
 
- pygi-convert.sh | 8 ++++----
+ pygi-convert.sh |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 3aa95011fad67df20370e92bf25236a34d7d08d3
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 18:09:30 2011 +0100
+Date:  Tue Jan 18 18:09:30 2011 +0100
 
     pygi-convert.sh: Fix Gtk.Label handling to be idempotent
 
@@ -26684,30 +8626,30 @@ Date:   Tue Jan 18 18:09:30 2011 +0100
     hackish unfortunately. We can't use a match test or a lookahead/behind
     assertion.
 
- pygi-convert.sh | 5 +++--
+ pygi-convert.sh |    5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit f66051380c0432bf142774542ade2144adcd455e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 18 11:44:27 2011 -0500
+Date:  Tue Jan 18 11:44:27 2011 -0500
 
     [gi] use correct union memeber when marshalling floats
 
- gi/pygi-argument.c | 2 +-
+ gi/pygi-argument.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 36bc1c17e7d4189059337cc6a73c64edd819ec12
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Tue Jan 18 17:29:52 2011 +0100
+Date:  Tue Jan 18 17:29:52 2011 +0100
 
     Remove trailing whitespace from gi/overrides/Gtk.py
 
- gi/overrides/Gtk.py | 10 +++++-----
+ gi/overrides/Gtk.py |  10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 commit 1006df1929a667716c25e74b35b8f14643358732
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 18 11:24:06 2011 -0500
+Date:  Tue Jan 18 11:24:06 2011 -0500
 
     [gi] fix constructor invoking and add some support for interface
     out values
@@ -26716,16 +8658,16 @@ Date:   Tue Jan 18 11:24:06 2011 -0500
     static methods
       which happen to return an instance
 
- gi/pygi-argument.c |   8 ++--
- gi/pygi-cache.c    | 132
- +++++++++++++++++++++++++++++++++++++++++++++++++++--
- gi/pygi-invoke.c   |   9 ++--
- gi/types.py        |  21 +++------
+ gi/pygi-argument.c |   8 ++--
+ gi/pygi-cache.c    |  132
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-invoke.c   |   9 ++--
+ gi/types.py         21 +++------
  4 files changed, 142 insertions(+), 28 deletions(-)
 
 commit 8878c57676091c08e66bc6cbe735d898cb420582
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 16:47:10 2011 +0100
+Date:  Tue Jan 18 16:47:10 2011 +0100
 
     Fix Pango FontDescription override
 
@@ -26735,23 +8677,23 @@ Date:   Tue Jan 18 16:47:10 2011 +0100
     (which works
     just fine now).
 
- gi/overrides/Pango.py | 7 +------
+ gi/overrides/Pango.py |    7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit efbbe71634037fa100b17327389b883b259cca54
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 16:23:39 2011 +0100
+Date:  Tue Jan 18 16:23:39 2011 +0100
 
     tests: Respect existing $GI_TYPELIB_PATH
 
     This allows us to run the test suite against local typelibs.
 
- tests/Makefile.am | 2 +-
+ tests/Makefile.am |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c96ca383350e5b9b079d9a86464922314939c006
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 18 07:16:40 2011 -0500
+Date:  Tue Jan 18 07:16:40 2011 -0500
 
     [gi] fix aux value offsets for methods and element size crashers
 
@@ -26760,30 +8702,30 @@ Date:   Tue Jan 18 07:16:40 2011 -0500
     * use _pygi_g_type_info_size instead of _pygi_g_type_tag_size to
       support all types
 
- gi/pygi-cache.c | 42 ++++++++++++++++++++++++------------------
+ gi/pygi-cache.c |   42 ++++++++++++++++++++++++------------------
  1 file changed, 24 insertions(+), 18 deletions(-)
 
 commit f56d85a7f39c2088bf9fd50b1b1e5b67c03104d3
-Merge: 84d6142c 7d997b6f
+Merge: 84d6142 7d997b6
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Tue Jan 18 13:14:45 2011 +0100
+Date:  Tue Jan 18 13:14:45 2011 +0100
 
     Merge branch 'value'
 
 commit 7d997b6fe88343776c4d67a9f3437ba0c4122da0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Tue Jan 18 13:12:36 2011 +0100
+Date:  Tue Jan 18 13:12:36 2011 +0100
 
     GTK overrides: Do type conversion to column types of ListStore and
     TreeStore in set_value
 
- gi/overrides/Gtk.py     | 28 ++++++++++++++++++----------
- tests/test_overrides.py | 12 +++++++++++-
+ gi/overrides/Gtk.py    |   28 ++++++++++++++++++----------
+ tests/test_overrides.py |   12 +++++++++++-
  2 files changed, 29 insertions(+), 11 deletions(-)
 
 commit 84d6142c14a7ebfb7284d3db52e14d3393f93905
 Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Jan 17 18:57:58 2011 +0100
+Date:  Mon Jan 17 18:57:58 2011 +0100
 
     Always register a new GType when a GObject class is subclassed
 
@@ -26801,74 +8743,74 @@ Date:   Mon Jan 17 18:57:58 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=543056
 
- gobject/__init__.py |  6 +++---
- tests/test_gi.py    | 21 ++-------------------
+ gobject/__init__.py |   6 +++---
+ tests/test_gi.py    |  21 ++-------------------
  2 files changed, 5 insertions(+), 22 deletions(-)
 
 commit 30750ccef31e6c864628f418fc00e8c573d29a1b
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Tue Jan 18 12:57:13 2011 +0100
+Date:  Tue Jan 18 12:57:13 2011 +0100
 
     Raise required versions of GLib and GObject-Introspection
 
     https://bugzilla.gnome.org/show_bug.cgi?id=612126
 
- configure.ac | 6 +++---
+ configure.ac |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 761e98d32729f5894f4c75a54c65ed11329dc9d5
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:52:32 2011 +0100
+Date:  Tue Jan 18 12:52:32 2011 +0100
 
     pygi-convert.sh: Handle keysyms
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit d62cdfa38a675c1daf3bc12d5cd769434eea5dc8
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:14:09 2011 +0100
+Date:  Tue Jan 18 12:14:09 2011 +0100
 
     GLib overrides: Add test case for array variant building
 
- tests/test_overrides.py | 7 +++++++
+ tests/test_overrides.py |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 69a78307f3762e3f54d28d98514cec7d31ff20db
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jan 18 10:21:03 2011 +0100
+Date:  Tue Jan 18 10:21:03 2011 +0100
 
     Remove cairo.RectangleInt from the foreign module
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639824
 
- gi/pygi-foreign-cairo.c | 96
- -------------------------------------------------
+ gi/pygi-foreign-cairo.c |   96
+ -----------------------------------------------
  1 file changed, 96 deletions(-)
 
 commit 017680c9a5e163021628bf29543598861a3b600a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jan 18 10:20:25 2011 +0100
+Date:  Tue Jan 18 10:20:25 2011 +0100
 
     Dont try to guess the transfer if its a boxed
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639823
 
- gi/pygi-invoke.c | 5 ++++-
+ gi/pygi-invoke.c |    5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 771ef76574690eb98926249f38661d741d1ebbb0
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Tue Jan 18 12:02:01 2011 +0100
+Date:  Tue Jan 18 12:02:01 2011 +0100
 
     The tags can be Empty not None.
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b1a98083cdc50653e1d7bfb809bdf089f833df3d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 12:01:28 2011 +0100
+Date:  Tue Jan 18 12:01:28 2011 +0100
 
     Add Pythonic iterators and indexing to GVariant
 
@@ -26878,14 +8820,14 @@ Date:   Tue Jan 18 12:01:28 2011 +0100
 
     Add corresponding test cases.
 
- gi/overrides/GLib.py    | 50 ++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 55
- +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py   |   50 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   55
+ +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 105 insertions(+)
 
 commit ecb9f824c503c529d43e585b4cdb4c1c9ab14593
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Tue Jan 18 10:48:03 2011 +0100
+Date:  Tue Jan 18 10:48:03 2011 +0100
 
     Add GLib.Variant.unpack()
 
@@ -26897,39 +8839,39 @@ Date:   Tue Jan 18 10:48:03 2011 +0100
 
     Add appropriate test case.
 
- gi/overrides/GLib.py    | 45
+ gi/overrides/GLib.py   |   45
  +++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 33 ++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py |   33 ++++++++++++++++++++++++++++++++-
  2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 31c73dee34a52fd22b5ff3a23adce92cea5ddc3d
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Tue Jan 18 10:56:18 2011 +0100
+Date:  Tue Jan 18 10:56:18 2011 +0100
 
     Add override for gtk_text_buffer_insert_with_tags
 
- gi/overrides/Gtk.py     | 12 ++++++++++++
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Gtk.py    |   12 ++++++++++++
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 18 insertions(+)
 
 commit fc7d7f7f153d57ff3866b7bfd5e6479d702cc4d9
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Mon Jan 17 14:35:14 2011 +0100
+Date:  Mon Jan 17 14:35:14 2011 +0100
 
     Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- gi/Makefile.am    | 6 ++++--
- gio/Makefile.am   | 2 +-
- glib/Makefile.am  | 2 +-
- m4/python.m4      | 7 +++++--
- tests/Makefile.am | 2 +-
+ gi/Makefile.am    |   6 ++++--
+ gio/Makefile.am   |   2 +-
+ glib/Makefile.am  |   2 +-
+ m4/python.m4     |    7 +++++--
+ tests/Makefile.am |   2 +-
  5 files changed, 12 insertions(+), 7 deletions(-)
 
 commit bceec758b27e6c396d17a79424633b5dc9116f54
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Mon Jan 17 14:20:55 2011 +0100
+Date:  Mon Jan 17 14:20:55 2011 +0100
 
     Kill JD_CHECK_PYTHON_HEADERS
 
@@ -26937,13 +8879,13 @@ Date:   Mon Jan 17 14:20:55 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- configure.ac |  2 +-
- m4/python.m4 | 31 +------------------------------
+ configure.ac |    2 +-
+ m4/python.m4 |   31 +------------------------------
  2 files changed, 2 insertions(+), 31 deletions(-)
 
 commit e2dea065da94d17a915abe1ce4671b1dc48e02c0
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 19:09:27 2011 +0100
+Date:  Mon Jan 17 19:09:27 2011 +0100
 
     Revert "Override Gtk.Box.pack_start and pack_end to set default
     values to be compliant with pygtk"
@@ -26952,122 +8894,122 @@ Date:   Mon Jan 17 19:09:27 2011 +0100
 
     Conflicts:
 
-            gi/overrides/Gtk.py
+       gi/overrides/Gtk.py
 
- gi/overrides/Gtk.py | 10 ----------
+ gi/overrides/Gtk.py |  10 ----------
  1 file changed, 10 deletions(-)
 
 commit 4fbae9629adc166627de05bb0946b71485343d69
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 19:08:23 2011 +0100
+Date:  Mon Jan 17 19:08:23 2011 +0100
 
     Revert "Override Gtk.CellLayout.pack_start and pack_end to add
     default values to be compliant with pygtk"
 
     This reverts commit 232841148f35684be83a2f47b5b18da4fb74f63a.
 
- gi/overrides/Gtk.py | 13 ++-----------
+ gi/overrides/Gtk.py |  13 ++-----------
  1 file changed, 2 insertions(+), 11 deletions(-)
 
 commit c054f0aca67952876b3519bb75ddc62c5517f7cb
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 19:08:06 2011 +0100
+Date:  Mon Jan 17 19:08:06 2011 +0100
 
     Revert "Override Gtk.TreeViewColumn.pack_start, pack_end and
     set_cell_data_func to add default values to be compliant with pygtk"
 
     This reverts commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599.
 
- gi/overrides/Gtk.py | 9 ---------
+ gi/overrides/Gtk.py |   9 ---------
  1 file changed, 9 deletions(-)
 
 commit 2d9534f347505573da46743b47318e08bf073aef
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 18:54:10 2011 +0100
+Date:  Mon Jan 17 18:54:10 2011 +0100
 
     pygi-convert.sh: Handle gtk.combo_box_new_text()
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 0586a83212a9f9234fe00659ae744ab04e7ccc67
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 17 12:31:03 2011 -0500
+Date:  Mon Jan 17 12:31:03 2011 -0500
 
     support callbacks
 
- gi/pygi-argument.c | 68 ++++++++++++++++++++++++++++++++++++++++++++--
- gi/pygi-cache.c    | 80
- +++++++++++++++++++++++++++++++++++++++++-------------
- gi/pygi-cache.h    | 13 +++++++--
- gi/pygi-invoke.c   |  2 +-
+ gi/pygi-argument.c |  68 ++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c    |  80
+ +++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-cache.h    |  13 +++++++--
+ gi/pygi-invoke.c   |   2 +-
  4 files changed, 138 insertions(+), 25 deletions(-)
 
 commit 914d3a0a29680f4d3aa0e1f8afdd625b017b013a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 16:57:53 2011 +0100
+Date:  Mon Jan 17 16:57:53 2011 +0100
 
     Override TreeSortable.set_sort_func and set_default_sort_func to
     add default values to be pygtk compliant
 
- gi/overrides/Gtk.py | 6 ++++++
+ gi/overrides/Gtk.py |   6 ++++++
  1 file changed, 6 insertions(+)
 
 commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 16:29:28 2011 +0100
+Date:  Mon Jan 17 16:29:28 2011 +0100
 
     Override Gtk.TreeViewColumn.pack_start, pack_end and
     set_cell_data_func to add default values to be compliant with pygtk
 
- gi/overrides/Gtk.py | 9 +++++++++
+ gi/overrides/Gtk.py |   9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 232841148f35684be83a2f47b5b18da4fb74f63a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 16:28:51 2011 +0100
+Date:  Mon Jan 17 16:28:51 2011 +0100
 
     Override Gtk.CellLayout.pack_start and pack_end to add default values
     to be compliant with pygtk
 
- gi/overrides/Gtk.py | 13 +++++++++++--
+ gi/overrides/Gtk.py |  13 +++++++++++--
  1 file changed, 11 insertions(+), 2 deletions(-)
 
 commit 1dec12826753756fcadefc8ef8c756fc902c320b
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 15:54:32 2011 +0100
+Date:  Mon Jan 17 15:54:32 2011 +0100
 
     Override Gtk.Paned pack1 and pack2 to add default values to be
     compliant with pygtk
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit a8c727b9c4195d8085a45661683a18614ae84485
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Mon Jan 17 15:46:25 2011 +0100
+Date:  Mon Jan 17 15:46:25 2011 +0100
 
     Override Gtk.Box.pack_start and pack_end to set default values to
     be compliant with pygtk
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 7cc8ac35bb0d8dbf7d66f014f8cd7ff070b3acb8
 Author: Steve Frécinaux <code@istique.net>
-Date:   Wed Aug 4 00:30:05 2010 +0200
+Date:  Wed Aug 4 00:30:05 2010 +0200
 
     Handle GObject subclasses in the property helper.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625982
 
- gobject/propertyhelper.py | 26 +++++++++++++-------------
- tests/test_properties.py  |  9 +++++++++
+ gobject/propertyhelper.py |   26 +++++++++++++-------------
+ tests/test_properties.py  |   9 +++++++++
  2 files changed, 22 insertions(+), 13 deletions(-)
 
 commit 7a0548dbfbdfe481f75315b6bc7824a9f1a8a87b
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 17:52:15 2011 +0100
+Date:  Mon Jan 17 17:52:15 2011 +0100
 
     Fix handling of unicode for GtkTreeModels
 
@@ -27079,13 +9021,13 @@ Date:   Mon Jan 17 17:52:15 2011 +0100
 
     Add corresponding test case.
 
- gi/overrides/Gtk.py     |  2 +-
- tests/test_overrides.py | 12 +++++++++++-
+ gi/overrides/Gtk.py    |    2 +-
+ tests/test_overrides.py |   12 +++++++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 09c21c79fb6063c8451f53d4588363d2be7239f4
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Mon Jan 17 16:46:08 2011 +0100
+Date:  Mon Jan 17 16:46:08 2011 +0100
 
     In IntrospectionModule and DynamicModule classes, make all instance
     attributes start with an underscore.
@@ -27097,39 +9039,39 @@ Date:   Mon Jan 17 16:46:08 2011 +0100
     In Gstreamer, there is a function gst_version, which was previously
     inaccessible because of IntrospectionModule.version overriding it.
 
- gi/module.py                       | 26 +++++++++++++-------------
- gi/overrides/GIMarshallingTests.py |  2 +-
- gi/overrides/GLib.py               |  2 +-
- gi/overrides/Gdk.py                | 10 +++++-----
- gi/overrides/Gtk.py                |  2 +-
- gi/overrides/Pango.py              |  2 +-
- gi/overrides/__init__.py           |  2 +-
- tests/test_everything.py           |  2 +-
+ gi/module.py                      |   26 +++++++++++++-------------
+ gi/overrides/GIMarshallingTests.py |   2 +-
+ gi/overrides/GLib.py              |    2 +-
+ gi/overrides/Gdk.py               |   10 +++++-----
+ gi/overrides/Gtk.py               |    2 +-
+ gi/overrides/Pango.py             |    2 +-
+ gi/overrides/__init__.py          |    2 +-
+ tests/test_everything.py          |    2 +-
  8 files changed, 24 insertions(+), 24 deletions(-)
 
 commit 2c70beca9e76e4dc253453c556e6985ce59a3dd9
 Author: Laszlo Pandy <lpandy@src.gnome.org>
-Date:   Mon Jan 17 16:17:25 2011 +0100
+Date:  Mon Jan 17 16:17:25 2011 +0100
 
     Amend previous enum wrapping commit to remove redundant setting of
     __info__ attribute.
 
- gi/module.py | 2 +-
- gi/types.py  | 6 +++---
+ gi/module.py |    2 +-
+ gi/types.py  |    6 +++---
  2 files changed, 4 insertions(+), 4 deletions(-)
 
 commit 6fbb6be5a5d0d9cd43e1504b8dda5aa75feb95ca
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 16:16:45 2011 +0100
+Date:  Mon Jan 17 16:16:45 2011 +0100
 
     pygi-convert.sh: Handle GdkPixbuf.InterpType
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 66a5784f4ab5de5b6d8d51eb4ce869fa26f6a601
 Author: Laszlo Pandy <laszlok2@gmail.com>
-Date:   Mon Jan 17 15:43:34 2011 +0100
+Date:  Mon Jan 17 15:43:34 2011 +0100
 
     Fix wrapping of enums: Create new Python type for each non-gtype enum.
 
@@ -27142,30 +9084,30 @@ Date:   Mon Jan 17 15:43:34 2011 +0100
     enum from the GIMarshallingTests (updating gobject-introspection
     will be required).
 
- gi/module.py     |  2 +-
- gi/types.py      |  2 ++
- tests/test_gi.py | 10 ++++++++++
+ gi/module.py    |    2 +-
+ gi/types.py     |    2 ++
+ tests/test_gi.py |   10 ++++++++++
  3 files changed, 13 insertions(+), 1 deletion(-)
 
 commit da50d5620a42046d4fc905bb28a0890d73533cb1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Dec 13 18:03:51 2010 +0100
+Date:  Mon Dec 13 18:03:51 2010 +0100
 
     Use g_vfunc_info_invoke for chaining up in vfuncs
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637165
 
- gi/pygi-info.c   |  4 ++--
- gi/pygi-invoke.c | 72
- +++++++++++++++++++++++++++++++++++++++++++-------------
- gi/pygi-invoke.h |  3 ++-
- gi/types.py      | 28 +++++++++++++++++++++-
- tests/test_gi.py |  5 ++--
+ gi/pygi-info.c   |    4 +--
+ gi/pygi-invoke.c |   72
+ +++++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-invoke.h |    3 ++-
+ gi/types.py     |   28 ++++++++++++++++++++-
+ tests/test_gi.py |    5 ++--
  5 files changed, 89 insertions(+), 23 deletions(-)
 
 commit 8ceef79c98a1c2e22ed8ab655ef1169f1763dd23
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Fri Dec 31 18:38:04 2010 +0100
+Date:  Fri Dec 31 18:38:04 2010 +0100
 
     Move pyglib_{main_context, option_context, option_group}_new into
     _PyGLib_API
@@ -27185,97 +9127,97 @@ Date:   Fri Dec 31 18:38:04 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636656
 
- glib/glibmodule.c       |  5 ++++-
- glib/pyglib-private.h   |  3 +++
- glib/pyglib.c           | 48
- +++---------------------------------------------
- glib/pygmaincontext.c   | 22 ++++++++++++++++++++++
- glib/pygmaincontext.h   |  2 +-
- glib/pygmainloop.c      |  2 +-
- glib/pygoptioncontext.c | 21 +++++++++++++++++++++
- glib/pygoptioncontext.h |  2 ++
- glib/pygoptiongroup.c   | 26 ++++++++++++++++++++++++++
- glib/pygoptiongroup.h   |  2 ++
- glib/pygsource.c        |  2 +-
+ glib/glibmodule.c      |    5 ++++-
+ glib/pyglib-private.h  |    3 +++
+ glib/pyglib.c          |   48
+ +++--------------------------------------------
+ glib/pygmaincontext.c  |   22 ++++++++++++++++++++++
+ glib/pygmaincontext.h  |    2 +-
+ glib/pygmainloop.c     |    2 +-
+ glib/pygoptioncontext.c |   21 +++++++++++++++++++++
+ glib/pygoptioncontext.h |    2 ++
+ glib/pygoptiongroup.c  |   26 +++++++++++++++++++++++++
+ glib/pygoptiongroup.h  |    2 ++
+ glib/pygsource.c       |    2 +-
  11 files changed, 86 insertions(+), 49 deletions(-)
 
 commit 17caffe4eeefeaf33a56ececbc6c7454f60b9d76
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 14:51:26 2011 +0100
+Date:  Mon Jan 17 14:51:26 2011 +0100
 
     pygi-convert.sh: Handle Gdk.DragAction
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit aa390aa80f06ac83ec89e5c5ee143d21ace97917
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 14:46:58 2011 +0100
+Date:  Mon Jan 17 14:46:58 2011 +0100
 
     pygi-convert.sh: Generalize Gtk.Settings migration
 
     There are other GSettings.get_* functions like get_for_screen().
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2e6d5bb49425e6087ca61765ecb72e7a760f2ab2
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Mon Jan 17 11:22:46 2011 +0100
+Date:  Mon Jan 17 11:22:46 2011 +0100
 
     pygi-convert.sh: Don't change the name of "glib" submodules
 
     This particular affects dbus.mainloop.glib.*
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3887b030fc19d25e0cd7b4ed504f4ed23363c3d6
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Jan 16 22:09:56 2011 +0100
+Date:  Sun Jan 16 22:09:56 2011 +0100
 
     Plug another memory leak
 
     Do not leak interface info in (g|s)_et_property.
 
- gi/pygi-property.c | 4 ++++
+ gi/pygi-property.c |   4 ++++
  1 file changed, 4 insertions(+)
 
 commit a4950b4cbb3c7567a8586061bb361adb7d9afb98
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Jan 16 21:43:30 2011 +0100
+Date:  Sun Jan 16 21:43:30 2011 +0100
 
     Plug a small memory leak.
 
     Do not leak type_info in find_vfunc_info
 
- gi/gimodule.c | 10 +++++-----
+ gi/gimodule.c |   10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 commit d0cbcc45366d40702c69cef207d3c0f361260c02
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Jan 16 12:16:31 2011 +0100
+Date:  Sun Jan 16 12:16:31 2011 +0100
 
     Override Table.attach() to behave like pygtk
 
     It is fairly common and even gtk itself still has attach_defaults.
 
- gi/overrides/Gtk.py     | 3 +++
- tests/test_overrides.py | 4 ++++
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |    4 ++++
  2 files changed, 7 insertions(+)
 
 commit 6409d659326bf3cefdf6051379e8bc2031f16733
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Sat Jan 15 11:20:23 2011 -0600
+Date:  Sat Jan 15 11:20:23 2011 -0600
 
     pygi-convert.sh: Convert Pango.WrapMode
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 6aaa6a38198e84a189ca1e8d26b1871d5b6bb711
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Sat Jan 15 11:17:09 2011 -0600
+Date:  Sat Jan 15 11:17:09 2011 -0600
 
     pygi-convert.sh: Don't change the name of "gtk" submodules
 
@@ -27283,35 +9225,35 @@ Date:   Sat Jan 15 11:17:09 2011 -0600
     changing those,
     just change module names which start with "gtk" or "gdk".
 
- pygi-convert.sh | 4 ++--
+ pygi-convert.sh |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 9be0f1f2dfb89150faf1827ef482feea03645149
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jan 13 23:56:19 2011 -0500
+Date:  Thu Jan 13 23:56:19 2011 -0500
 
     [gi] implement aux arg handling for array lengths
 
- gi/pygi-argument.c |  8 ++++++++
- gi/pygi-cache.c    | 36 ++++++++++++++++++++++++++++--------
- gi/pygi-cache.h    |  1 -
- gi/pygi-invoke.c   |  8 ++++++--
+ gi/pygi-argument.c |   8 ++++++++
+ gi/pygi-cache.c    |  36 ++++++++++++++++++++++++++++--------
+ gi/pygi-cache.h    |   1 -
+ gi/pygi-invoke.c   |   8 ++++++--
  4 files changed, 42 insertions(+), 11 deletions(-)
 
 commit cfca2f0a53a5c29f543875ca4cb83a2e18d3bc72
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jan 13 21:07:25 2011 -0500
+Date:  Thu Jan 13 21:07:25 2011 -0500
 
     [gi] marshal in hashes
 
- gi/pygi-argument.c |  93 ++++++++++++++++++++++++++++++++++++++--
- gi/pygi-cache.c    | 122
- +++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-argument.c |  93 +++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c    |  122
+ ++++++++++++++++++++++++++++++++++++----------------
  2 files changed, 176 insertions(+), 39 deletions(-)
 
 commit c36fbf4918c8557a8e274a12004a412da3b22b2c
 Author: Laszlo Pandy <git@laszlopandy.com>
-Date:   Tue Jan 11 21:41:47 2011 +0100
+Date:  Tue Jan 11 21:41:47 2011 +0100
 
     Fix the __dir__() methods on DynamicModule and IntrospectionModule
 
@@ -27327,113 +9269,113 @@ Date:   Tue Jan 11 21:41:47 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639229
 
- gi/module.py             | 28 +++++++++++++++++++++-------
- tests/test_everything.py | 18 ++++++++++++++++++
+ gi/module.py            |   28 +++++++++++++++++++++-------
+ tests/test_everything.py |   18 ++++++++++++++++++
  2 files changed, 39 insertions(+), 7 deletions(-)
 
 commit 1679e6af3f212e4d4644e048dc3c6177ed3fac6b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Thu Jan 13 00:02:20 2011 +0100
+Date:  Thu Jan 13 00:02:20 2011 +0100
 
     pygi-convert.sh: handle ReliefStyle
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit e9166ba5d19f2b586f65a3b83a671a5afd486d8f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 12 16:50:30 2011 -0500
+Date:  Wed Jan 12 16:50:30 2011 -0500
 
     [gi] support for GList and GSList in
 
- gi/pygi-argument.c | 122
- ++++++++++++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-argument.c |  122
+ +++++++++++++++++++++++++++++++++++++++++++++++++---
  1 file changed, 116 insertions(+), 6 deletions(-)
 
 commit 9baf3240fbac103823ad0feaaf1c82e46d276722
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 12 16:24:17 2011 -0500
+Date:  Wed Jan 12 16:24:17 2011 -0500
 
     [gi] handle allow_none for all args
 
- gi/pygi-cache.c  | 3 ++-
- gi/pygi-cache.h  | 1 +
- gi/pygi-invoke.c | 7 +++++++
+ gi/pygi-cache.c  |    3 ++-
+ gi/pygi-cache.h  |    1 +
+ gi/pygi-invoke.c |    7 +++++++
  3 files changed, 10 insertions(+), 1 deletion(-)
 
 commit d54d12c66226910952b0dc44c8d9514a7edaa6f2
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jan 12 16:23:02 2011 -0500
+Date:  Wed Jan 12 16:23:02 2011 -0500
 
     [gi] fix marshalling fixed arrays
 
     * get the correct item_size and pass the GArray data not the GArray
 
- gi/pygi-argument.c | 39 ++++++++++++++++++++++-----------------
- gi/pygi-cache.c    |  3 ++-
+ gi/pygi-argument.c |  39 ++++++++++++++++++++++-----------------
+ gi/pygi-cache.c    |   3 ++-
  2 files changed, 24 insertions(+), 18 deletions(-)
 
 commit 3b0eff80d2ee35e0417476f0a170b9e178e3d1ee
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 11 17:20:43 2011 -0500
+Date:  Tue Jan 11 17:20:43 2011 -0500
 
     [gi] implement out arg handling
 
- gi/pygi-argument.c            | 43 ++++++++++---------------------------
- gi/pygi-cache.c               | 22 ++++++++++++++-----
- gi/pygi-invoke-state-struct.h | 13 +++++++++++
- gi/pygi-invoke.c              | 50
- +++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-argument.c           |   43 +++++++++--------------------------
+ gi/pygi-cache.c              |   22 +++++++++++++-----
+ gi/pygi-invoke-state-struct.h |   13 +++++++++++
+ gi/pygi-invoke.c             |   50
+ +++++++++++++++++++++++++++++++++++++++--
  4 files changed, 89 insertions(+), 39 deletions(-)
 
 commit bd002c72675d35b5e60ab773181e7c36c30d2625
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Jan 11 22:21:18 2011 +0100
+Date:  Tue Jan 11 22:21:18 2011 +0100
 
     setup.py: fix the provides keyword argument
 
- setup.py | 2 +-
+ setup.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 59dac72d0fa8e1d68bbbc13d76c2747f1cb11857
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Jan 11 22:19:18 2011 +0100
+Date:  Tue Jan 11 22:19:18 2011 +0100
 
     setup.py: use the same spaces-less format for all setup() parameters
 
- setup.py | 8 ++++----
+ setup.py |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit c5c149be171895d292852df364541f14f0ec423a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 11 15:39:09 2011 -0500
+Date:  Tue Jan 11 15:39:09 2011 -0500
 
     [gi] implemented return marshalling and started on out marshalling
 
- gi/pygi-argument.c | 387
- ++++++++++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-argument.h | 117 ++++++++++++++++
- gi/pygi-cache.c    | 316 ++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-cache.h    |   8 +-
- gi/pygi-invoke.c   |  12 +-
+ gi/pygi-argument.c |  387
+ +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-argument.h |  117 ++++++++++++++++
+ gi/pygi-cache.c    |  316 +++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-cache.h    |   8 +-
+ gi/pygi-invoke.c   |  12 +-
  5 files changed, 829 insertions(+), 11 deletions(-)
 
 commit 4fcca8518774ab89607196dfc52037e3da30ac8a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 11 13:49:58 2011 -0500
+Date:  Tue Jan 11 13:49:58 2011 -0500
 
     [gi] flesh out interface in marshalling a bit more
 
- gi/pygi-argument.c | 74
- ++++++++++++++++++++++++++++++++++++++++----------
- gi/pygi-cache.c    | 79
- ++++++++++++++++++++++++++++++++++++++++++------------
- gi/pygi-cache.h    |  1 +
+ gi/pygi-argument.c |  74
+ ++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-cache.c    |  79
+ +++++++++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.h    |   1 +
  3 files changed, 123 insertions(+), 31 deletions(-)
 
 commit 4992dca9f5cea68d85eb2ed86105c9c6b8311d79
 Author: Laszlo Pandy <laszlok2@gmail.com>
-Date:   Tue Jan 11 19:30:38 2011 +0100
+Date:  Tue Jan 11 19:30:38 2011 +0100
 
     Add a __repr__() method to DynamicModule.
 
@@ -27448,23 +9390,23 @@ Date:   Tue Jan 11 19:30:38 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639232
 
- gi/module.py | 9 +++++++++
+ gi/module.py |    9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 2ffaec59e7349c145a0e2a5edba2ffb7d8628369
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jan 11 19:40:19 2011 +0100
+Date:  Tue Jan 11 19:40:19 2011 +0100
 
     Go back to using getattr() in DynamicModule.__getattr__
 
     Breaks marshalling of some types
 
- gi/module.py | 2 +-
+ gi/module.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 52a298cc0f05ceec96457f17f9a801e9838fb757
 Author: Laszlo Pandy <laszlok2@gmail.com>
-Date:   Tue Jan 11 19:26:50 2011 +0100
+Date:  Tue Jan 11 19:26:50 2011 +0100
 
     Change __dir__() to report all the attributes that __getattr__
     supports
@@ -27480,37 +9422,37 @@ Date:   Tue Jan 11 19:26:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639229
 
- gi/module.py | 10 +++++++---
+ gi/module.py |   10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)
 
 commit 369a75ba5fb64ff7a7c95d21f8bfe359e639e9ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 10 17:55:03 2011 -0500
+Date:  Mon Jan 10 17:55:03 2011 -0500
 
     [gi] add object and interface in marshalling
 
     * also remove the PyGIArgCleanup sinature as GDestroyNotify works
     just fine
 
- gi/pygi-argument.c |  15 +++--
- gi/pygi-cache.c    | 182
- ++++++++++++++++++++++++++++++++++++++++++++++++-----
- gi/pygi-cache.h    |   1 -
- gi/pygi-invoke.c   |   1 +
+ gi/pygi-argument.c |  15 +++--
+ gi/pygi-cache.c    |  182
+ +++++++++++++++++++++++++++++++++++++++++++++++-----
+ gi/pygi-cache.h    |   1 -
+ gi/pygi-invoke.c   |   1 +
  4 files changed, 178 insertions(+), 21 deletions(-)
 
 commit 88531c58d0491a31dd319387237a03df5c9edc07
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 10 15:33:56 2011 -0500
+Date:  Mon Jan 10 15:33:56 2011 -0500
 
     [gi] fix casting when marshaling a char to uint8
 
- gi/pygi-argument.c | 2 +-
+ gi/pygi-argument.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 441da4a7346ca059630dbc820c5b46e4d0222f4b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jan 10 15:07:16 2011 -0500
+Date:  Mon Jan 10 15:07:16 2011 -0500
 
     [gi] hook up invoke to the cache
 
@@ -27519,73 +9461,73 @@ Date:   Mon Jan 10 15:07:16 2011 -0500
     complex
       in types
 
- gi/Makefile.am                |   1 +
- gi/pygi-argument.c            |  60 +++++++++--------
- gi/pygi-argument.h            |  60 ++++++++---------
- gi/pygi-cache.h               |   6 +-
- gi/pygi-invoke-state-struct.h |  26 ++++++++
- gi/pygi-invoke.c              | 149
- ++++++++++++++++++++++++++++++++----------
- gi/pygi-invoke.h              |   2 +-
- gi/pygi-private.h             |   1 +
+ gi/Makefile.am                       |    1 +
+ gi/pygi-argument.c             60 +++++++++--------
+ gi/pygi-argument.h             60 ++++++++---------
+ gi/pygi-cache.h                 6 +-
+ gi/pygi-invoke-state-struct.h |   26 +++++++
+ gi/pygi-invoke.c              149
+ +++++++++++++++++++++++++++++++----------
+ gi/pygi-invoke.h                2 +-
+ gi/pygi-private.h               1 +
  8 files changed, 208 insertions(+), 97 deletions(-)
 
 commit f32b1f494aa5d09b9b198f607722c819c6bbd808
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 9 19:37:55 2011 -0500
+Date:  Sun Jan 9 19:37:55 2011 -0500
 
     hooked up caching stage and fixed segfaults
 
     * caching stage is hooked up but not used yet
     * throws exceptions for everything that can not be cached yet
 
- gi/pygi-cache.c  | 59
- +++++++++++++++++++++++++++++++++++++++++++-------------
- gi/pygi-info.c   |  3 +++
- gi/pygi-invoke.c |  5 +++++
- gi/pygi.h        |  2 ++
+ gi/pygi-cache.c  |   59
+ ++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-info.c   |    3 +++
+ gi/pygi-invoke.c |    5 +++++
+ gi/pygi.h       |    2 ++
  4 files changed, 56 insertions(+), 13 deletions(-)
 
 commit c2bf1d4d9cf2e9f8e313528fe717f6279dad5da1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 9 18:05:31 2011 -0500
+Date:  Sun Jan 9 18:05:31 2011 -0500
 
     [gi] fix some function names
 
- gi/pygi-cache.c | 5 ++---
+ gi/pygi-cache.c |    5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 commit 2ec4230a5180f048c26c2e4234b2a098d42f030b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jan 9 15:58:06 2011 -0500
+Date:  Sun Jan 9 15:58:06 2011 -0500
 
     [gi] refactor cache structs so they inherit from ArgCache
 
- gi/pygi-argument.c | 122 +++++++++----------
- gi/pygi-cache.c    | 344
- +++++++++++++++++++++++++++++------------------------
- gi/pygi-cache.h    |  50 ++++----
+ gi/pygi-argument.c |  122 ++++++++++---------
+ gi/pygi-cache.c    |  344
+ ++++++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h    |  50 ++++----
  3 files changed, 273 insertions(+), 243 deletions(-)
 
 commit f4cdf0c0321285da015686fcb7115bd91bfd5c7c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jan 8 20:45:11 2011 -0500
+Date:  Sat Jan 8 20:45:11 2011 -0500
 
     [gi]fix cache compile error - now compiles but cache still not
     hooked up
 
- gi/Makefile.am     |   2 +
- gi/pygi-argument.c | 100 +++++++++++++++---------------
- gi/pygi-argument.h | 174
- ++++++++++++++++++++++++++++++++++++++++++++---------
- gi/pygi-cache.c    | 169
- +++++++++++++++++++++++++--------------------------
- gi/pygi-cache.h    |  25 ++++----
+ gi/Makefile.am     |   2 +
+ gi/pygi-argument.c |  100 +++++++++++++++---------------
+ gi/pygi-argument.h |  174
+ +++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c    |  169
+ +++++++++++++++++++++++++-------------------------
+ gi/pygi-cache.h    |  25 ++++----
  5 files changed, 293 insertions(+), 177 deletions(-)
 
 commit 5f8f3044dd8085b2e8ce0bf70e9d52f05abf909d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jan 8 19:10:29 2011 -0500
+Date:  Sat Jan 8 19:10:29 2011 -0500
 
     add sequence caching and array marshalling w/ item marshalling
 
@@ -27594,35 +9536,35 @@ Date:   Sat Jan 8 19:10:29 2011 -0500
       for geneating marshalling caches for container items, not just
       arguments
 
- gi/pygi-argument.c |  76 ++++++++++++++++-
- gi/pygi-cache.c    | 242
- ++++++++++++++++++++++-------------------------------
- gi/pygi-cache.h    |   4 +-
+ gi/pygi-argument.c |  76 ++++++++++++++++-
+ gi/pygi-cache.c    |  242
+ ++++++++++++++++++++++------------------------------
+ gi/pygi-cache.h    |   4 +-
  3 files changed, 175 insertions(+), 147 deletions(-)
 
 commit 202a268db7f98f5a3c525c6e65ec4bff1917257e
 Author: Emilio Pozuelo Monfort <pochu27@gmail.com>
-Date:   Sat Jan 8 02:19:52 2011 +0000
+Date:  Sat Jan 8 02:19:52 2011 +0000
 
     Bump the minimum gio dependency
 
     Needed for G_TYPE_CONVERTER_FLAGS and others.
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c3aa36151fdef9ed9884d93114786bbe86387983
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jan 7 12:58:11 2011 +0100
+Date:  Fri Jan 7 12:58:11 2011 +0100
 
     Add test for incorrect attributes in Gdk.Event
 
- tests/test_overrides.py | 4 ++++
+ tests/test_overrides.py |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit 204b45c7e95eb50d9e3843127fb10e13b1b17fee
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Sun Jan 2 19:25:55 2011 +0100
+Date:  Sun Jan 2 19:25:55 2011 +0100
 
     Don't call getattr again in gi.overrides.Gdk.Event.__getattr__
 
@@ -27640,149 +9582,149 @@ Date:   Sun Jan 2 19:25:55 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638523
 
- gi/overrides/Gdk.py | 2 +-
+ gi/overrides/Gdk.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6cf298ca5565d0eb99824f050ff47407e50a5c01
 Author: Mike Gorse <mgorse@novell.com>
-Date:   Fri Jan 7 09:08:31 2011 +0100
+Date:  Fri Jan 7 09:08:31 2011 +0100
 
     Release allocated array of arguments when handling closures
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
- gi/pygi-closure.c | 3 +++
+ gi/pygi-closure.c |   3 +++
  1 file changed, 3 insertions(+)
 
 commit 1be76d5e006efa24598ff7bf26153660dbe0a890
 Author: Mike Gorse <mgorse@novell.com>
-Date:   Fri Jan 7 09:07:35 2011 +0100
+Date:  Fri Jan 7 09:07:35 2011 +0100
 
     Release GIValueInfo when checking an enum argument
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
- gi/pygi-argument.c | 1 +
+ gi/pygi-argument.c |   1 +
  1 file changed, 1 insertion(+)
 
 commit 43849c51391fc9cd239697065c3d40fa02fb6783
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jan 6 17:30:14 2011 -0500
+Date:  Thu Jan 6 17:30:14 2011 -0500
 
     whitespace fixes
 
- gi/pygi-cache.c | 24 ++++++++++++------------
- gi/pygi-cache.h | 42 +++++++++++++++++++++---------------------
+ gi/pygi-cache.c |   24 ++++++++++++------------
+ gi/pygi-cache.h |   42 +++++++++++++++++++++---------------------
  2 files changed, 33 insertions(+), 33 deletions(-)
 
 commit 8b5b3d2bbbbdf5d26c83e9a6fe67121cbd77ebe1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jan 6 17:29:00 2011 -0500
+Date:  Thu Jan 6 17:29:00 2011 -0500
 
     add marshalling for basic types and add more skeleton code
 
     * still doesn't compile
 
- gi/pygi-argument.c | 708
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-argument.h |  35 ++-
- gi/pygi-cache.c    |  82 +++++--
- gi/pygi-cache.h    |  41 +++-
+ gi/pygi-argument.c |  708
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.h |  35 ++-
+ gi/pygi-cache.c    |  82 ++++--
+ gi/pygi-cache.h    |  41 ++-
  4 files changed, 832 insertions(+), 34 deletions(-)
 
 commit f554cf62848104d31518138ae85bc51acaafda67
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jan 4 18:49:53 2011 -0500
+Date:  Tue Jan 4 18:49:53 2011 -0500
 
     first checkin of the new caching branch
 
     * this does not compile and is not hooked up to the build system
     * lays out the caching data structures and some skeleton functions
 
- gi/pygi-cache.c | 480
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-cache.h | 104 ++++++++++++
+ gi/pygi-cache.c |  480
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.h |  104 ++++++++++++
  2 files changed, 584 insertions(+)
 
 commit 8d5a7857876669f56bb03bf618bcfdcc290721c0
 Author: Eitan Isaacson <eitan@monotonous.org>
-Date:   Wed Dec 22 12:34:10 2010 -0800
+Date:  Wed Dec 22 12:34:10 2010 -0800
 
     Respect different type lengths when assigning out-argument pointers.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637832
 
- gi/pygi-closure.c | 66
- ++++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-closure.c |   66
+ +++++++++++++++++++++++++++++++++++++++++++++--------
  1 file changed, 56 insertions(+), 10 deletions(-)
 
 commit f14976ffabec28f6cafe1e37dc81d207a947d4ca
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Dec 28 18:34:25 2010 +0100
+Date:  Tue Dec 28 18:34:25 2010 +0100
 
     Fix stupid name clash
 
- gi/module.py | 7 +++++--
+ gi/module.py |    7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 01b2a193d403beb861eab524300b4f1af63157ce
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Dec 28 13:49:18 2010 +0100
+Date:  Tue Dec 28 13:49:18 2010 +0100
 
     Add /usr/share to XDG_DATA_DIRS when running the tests
 
- tests/Makefile.am | 7 ++++++-
+ tests/Makefile.am |   7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit efc186f692f9eac781cc47456be74a3da7f14dcd
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Dec 28 13:25:34 2010 +0100
+Date:  Tue Dec 28 13:25:34 2010 +0100
 
     Comment out tests that require SRV lookups
 
- tests/test_gresolver.py | 5 ++++-
+ tests/test_gresolver.py |    5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit d2462cc1ab51d76fb4625c47c3d34de1d5d0dee8
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Dec 28 13:00:16 2010 +0100
+Date:  Tue Dec 28 13:00:16 2010 +0100
 
     Use suppresion file when running valgrind
 
- tests/Makefile.am |   2 +-
- tests/python.supp | 387
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am |   2 +-
+ tests/python.supp |  387
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 388 insertions(+), 1 deletion(-)
 
 commit 0ee58113ecbea72784c52de928c041fc8fc88984
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Dec 23 00:10:41 2010 +0100
+Date:  Thu Dec 23 00:10:41 2010 +0100
 
     Fix warnings.
 
- gi/pygi-argument.c          | 16 +++++++---------
- gi/pygi-foreign-cairo.c     | 13 ++-----------
- gio/gfile.override          |  5 ++---
- glib/pyglib-python-compat.h |  3 +++
- glib/pyglib.c               |  2 +-
- glib/pygmainloop.c          |  3 ++-
+ gi/pygi-argument.c         |   16 +++++++---------
+ gi/pygi-foreign-cairo.c     |  13 ++-----------
+ gio/gfile.override         |    5 ++---
+ glib/pyglib-python-compat.h |   3 +++
+ glib/pyglib.c              |    2 +-
+ glib/pygmainloop.c         |    3 ++-
  6 files changed, 17 insertions(+), 25 deletions(-)
 
 commit 78ea84cd91392400ebac5a361ef8793bfe928fd0
 Author: Jesse van den Kieboom <jesse.vandenkieboom@epfl.ch>
-Date:   Sun Dec 19 23:10:57 2010 +0100
+Date:  Sun Dec 19 23:10:57 2010 +0100
 
     Allow comparing Gtk.TreePath to None
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637615
 
- gi/overrides/Gtk.py     | 12 ++++++------
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Gtk.py    |   12 ++++++------
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 12 insertions(+), 6 deletions(-)
 
 commit 046cc5915286e042d1040271a90676b77632409e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Dec 16 15:41:10 2010 -0500
+Date:  Thu Dec 16 15:41:10 2010 -0500
 
     handle unicode objects in properties
 
@@ -27791,184 +9733,181 @@ Date:   Thu Dec 16 15:41:10 2010 -0500
       code points
       - you must add # coding=utf-8 to the top of your python file
       or python
-        will error out if it sees embeded unicode charaters (such as when
-        supporting python 3 and python 2 from the same source)
+       will error out if it sees embeded unicode charaters (such as when
+       supporting python 3 and python 2 from the same source)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620579
 
- gobject/pygtype.c        | 35 ++++++++++++++++++++++++++---------
- tests/test_properties.py | 16 ++++++++++++++++
+ gobject/pygtype.c       |   35 ++++++++++++++++++++++++++---------
+ tests/test_properties.py |   16 ++++++++++++++++
  2 files changed, 42 insertions(+), 9 deletions(-)
 
 commit 7aa783d5cd674f34da318f826bd5f4a0e09d24cb
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Dec 14 12:29:54 2010 +0100
+Date:  Tue Dec 14 12:29:54 2010 +0100
 
     dsextras.py: check if gcc is there when platform is win32 and compiler
     is mingw32
 
- dsextras.py | 6 ++++++
+ dsextras.py |   6 ++++++
  1 file changed, 6 insertions(+)
 
 commit cebf5f09a6c5018ced64f35e7747fc81b93b823e
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Dec 14 12:29:01 2010 +0100
+Date:  Tue Dec 14 12:29:01 2010 +0100
 
     dsextras.py: be consistent in how distutils imports are done
 
- dsextras.py | 6 +++---
+ dsextras.py |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 35e590d48c78f2e76c47c2b4eaf0f7e8d1ed5c93
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Dec 14 12:25:07 2010 +0100
+Date:  Tue Dec 14 12:25:07 2010 +0100
 
     dsextras.py: add have_gcc() function
 
- dsextras.py | 5 +++++
+ dsextras.py |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 637c2c287cfb0e89365026531c651111f5593ac7
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Dec 14 12:24:41 2010 +0100
+Date:  Tue Dec 14 12:24:41 2010 +0100
 
     dsextras.py: use distutils.spawn.find_executable for have_pkgconfig()
 
- dsextras.py | 8 ++------
+ dsextras.py |   8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)
 
 commit 020d00bc0ce7b77006b4d4f42d63122d79bcbf89
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Tue Dec 14 12:22:54 2010 +0100
+Date:  Tue Dec 14 12:22:54 2010 +0100
 
     setup.py: fix another case of use True/False instead of 1/0
 
- setup.py | 2 +-
+ setup.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b03cc9e0d66d8caea3cd6a63db198c43de9267e9
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Dec 13 10:21:52 2010 +0100
+Date:  Mon Dec 13 10:21:52 2010 +0100
 
     pygi-convert.sh: improve GtkSourceView conversion
 
- pygi-convert.sh | 7 +++++++
+ pygi-convert.sh |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit fbc12cd7c09a67de9e28b7b0b28de9dc0e0e3418
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Dec 13 10:27:56 2010 +0100
+Date:  Mon Dec 13 10:27:56 2010 +0100
 
     pygi-convert.sh: Gtk.DialogFlags conversion
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 73e933d2429aea4d14e15350a538da1c5c3f71eb
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Sun Dec 12 20:38:46 2010 -0500
-
-            Doc Extractor: Print the gtk-doc blocks sorted by function
-            name.
-
-            * codegen/docextract_to_xml.py: Print the xml of the gtk-doc
-            block in
-            alphabetical order according to the identifier (function name)
-            so that
-            the generation of xml files in the C++ bindings is
-            deterministic.
-            Thanks to Krzesimir Nowak for suggesting this in a
-            gtksourceviewmm
-            recent commit.
-
- codegen/docextract_to_xml.py | 2 +-
+Date:  Sun Dec 12 20:38:46 2010 -0500
+
+       Doc Extractor: Print the gtk-doc blocks sorted by function name.
+
+       * codegen/docextract_to_xml.py: Print the xml of the gtk-doc
+       block in
+       alphabetical order according to the identifier (function name)
+       so that
+       the generation of xml files in the C++ bindings is deterministic.
+       Thanks to Krzesimir Nowak for suggesting this in a gtksourceviewmm
+       recent commit.
+
+ codegen/docextract_to_xml.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit db7ffa75b007074cb6b33b547c6d8140da300a3e
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Dec 13 00:17:26 2010 +0100
+Date:  Mon Dec 13 00:17:26 2010 +0100
 
     pygi-convert.sh: add more Gtk conversions and sort
 
- pygi-convert.sh | 50 ++++++++++++++++++++++++++------------------------
+ pygi-convert.sh |   50 ++++++++++++++++++++++++++------------------------
  1 file changed, 26 insertions(+), 24 deletions(-)
 
 commit f4bfe73d0ccedf7f671d3acd6d9e262d5383b733
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Dec 13 00:01:40 2010 +0100
+Date:  Mon Dec 13 00:01:40 2010 +0100
 
     pygi-convert.sh: convert Atk
 
- pygi-convert.sh | 12 ++++++++++++
+ pygi-convert.sh |   12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit e55ce3667eb1d352bf96f265bf018ffe8aea75f9
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 23:48:48 2010 +0100
+Date:  Sun Dec 12 23:48:48 2010 +0100
 
     pygi-convert.sh: convert a few more Gio types
 
- pygi-convert.sh | 9 +++++++++
+ pygi-convert.sh |    9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit acc9f84bc6e13d76c6516cefe393d4a4f868aa24
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 14:19:00 2010 +0100
+Date:  Sun Dec 12 14:19:00 2010 +0100
 
     pygi-convert.sh: more GLib conversion
 
- pygi-convert.sh | 7 +++++++
+ pygi-convert.sh |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit c903390814bebdc62d530472f6f94feecc59b8b3
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 14:00:34 2010 +0100
+Date:  Sun Dec 12 14:00:34 2010 +0100
 
     pygi-convert.sh: remove two cases handled by overrides
 
- pygi-convert.sh | 2 --
+ pygi-convert.sh |    2 --
  1 file changed, 2 deletions(-)
 
 commit d33c987e505ec8ddffa2b8cb5526f05b9b5f62be
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 13:38:56 2010 +0100
+Date:  Sun Dec 12 13:38:56 2010 +0100
 
     Override Gtk.ScrolledWindow constructor
 
- gi/overrides/Gtk.py     | 7 +++++++
- tests/test_overrides.py | 7 +++++++
+ gi/overrides/Gtk.py    |    7 +++++++
+ tests/test_overrides.py |    7 +++++++
  2 files changed, 14 insertions(+)
 
 commit 1c24bb089fcd69e3104ae72a0e7560a8c5a3f05b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 12:32:39 2010 +0100
+Date:  Sun Dec 12 12:32:39 2010 +0100
 
     pygi-convert.sh: Fix 'find' syntax
 
- pygi-convert.sh | 2 +-
+ pygi-convert.sh |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f0a1d6b6bb53d0fa2788d8b9027d737b0aef8dfc
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 12 12:29:38 2010 +0100
+Date:  Sun Dec 12 12:29:38 2010 +0100
 
     pygi-convert.sh: start handling Gio and GLib
 
- pygi-convert.sh | 8 ++++++++
+ pygi-convert.sh |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 365bf3251af3498dc797a58cce071805451b49b1
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 11 23:05:31 2010 +0100
+Date:  Sat Dec 11 23:05:31 2010 +0100
 
     pygi-convert.sh: convert Gdk.ScrollDirection.
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit bca603de0f217fb290189a0ea330f82961c46d5d
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 11 15:03:21 2010 +0100
+Date:  Sat Dec 11 15:03:21 2010 +0100
 
     Override Pango.Layout constructor.
 
@@ -27976,86 +9915,87 @@ Date:   Sat Dec 11 15:03:21 2010 +0100
     not a
     gobject property so we need to jump through some oops.
 
- gi/overrides/Pango.py   | 13 +++++++++++++
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Pango.py  |   13 +++++++++++++
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 19 insertions(+)
 
 commit df233301802e3f7f9ce338cde015ca2a2fc648ab
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 11 14:18:53 2010 +0100
+Date:  Sat Dec 11 14:18:53 2010 +0100
 
     Remove Pango.FontDescription() conversion.
 
     It is now properly handled by an override.
 
- pygi-convert.sh | 1 -
+ pygi-convert.sh |    1 -
  1 file changed, 1 deletion(-)
 
 commit d8abcc9463542af9cd43d71849d0ad4c183b570b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Fri Dec 10 14:05:20 2010 +0100
+Date:  Fri Dec 10 14:05:20 2010 +0100
 
     Override GtkAction and GtkRadioAction constructors.
 
- gi/overrides/Gtk.py     | 20 +++++++++++++++++---
- tests/test_overrides.py | 18 ++++++++++++++++++
+ gi/overrides/Gtk.py    |   20 +++++++++++++++++---
+ tests/test_overrides.py |   18 ++++++++++++++++++
  2 files changed, 35 insertions(+), 3 deletions(-)
 
 commit 7924b18a99a0680c04aca46be4b64a7aa507dfe5
 Author: Dmitrijs Ledkovs <dmitrij.ledkov@ubuntu.com>
-Date:   Sat Dec 4 22:13:28 2010 +0000
+Date:  Sat Dec 4 22:13:28 2010 +0000
 
     Override Adjustment constructor to behave like pygtk
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636486
 
- gi/overrides/Gtk.py     | 7 +++++++
- tests/test_overrides.py | 9 +++++++++
+ gi/overrides/Gtk.py    |    7 +++++++
+ tests/test_overrides.py |    9 +++++++++
  2 files changed, 16 insertions(+)
 
 commit e76352dd83c8706e68ad57d00d185da9afea99c4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Dec 9 13:23:10 2010 -0500
+Date:  Thu Dec 9 13:23:10 2010 -0500
 
     add secondary_text apis to MessageDialog
 
- gi/overrides/Gtk.py     | 8 ++++++++
- tests/test_overrides.py | 8 ++++++++
+ gi/overrides/Gtk.py    |    8 ++++++++
+ tests/test_overrides.py |    8 ++++++++
  2 files changed, 16 insertions(+)
 
 commit de682b2d36c362140ab7d43c0743b01ec0865a74
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Dec 8 16:39:27 2010 -0500
+Date:  Wed Dec 8 16:39:27 2010 -0500
 
     [gi] get rid of some debug prints and fix error messages
 
- gi/overrides/Gtk.py | 7 +++----
+ gi/overrides/Gtk.py |   7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit dbb16571803bf51f497768bf80944514f4290ee5
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Dec 8 18:25:15 2010 +0100
+Date:  Wed Dec 8 18:25:15 2010 +0100
 
     Fix demo for override changes.
 
- demos/gtk-demo/gtk-demo.py | 5 +++--
+ demos/gtk-demo/gtk-demo.py |   5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit 2adcd95762944a4e27123093d3c8d080e49be1ea
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Dec 8 18:06:01 2010 +0100
+Date:  Wed Dec 8 18:06:01 2010 +0100
 
     Override Pango.FontDescription.
 
- demos/gtk-demo/gtk-demo.py |  2 +-
- gi/overrides/Makefile.am   |  1 +
- gi/overrides/Pango.py      | 40 ++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py    |  7 +++++++
+ demos/gtk-demo/gtk-demo.py |   2 +-
+ gi/overrides/Makefile.am   |   1 +
+ gi/overrides/Pango.py     |   40
+ ++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py    |   7 +++++++
  4 files changed, 49 insertions(+), 1 deletion(-)
 
 commit 769da968c9187414d0420412d8fb8c833d12042a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Dec 8 17:38:11 2010 +0100
+Date:  Wed Dec 8 17:38:11 2010 +0100
 
     Stop checking that all vfuncs are implemented
 
@@ -28064,23 +10004,23 @@ Date:   Wed Dec 8 17:38:11 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619606
 
- gi/gimodule.c    |  4 +++-
- gi/types.py      | 12 ++----------
- tests/test_gi.py | 10 ----------
+ gi/gimodule.c   |    4 +++-
+ gi/types.py     |   12 ++----------
+ tests/test_gi.py |   10 ----------
  3 files changed, 5 insertions(+), 21 deletions(-)
 
 commit 167a01c46b3fa0b3c8339502c875d32bd2bca974
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Dec 8 17:37:00 2010 +0100
+Date:  Wed Dec 8 17:37:00 2010 +0100
 
     Fix usage of TreeIter api that is now an override.
 
- demos/gtk-demo/gtk-demo.py | 6 +++---
+ demos/gtk-demo/gtk-demo.py |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit d2cfd6e9250d40de7c715ac74e299deddf137683
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Dec 8 17:34:54 2010 +0100
+Date:  Wed Dec 8 17:34:54 2010 +0100
 
     Fix Gtk.Label(label="Foo")
 
@@ -28088,125 +10028,125 @@ Date:   Wed Dec 8 17:34:54 2010 +0100
     end up up with two 'label' in the kwds dict. Besides 'str' is a
     reserved keyword.
 
- gi/overrides/Gtk.py | 4 ++--
+ gi/overrides/Gtk.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit c0c684c9bb4e2bc08d7cb6ac246705e8a3b77656
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Dec 8 14:16:39 2010 +0100
+Date:  Wed Dec 8 14:16:39 2010 +0100
 
     Fix typo when raising an exception
 
- gi/types.py | 2 +-
+ gi/types.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 88c9a3ad49d9fcf779c3523672d8bf4767910301
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Wed Dec 8 10:46:27 2010 +0100
+Date:  Wed Dec 8 10:46:27 2010 +0100
 
     pygi-convert.sh: Added more conversions
 
- pygi-convert.sh | 14 ++++++++++++++
+ pygi-convert.sh |   14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 4d8d96326b2cac91e6d75e6601b92e202d1918ff
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Tue Dec 7 20:39:15 2010 +0100
+Date:  Tue Dec 7 20:39:15 2010 +0100
 
     Override LinkButton constructor to make 'uri' mandatory
 
- gi/overrides/Gtk.py     | 7 +++++++
- tests/test_overrides.py | 6 ++++++
+ gi/overrides/Gtk.py    |    7 +++++++
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 13 insertions(+)
 
 commit f4f7fb35af1b41598dc050f5df155a01c370a920
 Author: Dmitry Morozov <dmitry.a.morozov@yandex.ru>
-Date:   Sat Dec 4 19:19:19 2010 +0600
+Date:  Sat Dec 4 19:19:19 2010 +0600
 
     Container should be iterable.
 
- gi/overrides/Gtk.py     | 9 +++++++++
- tests/test_overrides.py | 6 +++++-
+ gi/overrides/Gtk.py    |    9 +++++++++
+ tests/test_overrides.py |    6 +++++-
  2 files changed, 14 insertions(+), 1 deletion(-)
 
 commit d2ad05d6d8d53b941e0ad33fcb200f1245a2d308
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Tue Dec 7 14:13:00 2010 +0100
+Date:  Tue Dec 7 14:13:00 2010 +0100
 
     No need to import Gdk
 
- gi/overrides/Gtk.py | 1 -
+ gi/overrides/Gtk.py |   1 -
  1 file changed, 1 deletion(-)
 
 commit b6a40badf0b2b59e690ce818efb03c7c816b8a04
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Tue Dec 7 14:07:53 2010 +0100
+Date:  Tue Dec 7 14:07:53 2010 +0100
 
     Remove semicolumns
 
- gi/overrides/Gtk.py | 7 +++----
+ gi/overrides/Gtk.py |   7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit cdc9c26553bf47ea488676e7bdc5f8ab0a2c906b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Dec 6 16:05:30 2010 -0500
+Date:  Mon Dec 6 16:05:30 2010 -0500
 
     [gi] make sure Gtk.Button override passes all keywords to parent
     constructor
 
- gi/overrides/Gtk.py | 4 ++--
+ gi/overrides/Gtk.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit cede81ad65db017e95543d8d35715751aa202fed
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Dec 5 13:31:20 2010 +0100
+Date:  Sun Dec 5 13:31:20 2010 +0100
 
     Fix cut&paste error in the Label override
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 607c59b74ebbc1e39cb4121c870b689e1888c106
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 4 16:03:27 2010 +0100
+Date:  Sat Dec 4 16:03:27 2010 +0100
 
     pygi-convert.sh: handle TextWindowType
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit dfeabe0b68938e27da2e65903983b5113dc422f1
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 4 15:49:15 2010 +0100
+Date:  Sat Dec 4 15:49:15 2010 +0100
 
     Override Label constructor to behave like pygtk
 
- gi/overrides/Gtk.py     | 7 +++++++
- tests/test_overrides.py | 4 ++++
+ gi/overrides/Gtk.py    |    7 +++++++
+ tests/test_overrides.py |    4 ++++
  2 files changed, 11 insertions(+)
 
 commit da4e045e5abbed2796cc4ed39df35a0dde2de31b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 4 15:40:35 2010 +0100
+Date:  Sat Dec 4 15:40:35 2010 +0100
 
     Override GtkTable constructor to behave like pygtk
 
- gi/overrides/Gtk.py     |  7 +++++++
- tests/test_overrides.py | 12 ++++++++++++
+ gi/overrides/Gtk.py    |    7 +++++++
+ tests/test_overrides.py |   12 ++++++++++++
  2 files changed, 19 insertions(+)
 
 commit 81452c23ab1befa59ff375692e582791432796a5
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 4 12:59:43 2010 +0100
+Date:  Sat Dec 4 12:59:43 2010 +0100
 
     pygi-convert.sh: convert MovementStep
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 4d097eea94258eda0c328711491fd456cbd6741b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Dec 4 11:57:02 2010 +0100
+Date:  Sat Dec 4 11:57:02 2010 +0100
 
     Update Gdk overrides to work with latest Gtk+ 3
 
@@ -28214,12 +10154,12 @@ Date:   Sat Dec 4 11:57:02 2010 +0100
     point we
     shuld just clean up the old stuff.
 
- gi/overrides/Gdk.py | 22 ++++++++++++++++------
+ gi/overrides/Gdk.py |  22 ++++++++++++++++------
  1 file changed, 16 insertions(+), 6 deletions(-)
 
 commit cda317195566711d66190145b545e26ed7226172
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Thu Dec 2 23:47:40 2010 -0200
+Date:  Thu Dec 2 23:47:40 2010 -0200
 
     Gtk: add an override for Gtk.main_quit
 
@@ -28232,19 +10172,19 @@ Date:   Thu Dec 2 23:47:40 2010 -0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636336
 
- gi/overrides/Gtk.py      |  5 ++++-
- gi/overrides/__init__.py | 27 +++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     |    5 ++++-
+ gi/overrides/__init__.py |   27 +++++++++++++++++++++++++--
  2 files changed, 29 insertions(+), 3 deletions(-)
 
 commit 82689cbf53d92b1b951a459fe3de0e1d3a91791a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Dec 2 16:27:04 2010 -0500
+Date:  Thu Dec 2 16:27:04 2010 -0500
 
     [gi] handle subtypes when inserting into tree models
 
     * Often modules will give back basic types wrapped in a subtype.
       This is the case with D-Bus where you may want to keep some of the
-      metadata around.  More often than not, the developer is just looking
+      metadata around. More often than not, the developer is just looking
       to use the basetype.
 
     * This override checks the column type and handles basic types such as
@@ -28258,25 +10198,25 @@ Date:   Thu Dec 2 16:27:04 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635172
 
- gi/overrides/Gtk.py     | 38 ++++++++++++++++++++++++++++++++++++--
- tests/test_overrides.py |  8 +++++++-
+ gi/overrides/Gtk.py    |   38 ++++++++++++++++++++++++++++++++++++--
+ tests/test_overrides.py |    8 +++++++-
  2 files changed, 43 insertions(+), 3 deletions(-)
 
 commit 677490e9402bad7b7c2a832345ef54f7f0c5fc7f
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Fri Dec 3 23:39:50 2010 +0100
+Date:  Fri Dec 3 23:39:50 2010 +0100
 
     Override TreeSelection.select_path and TreeView.scroll_to_cell
 
     The "path" argument may also be a string or a tuple
 
- gi/overrides/Gtk.py     | 10 ++++++++++
- tests/test_overrides.py | 29 +++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py    |   10 ++++++++++
+ tests/test_overrides.py |   29 +++++++++++++++++++++++++++++
  2 files changed, 39 insertions(+)
 
 commit dacfe618fa244445c979f1a5efa80c1f9a5a4ae9
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Fri Dec 3 23:29:00 2010 +0100
+Date:  Fri Dec 3 23:29:00 2010 +0100
 
     Override TreePath.__new__
 
@@ -28284,23 +10224,23 @@ Date:   Fri Dec 3 23:29:00 2010 +0100
     override __new__ and it will be useful for all the api that take a
     TreePath or a string or a tuple.
 
- gi/overrides/Gtk.py     | 33 +++++++++++++++------------------
- tests/test_overrides.py | 18 ++++++++++++++++++
+ gi/overrides/Gtk.py    |   33 +++++++++++++++------------------
+ tests/test_overrides.py |   18 ++++++++++++++++++
  2 files changed, 33 insertions(+), 18 deletions(-)
 
 commit 7a8af9e220ee48aa28f6b025c5dae324b14fe128
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Nov 28 13:02:30 2010 +0100
+Date:  Sun Nov 28 13:02:30 2010 +0100
 
     Override Container to behave like a sequence
 
- gi/overrides/Gtk.py     |  6 ++++++
- tests/test_overrides.py | 11 +++++++++++
+ gi/overrides/Gtk.py    |    6 ++++++
+ tests/test_overrides.py |   11 +++++++++++
  2 files changed, 17 insertions(+)
 
 commit 94e8befc935d4a6c7f766e34195e10fc3fb3b93a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Nov 30 16:57:05 2010 -0500
+Date:  Tue Nov 30 16:57:05 2010 -0500
 
     refactor Jonathan Matthew recurse vfunc patch so it applys and clean
     up a bit
@@ -28308,12 +10248,13 @@ Date:   Tue Nov 30 16:57:05 2010 -0500
     * this patch does the recursion using the previous patche's support
     functions
 
- gi/types.py | 55 +++++++++++++++++++++++++++++++++++++++++++++----------
+ gi/types.py |  55
+ +++++++++++++++++++++++++++++++++++++++++++++----------
  1 file changed, 45 insertions(+), 10 deletions(-)
 
 commit 9c5aee4f06f92457f9ae987656c0c469f76d0ee8
 Author: Jonathan Matthew <jonathan@d14n.org>
-Date:   Thu Jul 22 23:19:51 2010 +1000
+Date:  Thu Jul 22 23:19:51 2010 +1000
 
     Recurse up through base classes when setting up vfuncs
 
@@ -28321,24 +10262,24 @@ Date:   Thu Jul 22 23:19:51 2010 +1000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625033
 
- gi/gimodule.c    | 130
- ++++++++++++++++++++++++++++++++++++++++---------------
- tests/test_gi.py |  37 ++++++++++++++++
+ gi/gimodule.c    130
+ +++++++++++++++++++++++++++++++++++++++---------------
+ tests/test_gi.py |   37 ++++++++++++++++
  2 files changed, 131 insertions(+), 36 deletions(-)
 
 commit 78358e1ab54d02317f397276adee03ecb2187588
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 29 18:29:57 2010 -0500
+Date:  Mon Nov 29 18:29:57 2010 -0500
 
     add a profiling torture test for when we fix up invoke
 
- tests/test_everything.py | 67
- ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py |   67
+ ++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 67 insertions(+)
 
 commit 792e679c06df4357843fd310c7953a931172fc99
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 29 16:41:38 2010 -0500
+Date:  Mon Nov 29 16:41:38 2010 -0500
 
     moved dynamic and base modules outside of gtk-2.0 directory
 
@@ -28353,181 +10294,181 @@ Date:   Mon Nov 29 16:41:38 2010 -0500
     out if it
       causes any issues with legacy modules and code
 
- gi/Makefile.am            | 2 +-
- gi/overrides/Makefile.am  | 2 +-
- gi/repository/Makefile.am | 2 +-
- glib/Makefile.am          | 2 +-
- gobject/Makefile.am       | 2 +-
- tests/test_gi.py          | 2 --
- tests/test_overrides.py   | 3 ---
+ gi/Makefile.am                   |    2 +-
+ gi/overrides/Makefile.am  |   2 +-
+ gi/repository/Makefile.am |   2 +-
+ glib/Makefile.am         |    2 +-
+ gobject/Makefile.am      |    2 +-
+ tests/test_gi.py         |    2 --
+ tests/test_overrides.py   |   3 ---
  7 files changed, 5 insertions(+), 10 deletions(-)
 
 commit c587e1ace7429195ac6fd4db03d2f33e2af09838
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 29 15:11:46 2010 -0500
+Date:  Mon Nov 29 15:11:46 2010 -0500
 
     add test for inout argument count
 
- tests/test_gi.py | 1 +
+ tests/test_gi.py |    1 +
  1 file changed, 1 insertion(+)
 
 commit 5de88b4bcffdafcf8c7c20033cdf95dc690199ce
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 22 19:17:23 2010 -0500
+Date:  Mon Nov 22 19:17:23 2010 -0500
 
     [gi] add check for UNICHAR
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623615
 
- gi/pygi-argument.c       | 27 ++++++++++++++++++++++++++-
- tests/test_everything.py | 17 +++++++++++++++--
+ gi/pygi-argument.c      |   27 ++++++++++++++++++++++++++-
+ tests/test_everything.py |   17 +++++++++++++++--
  2 files changed, 41 insertions(+), 3 deletions(-)
 
 commit f129b3db2c78d3cce3614993fdd1619fb9eb9c79
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Nov 21 12:16:53 2010 +0100
+Date:  Sun Nov 21 12:16:53 2010 +0100
 
     Support gunichar
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623615
 
- gi/pygi-argument.c       | 60
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-info.c           |  5 ++++
- tests/test_everything.py |  5 ++++
+ gi/pygi-argument.c      |   60
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-info.c                  |    5 ++++
+ tests/test_everything.py |    5 ++++
  3 files changed, 70 insertions(+)
 
 commit fd2c0288eb67823fca1265348a27a9f8f147ae50
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 23:01:42 2010 +0100
+Date:  Sat Nov 27 23:01:42 2010 +0100
 
     pygi-convert.sh: gtk.accel_map -> Gtk.AccelMap._
 
- pygi-convert.sh | 1 +
+ pygi-convert.sh |    1 +
  1 file changed, 1 insertion(+)
 
 commit 13d0ff1d9c129bb458e234b630ebe920b50e2e0f
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 22:34:13 2010 +0100
+Date:  Sat Nov 27 22:34:13 2010 +0100
 
     pygi-convert.sh: handle "from gtk import gdk"
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 63a97634031c3d159ad77fdaa1f6341d7656eb07
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 22:23:24 2010 +0100
+Date:  Sat Nov 27 22:23:24 2010 +0100
 
     pygi-convert.sh: add some Pango special cases
 
- pygi-convert.sh | 3 +++
+ pygi-convert.sh |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 57e42bf4230d1aa20a47e3b0df2e509602333892
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 19:51:38 2010 +0100
+Date:  Sat Nov 27 19:51:38 2010 +0100
 
     Override TextIter (begins|ends|toggles)_tag()
 
     Make the tag argument optional.
 
- gi/overrides/Gtk.py     |  9 +++++++++
- tests/test_overrides.py | 17 +++++++++++++++++
+ gi/overrides/Gtk.py    |    9 +++++++++
+ tests/test_overrides.py |   17 +++++++++++++++++
  2 files changed, 26 insertions(+)
 
 commit 828b698e47ee819a60d24a772a3cc51ff9cd6601
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 19:32:48 2010 +0100
+Date:  Sat Nov 27 19:32:48 2010 +0100
 
     Override TextBuffer.set_text() to make length optional
 
- gi/overrides/Gtk.py     |  3 +++
- tests/test_overrides.py | 11 ++++++++++-
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |   11 ++++++++++-
  2 files changed, 13 insertions(+), 1 deletion(-)
 
 commit bf55dc862755a57bb1b998702d284fc460e88a30
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 16:46:40 2010 +0100
+Date:  Sat Nov 27 16:46:40 2010 +0100
 
     Override TextBuffer.create_mark()
 
     Override create_mark to make the left_gravity argument optional
 
- gi/overrides/Gtk.py     | 3 +++
- tests/test_overrides.py | 3 +++
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |    3 +++
  2 files changed, 6 insertions(+)
 
 commit 94c0e2f71636d055bdebe3ec378f3d339eea66c9
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sat Nov 27 16:10:33 2010 +0100
+Date:  Sat Nov 27 16:10:33 2010 +0100
 
     Fix TextBuffer.get_selection_bounds() override
 
     Fix the override and add unit test
 
- gi/overrides/Gtk.py     | 8 +++++---
- tests/test_overrides.py | 7 +++++++
+ gi/overrides/Gtk.py    |    8 +++++---
+ tests/test_overrides.py |    7 +++++++
  2 files changed, 12 insertions(+), 3 deletions(-)
 
 commit 0cd717e3926276540b9145e58a4a3368136b00de
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 22 18:35:09 2010 -0500
+Date:  Mon Nov 22 18:35:09 2010 -0500
 
     [gi] fix ActionGroup constructor to allow other keyword properties
     to be set
 
- gi/overrides/Gtk.py | 4 ++--
+ gi/overrides/Gtk.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 226777cdb70fc72d206664ffd8b6737f7239d23f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 22 18:32:28 2010 -0500
+Date:  Mon Nov 22 18:32:28 2010 -0500
 
     [gi] require the name parameter when creatin a Gtk.ActionGroup
 
- gi/overrides/Gtk.py     | 3 +++
- tests/test_overrides.py | 2 ++
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |    2 ++
  2 files changed, 5 insertions(+)
 
 commit d0049fa9982d13b3553b05569fb0a227e48b6647
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Nov 21 15:20:58 2010 +0100
+Date:  Sun Nov 21 15:20:58 2010 +0100
 
     Override UIManager.insert_action_group
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635437
 
- gi/overrides/Gtk.py     |  3 +++
- tests/test_overrides.py | 34 +++++++++++++++++++++-------------
+ gi/overrides/Gtk.py    |    3 +++
+ tests/test_overrides.py |   34 +++++++++++++++++++++-------------
  2 files changed, 24 insertions(+), 13 deletions(-)
 
 commit e1db544e46aeed984133896af34b671a6a5547df
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Nov 21 23:03:25 2010 +0100
+Date:  Sun Nov 21 23:03:25 2010 +0100
 
     Override TreeModel.get() to return a tuple
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635466
 
- gi/overrides/Gtk.py     | 15 +++++++++++++++
- tests/test_overrides.py |  6 ++++++
+ gi/overrides/Gtk.py    |   15 +++++++++++++++
+ tests/test_overrides.py |    6 ++++++
  2 files changed, 21 insertions(+)
 
 commit a5e806ad8a8b279402ff7adb1c1cdc04f9f3da76
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Nov 21 21:57:40 2010 +0100
+Date:  Sun Nov 21 21:57:40 2010 +0100
 
     Make TreeSelection.get_selected_rows compatible with PyGtk
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635464
 
- gi/overrides/Gtk.py | 6 ++++++
+ gi/overrides/Gtk.py |   6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 1c537bc67107948c92b51ba6ba749747e84263e2
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Nov 22 15:04:00 2010 -0500
+Date:  Mon Nov 22 15:04:00 2010 -0500
 
     [gi] switch to using sequences/tuples when marshalling
     cairo_rectangle_int_t
@@ -28538,25 +10479,25 @@ Date:   Mon Nov 22 15:04:00 2010 -0500
     which
       should be accepted by pycairo for any API that takes a rect
 
- gi/pygi-foreign-cairo.c | 85
- +++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign-cairo.c |   85
+ +++++++++++++++++++++++++++++++++++------------
  1 file changed, 64 insertions(+), 21 deletions(-)
 
 commit 4cede8f12321bed6c3b71813a62c01b61853ba69
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Nov 19 16:46:53 2010 -0500
+Date:  Fri Nov 19 16:46:53 2010 -0500
 
     [gi] overrides for treeview Drag and Drop
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627367
 
- gi/overrides/Gdk.py |  7 +++++++
- gi/overrides/Gtk.py | 25 +++++++++++++++++++++++++
+ gi/overrides/Gdk.py |   7 +++++++
+ gi/overrides/Gtk.py |  25 +++++++++++++++++++++++++
  2 files changed, 32 insertions(+)
 
 commit 3fd51bb903724b752f72f49c7cb35652b819791d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Nov 19 16:44:32 2010 -0500
+Date:  Fri Nov 19 16:44:32 2010 -0500
 
     [gi] when encountering guint8 arrays treat them as byte arrays
 
@@ -28565,23 +10506,23 @@ Date:   Fri Nov 19 16:44:32 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627367
 
- gi/pygi-argument.c | 65
- ++++++++++++++++++++++++++++++++++++++++++++----------
- tests/test_gi.py   |  6 +++--
+ gi/pygi-argument.c |  65
+ ++++++++++++++++++++++++++++++++++++++++++----------
+ tests/test_gi.py   |   6 +++--
  2 files changed, 57 insertions(+), 14 deletions(-)
 
 commit 7ddb0f7fd8b1b9e8f691c6d42a83cb16c6561d26
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Nov 19 18:19:38 2010 +0100
+Date:  Fri Nov 19 18:19:38 2010 +0100
 
     pygi-convert.sh: Add pynotify -> Notify
 
- pygi-convert.sh | 3 +++
+ pygi-convert.sh |    3 +++
  1 file changed, 3 insertions(+)
 
 commit bf03d4db03a7739ac16ddc4e614441557ede554d
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Nov 19 09:08:07 2010 +0100
+Date:  Fri Nov 19 09:08:07 2010 +0100
 
     pygi-convert.sh: Remove sugar specifics, and allow command line
     file list
@@ -28596,23 +10537,23 @@ Date:   Fri Nov 19 09:08:07 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
- pygi-convert.sh | 25 +++++--------------------
+ pygi-convert.sh |   25 +++++--------------------
  1 file changed, 5 insertions(+), 20 deletions(-)
 
 commit 18f5d229d3a4b9520c1c456be2635c8e36015c12
 Author: Martin Pitt <martin.pitt@ubuntu.com>
-Date:   Fri Nov 19 09:00:35 2010 +0100
+Date:  Fri Nov 19 09:00:35 2010 +0100
 
     pygi-convert.sh: Cover Message and Buttons types
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
- pygi-convert.sh | 2 ++
+ pygi-convert.sh |    2 ++
  1 file changed, 2 insertions(+)
 
 commit ef74273c2043944708515e59a654ebe4944b46ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Nov 18 13:54:48 2010 -0500
+Date:  Thu Nov 18 13:54:48 2010 -0500
 
     [gi] fix actiongroup test since actions are hashed
 
@@ -28620,26 +10561,26 @@ Date:   Thu Nov 18 13:54:48 2010 -0500
     were entered
       since they reside in an unordered hash internally
 
- tests/test_overrides.py | 9 +++++----
+ tests/test_overrides.py |    9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 2c25886bf6710568d0646f82dce4770faa44c40d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Nov 17 14:38:09 2010 -0500
+Date:  Wed Nov 17 14:38:09 2010 -0500
 
     [gi] when converting to UTF-8 accept Python Unicode objects as input
     (Python 2)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620579
 
- gi/pygi-argument.c          | 14 ++++++++++++--
- glib/pyglib-python-compat.h |  5 +++++
- tests/test_gi.py            |  3 +++
+ gi/pygi-argument.c         |   14 ++++++++++++--
+ glib/pyglib-python-compat.h |   5 +++++
+ tests/test_gi.py           |    3 +++
  3 files changed, 20 insertions(+), 2 deletions(-)
 
 commit 8c2d32c8205b971b4353e3d5d2ed1efa6ef0e06c
 Author: Damien Caliste <damien.caliste@cea.fr>
-Date:   Fri Nov 12 10:20:32 2010 +0100
+Date:  Fri Nov 12 10:20:32 2010 +0100
 
     Correct a bug in the freeing of memory in pygi-invoke.c.
 
@@ -28649,33 +10590,33 @@ Date:   Fri Nov 12 10:20:32 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=634671
 
- gi/pygi-invoke.c | 25 ++++++++++++++-----------
+ gi/pygi-invoke.c |   25 ++++++++++++++-----------
  1 file changed, 14 insertions(+), 11 deletions(-)
 
 commit d9bab3b185bb59bd29e3c3f6225f3636f58ec45e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Nov 10 14:11:56 2010 -0500
+Date:  Wed Nov 10 14:11:56 2010 -0500
 
     update news for release
 
- NEWS | 73
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   73
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 73 insertions(+)
 
 commit 1338a95339e21cc02b9df6d10166996c8b97a6bf
 Author: Jonathan Matthew <jonathan@d14n.org>
-Date:   Tue Sep 28 13:44:13 2010 +1000
+Date:  Tue Sep 28 13:44:13 2010 +1000
 
     Implement richcompare for GIBaseInfo
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625033
 
- gi/pygi-info.c | 29 +++++++++++++++++++++++++++++
+ gi/pygi-info.c |   29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 commit 9ce3edf69824935aeca9e676eaa9782786c22a97
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Nov 9 22:57:41 2010 -0500
+Date:  Tue Nov 9 22:57:41 2010 -0500
 
     [gi] add the rectangle_int_t forign cairo type
 
@@ -28686,12 +10627,12 @@ Date:   Tue Nov 9 22:57:41 2010 -0500
     compile
       without the forign structs
 
- gi/pygi-foreign-cairo.c | 4 ++++
+ gi/pygi-foreign-cairo.c |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit 68b8211d8b014cf26ca7e9ab751fb3f61f228290
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Oct 25 18:28:36 2010 -0400
+Date:  Mon Oct 25 18:28:36 2010 -0400
 
     add a foreign type for cairo_rectangle_int_t and allow it to be
     caller-allocated
@@ -28711,24 +10652,24 @@ Date:   Mon Oct 25 18:28:36 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627545
 
- gi/pygi-foreign-cairo.c | 57
- +++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c        | 15 +++++++++++--
+ gi/pygi-foreign-cairo.c |   57
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c       |   15 +++++++++++--
  2 files changed, 70 insertions(+), 2 deletions(-)
 
 commit ce8b948310220288e9eef904eef4ec8f4e24a376
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Nov 9 22:11:51 2010 -0500
+Date:  Tue Nov 9 22:11:51 2010 -0500
 
     [gi] add overrides to Gtk.Editable
 
- gi/overrides/Gtk.py     | 17 +++++++++++++++++
- tests/test_overrides.py | 12 ++++++++++++
+ gi/overrides/Gtk.py    |   17 +++++++++++++++++
+ tests/test_overrides.py |   12 ++++++++++++
  2 files changed, 29 insertions(+)
 
 commit 87dbc716f26cefc0e9427c3d6e8befe8eabd3d1e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Nov 9 21:12:54 2010 -0500
+Date:  Tue Nov 9 21:12:54 2010 -0500
 
     [gi] handle virtual invokers
 
@@ -28741,13 +10682,13 @@ Date:   Tue Nov 9 21:12:54 2010 -0500
     * this keeps the old way of checking vfuncs while adding the edge case
       where vfunc is named differently from their invoker
 
- gi/pygi-info.c | 16 ++++++++++++++++
- gi/types.py    |  2 +-
+ gi/pygi-info.c |   16 ++++++++++++++++
+ gi/types.py   |    2 +-
  2 files changed, 17 insertions(+), 1 deletion(-)
 
 commit 540e9f1f349ba3625e28b7673c92210eb8974098
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Nov 9 12:17:05 2010 -0500
+Date:  Tue Nov 9 12:17:05 2010 -0500
 
     add overrides for the insert* apis of list_store and tree_store
 
@@ -28756,24 +10697,24 @@ Date:   Tue Nov 9 12:17:05 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=634423
 
- gi/overrides/Gtk.py     | 80
- ++++++++++++++++++++++++++++++++++++++-----------
- tests/test_overrides.py | 53 +++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py    |   80
+ ++++++++++++++++++++++++++++++++++++-----------
+ tests/test_overrides.py |   53 ++++++++++++++++++++++++++++++-
  2 files changed, 114 insertions(+), 19 deletions(-)
 
 commit 0bcb58b9541d9ae52e1d96e6239e9dbe0698872a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Nov 5 13:56:12 2010 -0400
+Date:  Fri Nov 5 13:56:12 2010 -0400
 
     fix dialogs overrides which were relying on broken inheritance
     behavior
 
- gi/overrides/Gtk.py | 14 ++++++++++++--
+ gi/overrides/Gtk.py |  14 ++++++++++++--
  1 file changed, 12 insertions(+), 2 deletions(-)
 
 commit 89c104d17d79d7b935cd76101cba19d49390f7be
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Nov 4 12:00:14 2010 -0400
+Date:  Thu Nov 4 12:00:14 2010 -0400
 
     Add a overrides registry so we can refrence overrides inside the
     module
@@ -28792,57 +10733,57 @@ Date:   Thu Nov 4 12:00:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=633347
 
- gi/module.py                       | 12 ++++++++++-
- gi/overrides/GIMarshallingTests.py |  2 +-
- gi/overrides/Gdk.py                |  2 +-
- gi/overrides/Gtk.py                |  2 +-
- gi/overrides/__init__.py           | 43
- ++++++++++++++++++++++++++++++++++++++
- gi/types.py                        |  8 -------
- tests/test_overrides.py            | 27 ++++++++++++++++++++++++
+ gi/module.py                      |   12 +++++++++-
+ gi/overrides/GIMarshallingTests.py |   2 +-
+ gi/overrides/Gdk.py               |    2 +-
+ gi/overrides/Gtk.py               |    2 +-
+ gi/overrides/__init__.py          |   43
+ ++++++++++++++++++++++++++++++++++++
+ gi/types.py                       |    8 -------
+ tests/test_overrides.py           |   27 ++++++++++++++++++++++
  7 files changed, 84 insertions(+), 12 deletions(-)
 
 commit 878b8f630acd2146bee364054acd45cd33eea37a
-Merge: cdacaa95 e3178381
+Merge: cdacaa9 e317838
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Nov 5 11:40:22 2010 +1300
+Date:  Fri Nov 5 11:40:22 2010 +1300
 
     Merge remote branch 'dieterv/setup-fixes-for-merge'
 
 commit e317838178fba5f0590fb8bd323f49602d564b53
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Thu Nov 4 11:16:43 2010 +0100
+Date:  Thu Nov 4 11:16:43 2010 +0100
 
     setup.py: ease maintenance burden for tests installation
 
- setup.py | 23 +++--------------------
+ setup.py |   23 +++--------------------
  1 file changed, 3 insertions(+), 20 deletions(-)
 
 commit cdacaa9572893796e0f3aa3730d0191911cb29ee
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Nov 3 09:51:09 2010 -0400
+Date:  Wed Nov 3 09:51:09 2010 -0400
 
     fix inheritence issues in overrides
 
- gi/overrides/Gtk.py | 79
- +++++++++++++++++++++++++++--------------------------
+ gi/overrides/Gtk.py |  79
+ ++++++++++++++++++++++++++-------------------------
  1 file changed, 40 insertions(+), 39 deletions(-)
 
 commit 3d5955767d81f45e796ab2af0707533375681774
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:38:56 2010 +0100
+Date:  Wed Nov 3 09:38:56 2010 +0100
 
     tests: add runtests-windows.py script
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- tests/runtests-windows.py | 47
- +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/runtests-windows.py |   47
+ +++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 47 insertions(+)
 
 commit 8cb3f2e78161639c568110aad6a807dcf59f3ae8
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:35:52 2010 +0100
+Date:  Wed Nov 3 09:35:52 2010 +0100
 
     pygobject_postinstall.py: remove pygobject-2.0.pc treatment from
     postinstall as pkg-config on windows figures out the correct prefix
@@ -28850,249 +10791,249 @@ Date:   Wed Nov 3 09:35:52 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- pygobject_postinstall.py | 26 +++-----------------------
+ pygobject_postinstall.py |   26 +++-----------------------
  1 file changed, 3 insertions(+), 23 deletions(-)
 
 commit 63167574df53eb481cc11b6a097b2bfe7d5747f5
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:34:38 2010 +0100
+Date:  Wed Nov 3 09:34:38 2010 +0100
 
     pygobject_postinstall.py: remove shortcut creation
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- pygobject_postinstall.py | 35 +----------------------------------
+ pygobject_postinstall.py |   35 +----------------------------------
  1 file changed, 1 insertion(+), 34 deletions(-)
 
 commit f7b12611f94fd8c27fb67a03746c10149ce6e0ef
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:31:14 2010 +0100
+Date:  Wed Nov 3 09:31:14 2010 +0100
 
     setup.py: formatting cleanup, makes things readable
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 56 ++++++++++++++++++++++++++------------------------------
+ setup.py |   56 ++++++++++++++++++++++++++------------------------------
  1 file changed, 26 insertions(+), 30 deletions(-)
 
 commit a31b4196fbb4638a245430f2fdeafd7534b1d84d
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:28:36 2010 +0100
+Date:  Wed Nov 3 09:28:36 2010 +0100
 
     setup.py: build and install tests
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 61
+ setup.py |   61
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 61 insertions(+)
 
 commit 7c3b0c20b83c05833d73c240690dce3daf43fde8
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:26:59 2010 +0100
+Date:  Wed Nov 3 09:26:59 2010 +0100
 
     setup.py: install documentation when available on build system
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 3 +++
+ setup.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 78533d851ee1314686f18cfa793613a9cf7d6686
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:25:56 2010 +0100
+Date:  Wed Nov 3 09:25:56 2010 +0100
 
     setup.py: install pygobject-codegen script
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 25 +++++++++++++++++++++++++
+ setup.py |   25 +++++++++++++++++++++++++
  1 file changed, 25 insertions(+)
 
 commit ad40688df533dda0b1f7be8ea37c542b8796a26b
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:24:45 2010 +0100
+Date:  Wed Nov 3 09:24:45 2010 +0100
 
     setup.py: install fixxref.py script
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 3 +++
+ setup.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 21ddfc66e4e18c002a33154eb4ab81170ed71ecc
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:23:05 2010 +0100
+Date:  Wed Nov 3 09:23:05 2010 +0100
 
     setup.py: rearrange constants
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 37 ++++++++++++++++++++-----------------
+ setup.py |   37 ++++++++++++++++++++-----------------
  1 file changed, 20 insertions(+), 17 deletions(-)
 
 commit 7d353d04892de67265bf693f591f37fd393de639
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:18:11 2010 +0100
+Date:  Wed Nov 3 09:18:11 2010 +0100
 
     setup.py: check python version and pkgconig availability before
     anything else
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 18 ++++++++++--------
+ setup.py |   18 ++++++++++--------
  1 file changed, 10 insertions(+), 8 deletions(-)
 
 commit 286364ed39953e942e24d5911519bcac2f90975a
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:05:59 2010 +0100
+Date:  Wed Nov 3 09:05:59 2010 +0100
 
     setup.py: simplify sys.platform != 'win32' detection and error
     reporting
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 29 +++++++++--------------------
+ setup.py |   29 +++++++++--------------------
  1 file changed, 9 insertions(+), 20 deletions(-)
 
 commit 3f70f92904c123e6cc40929c0affd3f75d061828
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 09:02:30 2010 +0100
+Date:  Wed Nov 3 09:02:30 2010 +0100
 
     setup.py: rearrange imports
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py | 31 ++++++++++++++++++++++---------
+ setup.py |   31 ++++++++++++++++++++++---------
  1 file changed, 22 insertions(+), 9 deletions(-)
 
 commit 9aa54b65f729c0f3b0e96ab7ff797f87dad6a455
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 08:58:00 2010 +0100
+Date:  Wed Nov 3 08:58:00 2010 +0100
 
     README.win32: update build instructions
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- README.win32 | 13 +++++--------
+ README.win32 |   13 +++++--------
  1 file changed, 5 insertions(+), 8 deletions(-)
 
 commit 5a33105f690ba84b2e4bb15d73d3467e92fa06e0
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 07:59:18 2010 +0100
+Date:  Wed Nov 3 07:59:18 2010 +0100
 
     dsextras.py: formatting cleanup, makes things readable
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 148
- ++++++++++++++++++++++++++++++++++++++----------------------
+ dsextras.py | 148
+ +++++++++++++++++++++++++++++++++++++----------------------
  1 file changed, 93 insertions(+), 55 deletions(-)
 
 commit d03503d0412d173acb383926ab3c2d640dad3e3f
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 07:00:40 2010 +0100
+Date:  Wed Nov 3 07:00:40 2010 +0100
 
     dsextras.py: add ggc4 to MSVC compatible struct packing comment
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 4 ++--
+ dsextras.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8c62968e9f8467e24870b8c4f61112676eef4630
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:56:32 2010 +0100
+Date:  Wed Nov 3 06:56:32 2010 +0100
 
     dsextras.py: use the pkgc_ functions instead of repeating pgk-config
     incantations all over the place
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 15 ++++++---------
+ dsextras.py |  15 ++++++---------
  1 file changed, 6 insertions(+), 9 deletions(-)
 
 commit b98277afc24886bbda400e0ad360992bffa77b7c
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:49:48 2010 +0100
+Date:  Wed Nov 3 06:49:48 2010 +0100
 
     dsextras.py: add pkgc_get_version and pkgc_get_defs_dir functions
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 10 ++++++++++
+ dsextras.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit a565558652ebc3fa49d7aea40d399b06bbe376c4
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:45:05 2010 +0100
+Date:  Wed Nov 3 06:45:05 2010 +0100
 
     dsextras.py: PEP8: Comparisons to singletons like None should always
     be done with 'is' or 'is not', never the equality operators.
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 4 ++--
+ dsextras.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 4b1ff0c7f9953f925d2178069263cca67ca7db02
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:44:21 2010 +0100
+Date:  Wed Nov 3 06:44:21 2010 +0100
 
     dsextras.py: use True/False instead of 1/0
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 25 +++++++++++++------------
+ dsextras.py |  25 +++++++++++++------------
  1 file changed, 13 insertions(+), 12 deletions(-)
 
 commit 819a21cea831c3892040390e9446b78a91d1cbbe
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:28:04 2010 +0100
+Date:  Wed Nov 3 06:28:04 2010 +0100
 
     dsextras.py: rearrange imports
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 58
+ dsextras.py |  58
  +++++++++++++++++++++++++++++++---------------------------
  1 file changed, 31 insertions(+), 27 deletions(-)
 
 commit d20edbfdde2819f8d4fee8cb3170c126fcd31d5f
 Author: Dieter Verfaillie <dieterv@optionexplicit.be>
-Date:   Wed Nov 3 06:16:21 2010 +0100
+Date:  Wed Nov 3 06:16:21 2010 +0100
 
     Add distutils generated build/dist directories and eclipse
     configuration files to .gitignore
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- .gitignore | 7 +++++++
+ .gitignore |   7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 268d6ed2b0b1d266c612da4453b6117d9e14437e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Oct 28 15:32:28 2010 -0400
+Date:  Thu Oct 28 15:32:28 2010 -0400
 
     [gi] add tests for calling dir on a dynamic module
 
- tests/test_gi.py | 24 ++++++++++++++++++++++++
+ tests/test_gi.py |   24 ++++++++++++++++++++++++
  1 file changed, 24 insertions(+)
 
 commit f6386a6e0d225c83cdbe1add4c4d3ea51d3ec2f0
 Author: Deepankar Sharma <deepankar.sharma@gmail.com>
-Date:   Wed Oct 27 18:28:11 2010 -0400
+Date:  Wed Oct 27 18:28:11 2010 -0400
 
     [gi] dir() now works for modules
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625093
 
- gi/module.py | 8 ++++++++
+ gi/module.py |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 28ed01c34c503cfb4f14fe7af7912060ca70aba6
 Author: Simón Pena <spenap@gmail.com>
-Date:   Mon Sep 20 23:10:14 2010 +0200
+Date:  Mon Sep 20 23:10:14 2010 +0200
 
     Don't check the inner type when comparing gpointers
 
@@ -29103,12 +11044,12 @@ Date:   Mon Sep 20 23:10:14 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629552
 
- gobject/pygpointer.c | 2 +-
+ gobject/pygpointer.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1731f89e4b5a20c33976963e12a1f39a21d33fde
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Oct 28 14:21:12 2010 -0400
+Date:  Thu Oct 28 14:21:12 2010 -0400
 
     Release GIL when calling into C functions
 
@@ -29116,150 +11057,150 @@ Date:   Thu Oct 28 14:21:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629042
 
- gi/pygi-invoke.c | 10 +++++++++-
+ gi/pygi-invoke.c |   10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit 783e2e351ec7470bda6b441e51f387dd61543c4b
 Author: José Aliste <jaliste@src.gnome.org>
-Date:   Fri Oct 15 14:30:10 2010 -0300
+Date:  Fri Oct 15 14:30:10 2010 -0300
 
     _gi.Repository : Implement missing info bindings.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=632185
 
- gi/pygi-info.c | 91
- +++++++++++++++++++++++++++++++++++++++++++++++++---------
- gi/pygi-info.h |  7 +++++
+ gi/pygi-info.c |   91
+ +++++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-info.h |    7 +++++
  2 files changed, 84 insertions(+), 14 deletions(-)
 
 commit 2ca897273f52ae38f5e06e72c773a048e199eee5
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Oct 28 13:49:15 2010 -0400
+Date:  Thu Oct 28 13:49:15 2010 -0400
 
     include Python.h so that PY_VERSION_HEX gets defined
 
- gi/pygi-foreign-cairo.c | 1 +
+ gi/pygi-foreign-cairo.c |    1 +
  1 file changed, 1 insertion(+)
 
 commit 8b28b1d713df33931e255600ab98feda37a8e02a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Oct 28 13:47:34 2010 -0400
+Date:  Thu Oct 28 13:47:34 2010 -0400
 
     [gi] make overrides work for python 3.x protocols and alias for
     python 2.x
 
- gi/overrides/Gtk.py | 9 +++++++--
+ gi/overrides/Gtk.py |   9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 3c09710d2f68af9c16ce39fd25656147656a486a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:24:24 2010 +0200
+Date:  Sat Oct 23 14:24:24 2010 +0200
 
     Override Gtk.Widget.translate_coordinates to not return success value
 
- gi/overrides/Gtk.py | 11 +++++++++++
+ gi/overrides/Gtk.py |  11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 9d4443b3de8c327d8645ddde0a7a6dc5b977d7b4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:22:36 2010 +0200
+Date:  Sat Oct 23 14:22:36 2010 +0200
 
     Override Gtk.TreeViewColumn.cell_get_position to not return success
     value
 
- gi/overrides/Gtk.py | 5 +++++
+ gi/overrides/Gtk.py |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 6679d39ace06294e98f9d6fc911ed6fb27656010
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:21:36 2010 +0200
+Date:  Sat Oct 23 14:21:36 2010 +0200
 
     Override get_path_at_pos and get_dest_row_at_pos of Gtk.TreeView to
     not return success value
 
- gi/overrides/Gtk.py | 15 +++++++++++++++
+ gi/overrides/Gtk.py |  15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 80b1b266fa68a5c67106871502017166628f71e4
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:20:38 2010 +0200
+Date:  Sat Oct 23 14:20:38 2010 +0200
 
     Override Gtk.TreeSortable.get_sort_column_id to not return success
     value
 
- gi/overrides/Gtk.py | 12 ++++++++++++
+ gi/overrides/Gtk.py |  12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 17cd0fb3a2d2ca0c6109c41727ba0b8c42217cd5
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:19:20 2010 +0200
+Date:  Sat Oct 23 14:19:20 2010 +0200
 
     Override forward_search and backward_search of Gtk.TextIter to not
     return success value
 
- gi/overrides/Gtk.py | 15 +++++++++++++++
+ gi/overrides/Gtk.py |  15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 95c86fa31da3d2fe84db0e2b5bc2a6dc896c9223
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:18:09 2010 +0200
+Date:  Sat Oct 23 14:18:09 2010 +0200
 
     Override Gtk.TextBuffer.get_selection_bounds to not return success
     value
 
- gi/overrides/Gtk.py | 5 +++++
+ gi/overrides/Gtk.py |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit da6d87460b9392c29d025a7eed9249fb604204bc
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:17:04 2010 +0200
+Date:  Sat Oct 23 14:17:04 2010 +0200
 
     Override Gtk.RecentInfo.get_application_info to not return success
     value
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 0ed2e8772bdc405b0d0c7e0b2803e0e141abcb6a
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:16:21 2010 +0200
+Date:  Sat Oct 23 14:16:21 2010 +0200
 
     Override Gtk.IMContext.get_surrounding to not return success value
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit b85b445f15421209c0b4adf676d7c8218d6437c5
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:15:24 2010 +0200
+Date:  Sat Oct 23 14:15:24 2010 +0200
 
     Override get_item_at_pos, get_visible_range, get_dest_item_at_pos
     of Gtk.IconView to not return success value
 
- gi/overrides/Gtk.py | 19 +++++++++++++++++++
+ gi/overrides/Gtk.py |  19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 684d716192d58c972083e579e909bcd97f8a5025
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:13:47 2010 +0200
+Date:  Sat Oct 23 14:13:47 2010 +0200
 
     Override Gtk.Container.get_focus_chain to not return success value
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 8ec830c57fafbfe50d9619c6caba3cb95a00d688
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 23 14:12:44 2010 +0200
+Date:  Sat Oct 23 14:12:44 2010 +0200
 
     Override Gtk.ComboBox.get_active_iter to not return success value
 
- gi/overrides/Gtk.py | 10 ++++++++++
+ gi/overrides/Gtk.py |  10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit b483852904468722230903989e3451c7c6a24c0f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Oct 12 12:18:33 2010 -0400
+Date:  Tue Oct 12 12:18:33 2010 -0400
 
     [gi] make parameter check less strict when dealing with GValue params
 
@@ -29274,50 +11215,50 @@ Date:   Tue Oct 12 12:18:33 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622987
 
- gi/pygi-argument.c          | 17 ++++++---------
- gobject/gobjectmodule.c     |  4 ++--
- gobject/pygobject-private.h |  1 +
- gobject/pygobject.h         |  2 ++
- gobject/pygtype.c           | 37 +++++++++++++++++++++++++++++----
- tests/test_gi.py            |  1 -
- tests/test_overrides.py     | 50
- +++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-argument.c         |   17 ++++++---------
+ gobject/gobjectmodule.c     |   4 ++--
+ gobject/pygobject-private.h |   1 +
+ gobject/pygobject.h        |    2 ++
+ gobject/pygtype.c          |   37 ++++++++++++++++++++++++++++----
+ tests/test_gi.py           |    1 -
+ tests/test_overrides.py     |  50
+ +++++++++++++++++++++++++++++++++++++++----
  7 files changed, 90 insertions(+), 22 deletions(-)
 
 commit 8c87d622dcc6d76a981edfc5818fe67bb2e114e2
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Oct 22 13:28:31 2010 +1300
+Date:  Fri Oct 22 13:28:31 2010 +1300
 
     Shortcut removal is not needed on post-uninstall
 
- pygobject_postinstall.py | 14 ++------------
+ pygobject_postinstall.py |   14 ++------------
  1 file changed, 2 insertions(+), 12 deletions(-)
 
 commit a3ed97fe6f80548801739fe6b72771b9eb6d93f7
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Thu Oct 21 13:25:35 2010 +1300
+Date:  Thu Oct 21 13:25:35 2010 +1300
 
     Disable shortcut creation in windows installer
 
- pygobject_postinstall.py | 2 +-
+ pygobject_postinstall.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a3d6212b0abccef58f05d454c091936776413d98
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Oct 7 11:43:27 2010 -0400
+Date:  Thu Oct 7 11:43:27 2010 -0400
 
     overrides for all subclasses of dialog
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631634
 
- gi/overrides/Gtk.py     | 94
- +++++++++++++++++++++++++++++++++++++++++++++----
- tests/test_overrides.py | 64 ++++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py    |   94
+ ++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_overrides.py |   64 +++++++++++++++++++++++++++++++-
  2 files changed, 151 insertions(+), 7 deletions(-)
 
 commit a87e3ba64b54e6df0b5b96af47c34e3be790b58f
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Thu Oct 7 19:37:53 2010 +0200
+Date:  Thu Oct 7 19:37:53 2010 +0200
 
     Make TreeModel behave like in GTK-2.x
 
@@ -29340,81 +11281,81 @@ Date:   Thu Oct 7 19:37:53 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631547
 
- gi/overrides/Gtk.py     | 195
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 160 +++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     195
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |  160 ++++++++++++++++++++++++++++++++++++--
  2 files changed, 349 insertions(+), 6 deletions(-)
 
 commit acfcc29af727fb67d0dfbbcc7cc14963ef21f1ea
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sat Oct 16 18:59:25 2010 +1300
+Date:  Sat Oct 16 18:59:25 2010 +1300
 
     Correctly build GIO on windows
 
- setup.py | 6 +++---
+ setup.py |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 33b59fd7437009b6c3ed43412e171d2cc91ee317
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sat Oct 16 18:17:28 2010 +1300
+Date:  Sat Oct 16 18:17:28 2010 +1300
 
     Require Python >= 2.6.0 for Windows build
 
- setup.py | 2 +-
+ setup.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 544e0e4de4f5f97b0584eaf72ae8a081eca28ab6
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sat Oct 16 17:41:01 2010 +1300
+Date:  Sat Oct 16 17:41:01 2010 +1300
 
     Fix depreciation warning in dsextras.py
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 239ff961778e4e1587404d8a70dfbe8630ab0623
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sat Oct 16 17:34:50 2010 +1300
+Date:  Sat Oct 16 17:34:50 2010 +1300
 
     Fix build on windows
 
- gi/pygi-foreign.c | 5 ++++-
- gi/pygi.h         | 5 ++++-
- setup.py          | 4 ++--
+ gi/pygi-foreign.c |   5 ++++-
+ gi/pygi.h        |    5 ++++-
+ setup.py         |    4 ++--
  3 files changed, 10 insertions(+), 4 deletions(-)
 
 commit 9a2f81d63012fef23fdde2b4d903bd69601c07c6
 Author: Michael Culbertson <michael.culbertson@gmail.com>
-Date:   Sat Oct 16 17:08:11 2010 +1300
+Date:  Sat Oct 16 17:08:11 2010 +1300
 
     Support for GCC4 in Windows distutils build - bug 626548
 
- dsextras.py | 3 ++-
+ dsextras.py |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 27367c8dc3a3a31fdd778505b319cd3f4afb9e27
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Oct 15 09:39:02 2010 +1300
+Date:  Fri Oct 15 09:39:02 2010 +1300
 
     Remove obsolete comments in dsextras.py
 
- dsextras.py | 11 ++---------
+ dsextras.py |  11 ++---------
  1 file changed, 2 insertions(+), 9 deletions(-)
 
 commit b5f383f854fb8f72677828b029589320c59006d1
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Oct 15 09:21:03 2010 +1300
+Date:  Fri Oct 15 09:21:03 2010 +1300
 
     Broken dsextras.py pkg-config check error message
 
-            * Fixes bug 631962
+       * Fixes bug 631962
 
- dsextras.py | 2 +-
+ dsextras.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e1981da105b574e273ae6500fc6d25caf6af6aae
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Sep 28 15:31:03 2010 -0400
+Date:  Tue Sep 28 15:31:03 2010 -0400
 
     add compat functions for the deprecated PyCObject api
 
@@ -29438,20 +11379,20 @@ Date:   Tue Sep 28 15:31:03 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630844
 
- gi/gimodule.c               |  2 +-
- gi/pygi.h                   |  5 ++++-
- glib/glibmodule.c           |  2 +-
- glib/pyglib-python-compat.h | 28 ++++++++++++++++++++++++++++
- glib/pyglib.c               |  6 +++---
- glib/pygoptioncontext.c     |  2 +-
- gobject/gobjectmodule.c     |  2 +-
- gobject/pygobject.h         |  6 ++++++
- gobject/pygtype.c           | 10 +++++-----
+ gi/gimodule.c              |    2 +-
+ gi/pygi.h                  |    5 ++++-
+ glib/glibmodule.c          |    2 +-
+ glib/pyglib-python-compat.h |  28 ++++++++++++++++++++++++++++
+ glib/pyglib.c              |    6 +++---
+ glib/pygoptioncontext.c     |   2 +-
+ gobject/gobjectmodule.c     |   2 +-
+ gobject/pygobject.h        |    6 ++++++
+ gobject/pygtype.c          |   10 +++++-----
  9 files changed, 50 insertions(+), 13 deletions(-)
 
 commit 03d2e2924e27a9d6cae89e5748f70e0a51be91c6
 Author: Damien Caliste <damien.caliste@cea.fr>
-Date:   Tue Sep 28 12:44:42 2010 +0200
+Date:  Tue Sep 28 12:44:42 2010 +0200
 
     Add __path__ attributes.
 
@@ -29460,34 +11401,34 @@ Date:   Tue Sep 28 12:44:42 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630807
 
- gi/module.py | 2 ++
+ gi/module.py |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 28f9366c9cb382801bad080864f667c867daa3c7
 Author: Sebastian Pölsterl <sebp@k-d-w.org>
-Date:   Sat Oct 9 17:40:40 2010 +0200
+Date:  Sat Oct 9 17:40:40 2010 +0200
 
     Override Gtk.TreeSelection.get_selected to not return success value.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631765
 
- gi/overrides/Gtk.py | 12 ++++++++++++
+ gi/overrides/Gtk.py |  12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit f01a7d9e8222663ce52100e061033f2745a5e7af
 Author: Vincent Untz <vuntz@gnome.org>
-Date:   Thu Oct 7 09:42:24 2010 +0200
+Date:  Thu Oct 7 09:42:24 2010 +0200
 
     Make row optional in Gtk.TreeStore/ListStore.append override
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631548
 
- gi/overrides/Gtk.py | 36 ++++++++++++++++++++++--------------
+ gi/overrides/Gtk.py |  36 ++++++++++++++++++++++--------------
  1 file changed, 22 insertions(+), 14 deletions(-)
 
 commit 1e1357f5fa1a034b0b707040d664ac46be6e23f7
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Oct 4 12:50:55 2010 -0400
+Date:  Mon Oct 4 12:50:55 2010 -0400
 
     Revert "add compat functions for the deprecated PyCObject api"
 
@@ -29495,32 +11436,32 @@ Date:   Mon Oct 4 12:50:55 2010 -0400
 
     I ment to commit another patch and ended up comitting both
 
- gi/gimodule.c               |  2 +-
- gi/pygi.h                   |  5 +----
- glib/glibmodule.c           |  2 +-
- glib/pyglib-python-compat.h | 19 -------------------
- glib/pyglib.c               |  6 +++---
- glib/pygoptioncontext.c     |  2 +-
- gobject/gobjectmodule.c     |  2 +-
- gobject/pygobject.h         |  6 ------
- gobject/pygtype.c           | 10 +++++-----
+ gi/gimodule.c              |    2 +-
+ gi/pygi.h                  |    5 +----
+ glib/glibmodule.c          |    2 +-
+ glib/pyglib-python-compat.h |  19 -------------------
+ glib/pyglib.c              |    6 +++---
+ glib/pygoptioncontext.c     |   2 +-
+ gobject/gobjectmodule.c     |   2 +-
+ gobject/pygobject.h        |    6 ------
+ gobject/pygtype.c          |   10 +++++-----
  9 files changed, 13 insertions(+), 41 deletions(-)
 
 commit 97774cb149c5b03d5ef82a5af3f19e2ce4d79d0b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Oct 4 12:43:31 2010 -0400
+Date:  Mon Oct 4 12:43:31 2010 -0400
 
     return NULL instead of -1 which fixes crash when introspection is
     turned off
 
     * see https://bugzilla.gnome.org/show_bug.cgi?id=631158
 
- gi/pygi.h | 2 +-
+ gi/pygi.h |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f25e763d53e5cdd4de08e90b04aea4b4c4720ac0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Sep 28 15:31:03 2010 -0400
+Date:  Tue Sep 28 15:31:03 2010 -0400
 
     add compat functions for the deprecated PyCObject api
 
@@ -29528,128 +11469,128 @@ Date:   Tue Sep 28 15:31:03 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630844
 
- gi/gimodule.c               |  2 +-
- gi/pygi.h                   |  5 ++++-
- glib/glibmodule.c           |  2 +-
- glib/pyglib-python-compat.h | 19 +++++++++++++++++++
- glib/pyglib.c               |  6 +++---
- glib/pygoptioncontext.c     |  2 +-
- gobject/gobjectmodule.c     |  2 +-
- gobject/pygobject.h         |  6 ++++++
- gobject/pygtype.c           | 10 +++++-----
+ gi/gimodule.c              |    2 +-
+ gi/pygi.h                  |    5 ++++-
+ glib/glibmodule.c          |    2 +-
+ glib/pyglib-python-compat.h |  19 +++++++++++++++++++
+ glib/pyglib.c              |    6 +++---
+ glib/pygoptioncontext.c     |   2 +-
+ gobject/gobjectmodule.c     |   2 +-
+ gobject/pygobject.h        |    6 ++++++
+ gobject/pygtype.c          |   10 +++++-----
  9 files changed, 41 insertions(+), 13 deletions(-)
 
 commit 80b8ccd450fe4e3ea77b27e58bb63cabc2a2bb2b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Sep 28 15:28:16 2010 -0400
+Date:  Tue Sep 28 15:28:16 2010 -0400
 
     fix commit 7fe83108 which didn't use the compat functions for
     string handling
 
- glib/glibmodule.c | 2 +-
+ glib/glibmodule.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9562842907a9d94f6adae2c1bb20d6b1f189abda
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Sep 28 13:15:57 2010 -0400
+Date:  Tue Sep 28 13:15:57 2010 -0400
 
     Python 3 fixes for dsextras and the python.m4 distribution files
 
- dsextras.py  | 13 +++++++------
- m4/python.m4 |  4 ++--
+ dsextras.py  |   13 +++++++------
+ m4/python.m4 |    4 ++--
  2 files changed, 9 insertions(+), 8 deletions(-)
 
 commit 98f69957ee9e3037b0a05a037098e4d2133ca256
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Sep 27 14:01:31 2010 -0400
+Date:  Mon Sep 27 14:01:31 2010 -0400
 
     post release bump to 2.27.0 unstable
 
     * update hacking to fill in some holes in the release instructions
 
- HACKING      | 6 ++++--
- configure.ac | 2 +-
+ HACKING      |    6 ++++--
+ configure.ac |    2 +-
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 commit fd38010101411e6bc1ca9314657f418de660fa13
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Sep 27 12:03:10 2010 -0400
+Date:  Mon Sep 27 12:03:10 2010 -0400
 
     update NEWS for release
 
- NEWS | 93
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 93 insertions(+)
 
 commit 7072d56b6cba13da97a052c75d1ae0c2cc417fd1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Sun Sep 26 08:37:31 2010 +0200
+Date:  Sun Sep 26 08:37:31 2010 +0200
 
     Pre-release version bump 2.26.0
 
- configure.ac | 4 ++--
+ configure.ac |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a549f429d2ced7a78d5baa5e2f28f6750b4788f2
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Sep 24 22:44:03 2010 +1200
+Date:  Fri Sep 24 22:44:03 2010 +1200
 
     Wrap g_get_system_{config,data}_dirs ()
 
-            * Also tidy up g_get_{cache,config,data}_dir
-              to share common code
+       * Also tidy up g_get_{cache,config,data}_dir
+         to share common code
 
- glib/glibmodule.c | 68
- ++++++++++++++++++++++++++++++++++++++++---------------
+ glib/glibmodule.c |   68
+ +++++++++++++++++++++++++++++++++++++++--------------
  1 file changed, 50 insertions(+), 18 deletions(-)
 
 commit 328aca600714bdca89dfdb531c222ee561ede27e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Sep 24 12:16:22 2010 -0400
+Date:  Fri Sep 24 12:16:22 2010 -0400
 
     fixed make check and make dist
 
- tests/Makefile.am | 31 ++++++++++++++++++-------------
+ tests/Makefile.am |   31 ++++++++++++++++++-------------
  1 file changed, 18 insertions(+), 13 deletions(-)
 
 commit 27023fd56148dd17b5576c1e81e0fe851d9b8727
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Sep 24 21:20:53 2010 +1200
+Date:  Fri Sep 24 21:20:53 2010 +1200
 
     Disable GI tests when introspection disabled
 
- tests/Makefile.am | 2 ++
+ tests/Makefile.am |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 7fe831081cdd2e26f5d948326b9f89ea0694e752
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Jul 18 19:35:08 2009 +0200
+Date:  Sat Jul 18 19:35:08 2009 +0200
 
     Wrap g_uri_list_extract_uris. Fixes bug #584431
 
- glib/glibmodule.c   | 38 ++++++++++++++++++++++++++++++++++++++
- gobject/__init__.py |  2 +-
- tests/Makefile.am   |  3 ++-
- tests/test_uris.py  | 15 +++++++++++++++
+ glib/glibmodule.c   |  38 ++++++++++++++++++++++++++++++++++++++
+ gobject/__init__.py |   2 +-
+ tests/Makefile.am   |   3 ++-
+ tests/test_uris.py  |  15 +++++++++++++++
  4 files changed, 56 insertions(+), 2 deletions(-)
 
 commit d6721a59c294f2471142b8c32de2f647b7084bca
 Author: Paul Bolle <pebolle@tiscali.nl>
-Date:   Thu Sep 23 15:38:40 2010 -0400
+Date:  Thu Sep 23 15:38:40 2010 -0400
 
     Fix a few uses of TRUE and FALSE in the docs
 
- docs/reference/pygio-mount.xml         |  5 +++--
- docs/reference/pyglib-functions.xml    | 18 +++++++++---------
- docs/reference/pyglib-maincontext.xml  | 12 ++++++------
- docs/reference/pyglib-mainloop.xml     |  6 +++---
- docs/reference/pygobject-functions.xml |  6 +++---
- docs/reference/pygobject.xml           |  4 ++--
+ docs/reference/pygio-mount.xml                |    5 +++--
+ docs/reference/pyglib-functions.xml   |   18 +++++++++---------
+ docs/reference/pyglib-maincontext.xml |   12 ++++++------
+ docs/reference/pyglib-mainloop.xml    |    6 +++---
+ docs/reference/pygobject-functions.xml |    6 +++---
+ docs/reference/pygobject.xml          |    4 ++--
  6 files changed, 26 insertions(+), 25 deletions(-)
 
 commit a08c9fffb4262ae678e17f90bbfb2d5f880cfad0
 Author: Damien Caliste <damien.caliste@cea.fr>
-Date:   Tue Sep 21 17:52:14 2010 +0200
+Date:  Tue Sep 21 17:52:14 2010 +0200
 
     pygi: always free the invocation_state struct
 
@@ -29669,41 +11610,41 @@ Date:   Tue Sep 21 17:52:14 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630271
 
- gi/pygi-invoke.c         | 83
- +++++++++++++++++++++---------------------------
- tests/test_everything.py |  4 ++-
+ gi/pygi-invoke.c        |   83
+ +++++++++++++++++++++-------------------------
+ tests/test_everything.py |    4 ++-
  2 files changed, 40 insertions(+), 47 deletions(-)
 
 commit 9714d765a34e246899f11b6792eea3aecce0b7ec
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Sep 13 16:36:47 2010 +0200
+Date:  Mon Sep 13 16:36:47 2010 +0200
 
     Start implementing something equivalent to g_variant_new
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629367
 
- gi/gimodule.c              |  20 +++++++
- gi/overrides/GLib.py       | 131
- ++++++++++++++++++++++++++++++++++++++++++---
- gi/pygi-foreign-gvariant.c |   2 +-
- tests/test_everything.py   |  16 ------
- tests/test_overrides.py    |  25 +++++++++
+ gi/gimodule.c               20 +++++++
+ gi/overrides/GLib.py       131
+ +++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-foreign-gvariant.c |   2 +-
+ tests/test_everything.py   |  16 ------
+ tests/test_overrides.py    |  25 +++++++++
  5 files changed, 170 insertions(+), 24 deletions(-)
 
 commit fc45abdd9b55ab63556798ab0f04715be79dba08
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 23 10:49:36 2010 -0400
+Date:  Thu Sep 23 10:49:36 2010 -0400
 
     fixed typo - missing comma in glib.option module
 
     * https://bugzilla.gnome.org/show_bug.cgi?id=627449
 
- glib/option.py | 2 +-
+ glib/option.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4ed100f3183c6325dd04461484e877bb7d4131b1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Sep 17 12:08:09 2010 -0400
+Date:  Fri Sep 17 12:08:09 2010 -0400
 
     add checks so we can compile under python 3 by setting PYTHON=python3
 
@@ -29713,14 +11654,14 @@ Date:   Fri Sep 17 12:08:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- configure.ac      | 32 +++++++++++++++++++++++++++++---
- tests/Makefile.am | 35 ++++++++++++++++++++---------------
- tests/runtests.py |  4 ++++
+ configure.ac     |   32 +++++++++++++++++++++++++++++---
+ tests/Makefile.am |   35 ++++++++++++++++++++---------------
+ tests/runtests.py |   4 ++++
  3 files changed, 53 insertions(+), 18 deletions(-)
 
 commit 269ff8564eeb597dc06c27e293354b7ff7a71a82
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Sep 17 15:50:47 2010 +0200
+Date:  Fri Sep 17 15:50:47 2010 +0200
 
     Rename static methods as functions
 
@@ -29729,25 +11670,25 @@ Date:   Fri Sep 17 15:50:47 2010 +0200
     releases it's planned to become static methods again but for now
     let's fix the tests.
 
- tests/test_gi.py | 14 +++++++-------
+ tests/test_gi.py |   14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit 2da8da589644d6125101210712defb1272a8abb1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 13:52:14 2010 -0400
+Date:  Thu Sep 9 13:52:14 2010 -0400
 
     fix a couple of compiler warnings
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629199
 
- gi/pygi-argument.c      | 4 ++--
- gi/pygi-struct.c        | 2 +-
- gobject/gobjectmodule.c | 2 +-
+ gi/pygi-argument.c     |    4 ++--
+ gi/pygi-struct.c       |    2 +-
+ gobject/gobjectmodule.c |    2 +-
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 commit 6769a4704f0876ac3baacd4da03ff16d9f0906be
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 13:55:17 2010 -0400
+Date:  Thu Sep 9 13:55:17 2010 -0400
 
     remove unused code
 
@@ -29755,12 +11696,12 @@ Date:   Thu Sep 9 13:55:17 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629198
 
- gobject/pygtype.c | 9 ---------
+ gobject/pygtype.c |   9 ---------
  1 file changed, 9 deletions(-)
 
 commit 98f54f9d33996baeaa8c8c1240310f5396d03a1d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Sep 14 14:10:49 2010 -0400
+Date:  Tue Sep 14 14:10:49 2010 -0400
 
     Check the type of the instance object
 
@@ -29784,26 +11725,26 @@ Date:   Tue Sep 14 14:10:49 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c | 182
- ++++++++++++++++++++++++++++-------------------------
- gi/pygi-argument.h |   2 +
- gi/pygi-invoke.c   |  14 +++++
+ gi/pygi-argument.c |  182
+ +++++++++++++++++++++++++++-------------------------
+ gi/pygi-argument.h |   2 +
+ gi/pygi-invoke.c   |  14 ++++
  3 files changed, 112 insertions(+), 86 deletions(-)
 
 commit 5d79498d38b147b66ae72c1481e397160491e8d6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Sep 15 10:26:20 2010 -0400
+Date:  Wed Sep 15 10:26:20 2010 -0400
 
     include the correct pycairo version
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-foreign-cairo.c | 6 ++++++
+ gi/pygi-foreign-cairo.c |    6 ++++++
  1 file changed, 6 insertions(+)
 
 commit b855562e5c0019cd7e4982fe00c467ede9e3926d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 22:16:58 2010 -0400
+Date:  Thu Sep 9 22:16:58 2010 -0400
 
     Use PyMapping_Keys to determine if an object is a dict (py3k fix)
 
@@ -29814,12 +11755,12 @@ Date:   Thu Sep 9 22:16:58 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c | 10 +++-------
+ gi/pygi-argument.c |  10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 0e72e28c6c5502c7db5103cf1299c9f0e6689fdd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 18:44:11 2010 -0400
+Date:  Thu Sep 9 18:44:11 2010 -0400
 
     fix handling of UINT64 and INT64 arguments in py3k
 
@@ -29827,12 +11768,12 @@ Date:   Thu Sep 9 18:44:11 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c | 20 ++++++++++++--------
+ gi/pygi-argument.c |  20 ++++++++++++--------
  1 file changed, 12 insertions(+), 8 deletions(-)
 
 commit d5666d99a1c0396b7da0cb14f9f4ff8892da7e2e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 17:35:10 2010 -0400
+Date:  Thu Sep 9 17:35:10 2010 -0400
 
     properly handle ulongs properties in py3k
 
@@ -29840,32 +11781,32 @@ Date:   Thu Sep 9 17:35:10 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/pygtype.c | 29 ++++++++++++++++-------------
+ gobject/pygtype.c |   29 ++++++++++++++++-------------
  1 file changed, 16 insertions(+), 13 deletions(-)
 
 commit 3d431c7dd0de97db10cb0c00c39d9c1837bed2f2
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Sep 17 12:14:56 2010 +0200
+Date:  Fri Sep 17 12:14:56 2010 +0200
 
     Specify encoding of tests/test_gi.py
 
- tests/test_gi.py | 3 ++-
+ tests/test_gi.py |    3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit a808bdabb9fa6f4a9b9ce42e1cce05fb37403f0f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 13:24:30 2010 -0400
+Date:  Thu Sep 9 13:24:30 2010 -0400
 
     use actual unicode in the tests on py3k, not the byte representation
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/test_gi.py | 6 +++++-
+ tests/test_gi.py |    6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 928f4485041d80d0c36ff2daeae4bcd09bd0bde4
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 12:45:21 2010 -0400
+Date:  Thu Sep 9 12:45:21 2010 -0400
 
     s/METH_KEYWORDS/METH_VARARGS|METH_KEYWORDS/ when defining object
     methods
@@ -29876,25 +11817,25 @@ Date:   Thu Sep 9 12:45:21 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c | 30 +++++++++++++++---------------
- glib/pygsource.c    |  4 ++--
- gobject/pygobject.c |  2 +-
+ glib/pygiochannel.c |  30 +++++++++++++++---------------
+ glib/pygsource.c    |   4 ++--
+ gobject/pygobject.c |   2 +-
  3 files changed, 18 insertions(+), 18 deletions(-)
 
 commit b5ee20afa4399c7689fbec8939fa20b927eeb782
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 08:04:40 2010 -0400
+Date:  Thu Sep 9 08:04:40 2010 -0400
 
     fix subclassing PyLong by calling __new__ correctly
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygspawn.c | 4 ++--
+ glib/pygspawn.c |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a499b2f0d622b671bd154544f66b73f1278e66ed
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 07:56:44 2010 -0400
+Date:  Thu Sep 9 07:56:44 2010 -0400
 
     minor py3k fixups for python modules
 
@@ -29905,13 +11846,13 @@ Date:   Thu Sep 9 07:56:44 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/overrides/Gtk.py | 24 ++++++++++++++++--------
- glib/option.py      | 16 ++++++++++++----
+ gi/overrides/Gtk.py |  24 ++++++++++++++++--------
+ glib/option.py      |  16 ++++++++++++----
  2 files changed, 28 insertions(+), 12 deletions(-)
 
 commit dec9001d26c97949e7b3578086cb35e98075c047
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Sep 9 07:36:04 2010 -0400
+Date:  Thu Sep 9 07:36:04 2010 -0400
 
     minor fixes in tests for py3k compat
 
@@ -29921,7 +11862,7 @@ Date:   Thu Sep 9 07:36:04 2010 -0400
     * use range instead of xrange, items instead of iteritems since py3k
       dropped support for the different ways of accessing iterators
       - this is less efficient in py2 but we plan to target py3k as the
-        primary platform
+       primary platform
     * use list(dict.items()) since py3k only returns iterables which
     are not
       indexable
@@ -29929,36 +11870,36 @@ Date:   Thu Sep 9 07:36:04 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/compathelper.py    | 18 ++++++++++++++++++
- tests/test_everything.py |  5 +++--
- tests/test_mainloop.py   |  3 ++-
- tests/test_option.py     |  6 ++++--
- tests/test_overrides.py  |  4 ++--
- tests/test_properties.py |  6 +++---
+ tests/compathelper.py   |   18 ++++++++++++++++++
+ tests/test_everything.py |    5 +++--
+ tests/test_mainloop.py   |    3 ++-
+ tests/test_option.py    |    6 ++++--
+ tests/test_overrides.py  |    4 ++--
+ tests/test_properties.py |    6 +++---
  6 files changed, 32 insertions(+), 10 deletions(-)
 
 commit 09a0daeedf49eaf376c1288be5743b57fbc76d51
 Author: Colin Walters <walters@verbum.org>
-Date:   Thu Sep 9 16:25:51 2010 -0400
+Date:  Thu Sep 9 16:25:51 2010 -0400
 
     compilation: Fix syntax error
 
- gi/pygi-info.c | 2 +-
+ gi/pygi-info.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9f7afd6d5afd8c1a5f36bf1295814757b71c8cbc
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Sep 9 22:17:00 2010 +0200
+Date:  Thu Sep 9 22:17:00 2010 +0200
 
     Add missing file
 
- gi/overrides/GLib.py | 48
+ gi/overrides/GLib.py |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
 commit 306b792ac97a458ddee59fb86d66453495117f3e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jul 22 13:48:51 2010 +0100
+Date:  Thu Jul 22 13:48:51 2010 +0100
 
     Add override for GLib.Variant.new_tuple
 
@@ -29972,35 +11913,35 @@ Date:   Thu Jul 22 13:48:51 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625050
 
- gi/gimodule.c            | 38 ++++++++++++++++++++++++++++++++++++++
- gi/overrides/Makefile.am |  1 +
- gi/pygi-type.c           | 15 +++++++++------
- gi/pygi-type.h           |  2 ++
- gi/types.py              |  1 +
- tests/test_everything.py |  9 +++++++++
+ gi/gimodule.c           |   38 ++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Makefile.am |    1 +
+ gi/pygi-type.c                  |   15 +++++++++------
+ gi/pygi-type.h                  |    2 ++
+ gi/types.py             |    1 +
+ tests/test_everything.py |    9 +++++++++
  6 files changed, 60 insertions(+), 6 deletions(-)
 
 commit 22e53aa2ed9cf6173a877b0af6928d5ab8da2f4f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Sep 8 13:08:48 2010 -0400
+Date:  Wed Sep 8 13:08:48 2010 -0400
 
     fix for changes in the gi test libraries
 
- tests/test_everything.py | 2 +-
+ tests/test_everything.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 246877074617b0e9c3b2ba2a5395a73e0ed9cd5d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Sep 8 13:08:07 2010 -0400
+Date:  Wed Sep 8 13:08:07 2010 -0400
 
     Gtk.DialogFlags.NO_SEPARATOR has been removed in Gtk 3.0
 
- gi/overrides/Gtk.py | 10 ++++++++--
+ gi/overrides/Gtk.py |  10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit f92fc48e7e2ec50996e994ccb7d08a61e7374f22
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Sep 8 12:35:09 2010 -0400
+Date:  Wed Sep 8 12:35:09 2010 -0400
 
     no need to offset arg positions when is_method is true
 
@@ -30012,25 +11953,25 @@ Date:   Wed Sep 8 12:35:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629087
 
- gi/pygi-callbacks.c | 5 +----
+ gi/pygi-callbacks.c |   5 +----
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 commit 8c517de2d278bdef641c72b8f2919a3924290ec1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Aug 20 14:54:35 2010 +0200
+Date:  Fri Aug 20 14:54:35 2010 +0200
 
     gi: Add support for more property types
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627494
 
- gi/pygi-property.c       | 156
- ++++++++++++++++++++++++++++++++++++-----------
- tests/test_everything.py |  34 +++++++++++
+ gi/pygi-property.c       156
+ +++++++++++++++++++++++++++++++++++-----------
+ tests/test_everything.py |   34 ++++++++++
  2 files changed, 154 insertions(+), 36 deletions(-)
 
 commit 6d183d1fff55d54569ba3e1f90a10284df74fd40
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Sep 3 12:04:16 2010 -0400
+Date:  Fri Sep 3 12:04:16 2010 -0400
 
     use PyObject_SetAttrString, not PyDict_SetItemString when setting
     __gtype__
@@ -30056,33 +11997,33 @@ Date:   Fri Sep 3 12:04:16 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/gobjectmodule.c | 2 +-
+ gobject/gobjectmodule.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b7bf4269682a3335f5e0a52b46fa721af134d09a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Sep 1 11:03:40 2010 +0200
+Date:  Wed Sep 1 11:03:40 2010 +0200
 
     Rename GArgument to GIArgument
 
- gi/pygi-argument.c         | 52
- +++++++++++++++++++++++-----------------------
- gi/pygi-argument.h         | 10 ++++-----
- gi/pygi-closure.c          | 34 +++++++++++++++---------------
- gi/pygi-foreign-cairo.c    |  8 +++----
- gi/pygi-foreign-gvariant.c |  4 ++--
- gi/pygi-foreign-gvariant.h |  4 ++--
- gi/pygi-foreign.c          | 12 +++++------
- gi/pygi-foreign.h          |  8 +++----
- gi/pygi-info.c             |  8 +++----
- gi/pygi-invoke.c           | 28 ++++++++++++-------------
- gi/pygi-property.c         |  4 ++--
- gi/pygi.h                  | 16 +++++++-------
+ gi/pygi-argument.c        |   52
+ ++++++++++++++++++++++----------------------
+ gi/pygi-argument.h        |   10 ++++-----
+ gi/pygi-closure.c         |   34 ++++++++++++++---------------
+ gi/pygi-foreign-cairo.c    |   8 +++----
+ gi/pygi-foreign-gvariant.c |   4 ++--
+ gi/pygi-foreign-gvariant.h |   4 ++--
+ gi/pygi-foreign.c         |   12 +++++-----
+ gi/pygi-foreign.h         |    8 +++----
+ gi/pygi-info.c                    |    8 +++----
+ gi/pygi-invoke.c          |   28 ++++++++++++------------
+ gi/pygi-property.c        |    4 ++--
+ gi/pygi.h                 |   16 +++++++-------
  12 files changed, 94 insertions(+), 94 deletions(-)
 
 commit 7197f85c9be2b03636639ac909ca2c3170653509
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Aug 18 10:29:19 2010 -0400
+Date:  Wed Aug 18 10:29:19 2010 -0400
 
     fix up tests so they run in py3k
 
@@ -30093,17 +12034,17 @@ Date:   Wed Aug 18 10:29:19 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/propertyhelper.py | 16 +++++++++++-----
- tests/compathelper.py     | 32 ++++++++++++++++++++++++++++++++
- tests/test_option.py      |  7 ++++++-
- tests/test_properties.py  | 24 ++++++++++++++----------
- tests/test_signal.py      | 14 +++++++-------
- tests/test_source.py      |  4 ++--
+ gobject/propertyhelper.py |   16 +++++++++++-----
+ tests/compathelper.py    |   32 ++++++++++++++++++++++++++++++++
+ tests/test_option.py     |    7 ++++++-
+ tests/test_properties.py  |   24 ++++++++++++++----------
+ tests/test_signal.py     |   14 +++++++-------
+ tests/test_source.py     |    4 ++--
  6 files changed, 72 insertions(+), 25 deletions(-)
 
 commit 720e614acdbcf734d4bcccc403e639b5a5bcae24
 Author: Colin Walters <walters@verbum.org>
-Date:   Fri Aug 20 10:58:48 2010 -0400
+Date:  Fri Aug 20 10:58:48 2010 -0400
 
     tests: Port to new introspection tests
 
@@ -30122,45 +12063,45 @@ Date:   Fri Aug 20 10:58:48 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627878
 
- configure.ac             |   5 +-
- gi/pygi-argument.c       |   9 +--
- gi/pygi-invoke.c         | 147
- +++++----------------------------------------
- tests/Makefile.am        |  42 ++++++++++++-
- tests/test_everything.py |   6 +-
- tests/test_gi.py         | 151
- +++++++++--------------------------------------
+ configure.ac               5 +-
+ gi/pygi-argument.c         9 +--
+ gi/pygi-invoke.c         147
+ +++++---------------------------------------
+ tests/Makefile.am         42 ++++++++++++-
+ tests/test_everything.py |    6 +-
+ tests/test_gi.py         151
+ +++++++++-------------------------------------
  6 files changed, 93 insertions(+), 267 deletions(-)
 
 commit f6c4d9e58c8f05cb2d82e158c9eb8480308565bd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Aug 20 10:43:58 2010 -0400
+Date:  Fri Aug 20 10:43:58 2010 -0400
 
     we need to specify tp_hash since we overide tp_richcompare
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/pygenum.c  | 1 +
- gobject/pygflags.c | 1 +
+ gobject/pygenum.c  |   1 +
+ gobject/pygflags.c |   1 +
  2 files changed, 2 insertions(+)
 
 commit c03e6b482548aee99362356807c804f8834fad2b
 Author: John Ehresman <jpe@wingware.com>
-Date:   Thu Apr 15 17:11:30 2010 -0400
+Date:  Thu Apr 15 17:11:30 2010 -0400
 
     working enum/flags/pid subclasses of long
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygspawn.c    |  7 ++---
- gobject/pygenum.c  | 61 ++++++++++++++++++++++++-------------------
- gobject/pygflags.c | 76
- +++++++++++++++++++++++-------------------------------
+ glib/pygspawn.c    |   7 ++---
+ gobject/pygenum.c  |  61 +++++++++++++++++++++++------------------
+ gobject/pygflags.c |  76
+ ++++++++++++++++++++++------------------------------
  3 files changed, 71 insertions(+), 73 deletions(-)
 
 commit 0db676fd2296750a46ba0fb069e472da06ecc53a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Aug 18 11:03:32 2010 -0400
+Date:  Wed Aug 18 11:03:32 2010 -0400
 
     make vfuncs work in py3k
 
@@ -30175,36 +12116,36 @@ Date:   Wed Aug 18 11:03:32 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/types.py | 12 ++++++++----
+ gi/types.py |  12 ++++++++----
  1 file changed, 8 insertions(+), 4 deletions(-)
 
 commit 286dcd0c6455961d818ac7f05f80f82435abc1dc
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Aug 17 15:43:42 2010 -0400
+Date:  Tue Aug 17 15:43:42 2010 -0400
 
     make cairo module compile in py3k
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am          |  2 +-
- gi/pygi-foreign-cairo.c | 17 +++++++----------
+ gi/Makefile.am                 |    2 +-
+ gi/pygi-foreign-cairo.c |   17 +++++++----------
  2 files changed, 8 insertions(+), 11 deletions(-)
 
 commit bda58ec34fc443fe1108afc8532bec50f6fd0b44
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Aug 17 02:33:45 2010 -0400
+Date:  Tue Aug 17 02:33:45 2010 -0400
 
     fix exceptions so they work in python 3.x
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/module.py | 2 +-
- gi/types.py  | 2 +-
+ gi/module.py |    2 +-
+ gi/types.py  |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 427a3c8053feca35ccd746575760ac8a0ed50a12
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Aug 17 02:24:44 2010 -0400
+Date:  Tue Aug 17 02:24:44 2010 -0400
 
     make the gi module compile under 3.x
 
@@ -30214,13 +12155,13 @@ Date:   Tue Aug 17 02:24:44 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am |  2 +-
- gi/gimodule.c  | 24 +++++++++---------------
+ gi/Makefile.am |    2 +-
+ gi/gimodule.c |   24 +++++++++---------------
  2 files changed, 10 insertions(+), 16 deletions(-)
 
 commit 1dee5dcd2b1747b4a4af438c0443d7930e4802db
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Aug 17 02:14:14 2010 -0400
+Date:  Tue Aug 17 02:14:14 2010 -0400
 
     fix up testshelper module so it compiles in python 3.x
 
@@ -30231,29 +12172,29 @@ Date:   Tue Aug 17 02:14:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/Makefile.am        |   2 +-
- tests/testhelpermodule.c | 221
- ++++++-----------------------------------------
+ tests/Makefile.am          2 +-
+ tests/testhelpermodule.c |  221
+ ++++++----------------------------------------
  2 files changed, 28 insertions(+), 195 deletions(-)
 
 commit 1ff83a2ccb7301c8f675913f1c4f6118ea50b9c7
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Aug 16 21:14:27 2010 -0400
+Date:  Mon Aug 16 21:14:27 2010 -0400
 
     convert to using PYGLIB_DEFINE_TYPE for module objects
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-boxed.c      |  43 ++-----------
- gi/pygi-info.c       | 171
- ++++++++++++++++++++-------------------------------
- gi/pygi-repository.c |  39 +++---------
- gi/pygi-struct.c     |  45 +++-----------
+ gi/pygi-boxed.c      |   43 ++-----------
+ gi/pygi-info.c       |  171
+ ++++++++++++++++++++------------------------------
+ gi/pygi-repository.c |   39 +++---------
+ gi/pygi-struct.c     |   45 +++----------
  4 files changed, 88 insertions(+), 210 deletions(-)
 
 commit 1efa2b12913b194d433c17014bc1077271a6ca32
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Aug 16 13:51:05 2010 -0400
+Date:  Mon Aug 16 13:51:05 2010 -0400
 
     some more p3k PyString and PyInt eradication in GI
 
@@ -30265,31 +12206,31 @@ Date:   Mon Aug 16 13:51:05 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am              |  2 +-
- gi/pygi-argument.c          | 96
- +++++++++++++++++++++++++++------------------
- gi/pygi-boxed.c             |  1 +
- gi/pygi-info.c              | 13 +++---
- gi/pygi-private.h           | 23 +++++++++++
- gi/pygi-repository.c        |  8 ++--
- gi/pygi-struct.c            |  1 +
- glib/pyglib-python-compat.h |  6 +++
+ gi/Makefile.am                     |    2 +-
+ gi/pygi-argument.c         |   96
+ ++++++++++++++++++++++++++-----------------
+ gi/pygi-boxed.c            |    1 +
+ gi/pygi-info.c                     |   13 +++---
+ gi/pygi-private.h          |   23 +++++++++++
+ gi/pygi-repository.c       |    8 ++--
+ gi/pygi-struct.c           |    1 +
+ glib/pyglib-python-compat.h |   6 +++
  8 files changed, 103 insertions(+), 47 deletions(-)
 
 commit 6b902c66200c1684513a9ef31bdef3f2ff64e4fa
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Aug 20 09:28:57 2010 +0200
+Date:  Fri Aug 20 09:28:57 2010 +0200
 
     pyglib: Fix typo (Leo Singer)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627408
 
- glib/option.py | 4 ++--
+ glib/option.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 3cefffecc1317b6ad77a5ed936bfb990d16bf9d3
 Author: Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-Date:   Thu Aug 19 18:45:05 2010 -0300
+Date:  Thu Aug 19 18:45:05 2010 -0300
 
     Add defines for size_t and ssize_t conversion functions
 
@@ -30298,86 +12239,86 @@ Date:   Thu Aug 19 18:45:05 2010 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627440
 
- glib/pyglib-python-compat.h | 2 ++
+ glib/pyglib-python-compat.h |   2 ++
  1 file changed, 2 insertions(+)
 
 commit d45c7031876f355e15409f00f3e50e77d18f8f4b
 Author: Colin Walters <walters@verbum.org>
-Date:   Thu Aug 19 17:50:35 2010 -0400
+Date:  Thu Aug 19 17:50:35 2010 -0400
 
     pyglib: Fix a compiler warning
 
- glib/pyglib.c | 1 +
+ glib/pyglib.c |    1 +
  1 file changed, 1 insertion(+)
 
 commit 0fe6828ddce187ac1897a1f02ca1c5480796d5b9
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Aug 18 20:36:51 2010 +0200
+Date:  Wed Aug 18 20:36:51 2010 +0200
 
     Don't force gtk 2.0
 
- pygi-convert.sh | 11 +++++++----
+ pygi-convert.sh |   11 +++++++----
  1 file changed, 7 insertions(+), 4 deletions(-)
 
 commit ac59c18a4f2bfff47c862b763aaf1d1cf136a4f5
 Author: Steve Frécinaux <code@istique.net>
-Date:   Tue Aug 17 14:49:30 2010 +0200
+Date:  Tue Aug 17 14:49:30 2010 +0200
 
     Fix some ref leaks in hook_up_vfunc_implementation()
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627143
 
- gi/gimodule.c | 9 +++++++--
+ gi/gimodule.c |    9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 18ee0db673c2fa42244ab85950bbf4840edb674b
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Aug 12 12:16:31 2010 -0400
+Date:  Thu Aug 12 12:16:31 2010 -0400
 
     handle strings correctly in gio
 
- gio/gappinfo.override |  5 +++++
- gio/pygio-utils.c     | 42 +++++++++++++++++++++++++++++++++++-------
+ gio/gappinfo.override |    5 +++++
+ gio/pygio-utils.c     |   42 +++++++++++++++++++++++++++++++++++-------
  2 files changed, 40 insertions(+), 7 deletions(-)
 
 commit 45ab0c03110c911b47519941dfd753326891b5e0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Aug 11 16:13:59 2010 -0400
+Date:  Wed Aug 11 16:13:59 2010 -0400
 
     make giomodule compile under py3k
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gio/giomodule.c | 153
- +++++++++++++++++++++++++++++---------------------------
+ gio/giomodule.c |  153
+ ++++++++++++++++++++++++++++---------------------------
  1 file changed, 78 insertions(+), 75 deletions(-)
 
 commit c52f8ed3ae8cb66a03b5695e980770c3f467f755
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Aug 11 16:04:48 2010 -0400
+Date:  Wed Aug 11 16:04:48 2010 -0400
 
     for py3k we need to do some more processing to get bytes from a
     unicode string
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c | 31 +++++++++++++++++++++++++++----
+ gi/pygi-argument.c |  31 +++++++++++++++++++++++++++----
  1 file changed, 27 insertions(+), 4 deletions(-)
 
 commit de9eae4dfcce856a42cc5c569a5b9683c28d0eeb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Aug 11 15:03:55 2010 -0400
+Date:  Wed Aug 11 15:03:55 2010 -0400
 
     use Bytes instead of Unicode when reading io
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c | 30 ++++++++++++++++++++++++------
+ glib/pygiochannel.c |  30 ++++++++++++++++++++++++------
  1 file changed, 24 insertions(+), 6 deletions(-)
 
 commit 5824ff98175b749dbcfa72d24b994230b6e05377
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Aug 9 15:16:51 2010 -0400
+Date:  Mon Aug 9 15:16:51 2010 -0400
 
     prefix compat macros with PYGLIB
 
@@ -30390,52 +12331,52 @@ Date:   Mon Aug 9 15:16:51 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/glibmodule.c           |  48 +++++-----
- glib/pygiochannel.c         |  46 +++++-----
- glib/pyglib-python-compat.h | 153 +++++++++++++++++++++++--------
- glib/pyglib.c               |  22 ++---
- glib/pyglib.h               |  14 ---
- glib/pygoptioncontext.c     |   4 +-
- glib/pygsource.c            |  16 ++--
- glib/pygspawn.c             |  32 +++----
- gobject/gobjectmodule.c     | 216
- ++++++++++++++++++++++----------------------
- gobject/pygboxed.c          |   2 +-
- gobject/pygenum.c           |  84 ++++++++---------
- gobject/pygflags.c          | 122 ++++++++++++-------------
- gobject/pygobject-private.h |  12 +--
- gobject/pygobject.c         |  46 +++++-----
- gobject/pygobject.h         |  23 +++++
- gobject/pygparamspec.c      |  24 ++---
- gobject/pygpointer.c        |   2 +-
- gobject/pygtype.c           | 170 +++++++++++++++++-----------------
+ glib/glibmodule.c            48 +++++-----
+ glib/pygiochannel.c        |   46 ++++-----
+ glib/pyglib-python-compat.h | 153 ++++++++++++++++++++++--------
+ glib/pyglib.c                22 ++---
+ glib/pyglib.h                14 ---
+ glib/pygoptioncontext.c     |   4 +-
+ glib/pygsource.c             16 ++--
+ glib/pygspawn.c              32 +++----
+ gobject/gobjectmodule.c     | 216
+ +++++++++++++++++++++----------------------
+ gobject/pygboxed.c            2 +-
+ gobject/pygenum.c            84 ++++++++---------
+ gobject/pygflags.c         |  122 ++++++++++++------------
+ gobject/pygobject-private.h |  12 +--
+ gobject/pygobject.c        |   46 ++++-----
+ gobject/pygobject.h          23 +++++
+ gobject/pygparamspec.c      |  24 ++---
+ gobject/pygpointer.c          2 +-
+ gobject/pygtype.c           170 +++++++++++++++++-----------------
  18 files changed, 563 insertions(+), 473 deletions(-)
 
 commit 231e934cc01d061e81bb60d35127a133cd0e1793
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Aug 16 10:14:04 2010 +0200
+Date:  Mon Aug 16 10:14:04 2010 +0200
 
     Gtk.Button unit tests
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
- tests/test_overrides.py | 10 ++++++++++
+ tests/test_overrides.py |   10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit f07cfde377e42686c6b80f56cac62338ee333e61
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon Aug 16 10:08:38 2010 +0200
+Date:  Mon Aug 16 10:08:38 2010 +0200
 
     [Gtk] Add overrides for Button
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
- gi/overrides/Gtk.py | 13 +++++++++++++
+ gi/overrides/Gtk.py |  13 +++++++++++++
  1 file changed, 13 insertions(+)
 
 commit 65a06a7216163c7e65b32c5b5f3388faa7fda5d6
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Aug 12 16:18:58 2010 +0200
+Date:  Thu Aug 12 16:18:58 2010 +0200
 
     Make Cairo an optional dependency
 
@@ -30443,47 +12384,47 @@ Date:   Thu Aug 12 16:18:58 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616732
 
- configure.ac   | 15 ++++++++++++---
- gi/Makefile.am | 20 ++++++++++++--------
+ configure.ac  |   15 ++++++++++++---
+ gi/Makefile.am |   20 ++++++++++++--------
  2 files changed, 24 insertions(+), 11 deletions(-)
 
 commit b83507263231d9bf47f6c8450583e3d03f0a3b5b
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Aug 16 09:55:35 2010 +0200
+Date:  Mon Aug 16 09:55:35 2010 +0200
 
     Don't import again PyGObject (John Ralls)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626996
 
- gi/pygi.h | 1 +
+ gi/pygi.h |   1 +
  1 file changed, 1 insertion(+)
 
 commit 0dc3656070f496431829c6e8441ca17129c569f8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Aug 9 16:11:55 2010 -0400
+Date:  Mon Aug 9 16:11:55 2010 -0400
 
     move to using richcompare slot instead of compare
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c     | 18 +++++++----
- glib/pyglib.c           | 85
- +++++++++++++++++++++++++++++++++++++++++++++++++
- glib/pyglib.h           |  3 ++
- glib/pygmaincontext.c   | 17 ++++++----
- glib/pygmainloop.c      | 17 ++++++----
- glib/pygoptioncontext.c | 18 +++++++----
- glib/pygoptiongroup.c   | 22 +++++++------
- gobject/pygboxed.c      | 18 +++++++----
- gobject/pygobject.c     | 44 ++++++++++++++++++-------
- gobject/pygparamspec.c  | 19 +++++++----
- gobject/pygpointer.c    | 17 ++++++----
- gobject/pygtype.c       | 26 +++++++++++----
+ glib/pygiochannel.c    |   18 ++++++----
+ glib/pyglib.c          |   85
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ glib/pyglib.h          |    3 ++
+ glib/pygmaincontext.c  |   17 ++++++----
+ glib/pygmainloop.c     |   17 ++++++----
+ glib/pygoptioncontext.c |   18 ++++++----
+ glib/pygoptiongroup.c  |   22 ++++++------
+ gobject/pygboxed.c     |   18 ++++++----
+ gobject/pygobject.c    |   44 +++++++++++++++++-------
+ gobject/pygparamspec.c  |   19 +++++++----
+ gobject/pygpointer.c   |   17 ++++++----
+ gobject/pygtype.c      |   26 +++++++++++----
  12 files changed, 233 insertions(+), 71 deletions(-)
 
 commit b426e531dc53d4b50e572a2da19733479635e662
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Aug 12 18:09:33 2010 +0200
+Date:  Thu Aug 12 18:09:33 2010 +0200
 
     Replace autogen.sh by a newer version
 
@@ -30492,13 +12433,13 @@ Date:   Thu Aug 12 18:09:33 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625661
 
- autogen.sh | 506
- +++++++------------------------------------------------------
+ autogen.sh |  506
+ +++++++-----------------------------------------------------
  1 file changed, 58 insertions(+), 448 deletions(-)
 
 commit 769645e00d6d055a4cd802454dbfc1bbfcbee691
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Aug 12 14:11:55 2010 +0200
+Date:  Thu Aug 12 14:11:55 2010 +0200
 
     Fix some warnings
 
@@ -30515,13 +12456,13 @@ Date:   Thu Aug 12 14:11:55 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625437
 
- gio/gio.override | 2 +-
- glib/pyglib.c    | 4 ++--
+ gio/gio.override |    2 +-
+ glib/pyglib.c   |    4 ++--
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 commit e4c4cccb588b258dbcd21702e6cddcfe9ebe4ffc
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Aug 12 11:09:37 2010 +0200
+Date:  Thu Aug 12 11:09:37 2010 +0200
 
     Fix caller-allocates emergency free.
 
@@ -30534,12 +12475,12 @@ Date:   Thu Aug 12 11:09:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
- gi/pygi-invoke.c | 9 ++++++++-
+ gi/pygi-invoke.c |    9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)
 
 commit 0ab967ca40ddcffc2834d4e656bb2010c6b9bdda
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Thu Aug 12 10:46:17 2010 +0200
+Date:  Thu Aug 12 10:46:17 2010 +0200
 
     Remove useless checks.
 
@@ -30548,41 +12489,41 @@ Date:   Thu Aug 12 10:46:17 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
- gi/pygi-invoke.c | 14 +++-----------
+ gi/pygi-invoke.c |   14 +++-----------
  1 file changed, 3 insertions(+), 11 deletions(-)
 
 commit e17be9cd288fee5d7cb174d9d577eb9279044c67
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Aug 10 17:40:16 2010 +0200
+Date:  Tue Aug 10 17:40:16 2010 +0200
 
     Call valgrind with G_SLICE=always-malloc G_DEBUG=gc-friendly
 
- tests/Makefile.am | 2 +-
+ tests/Makefile.am |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8be59c37dd57acc51875c7189ca09d728b729013
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Aug 4 13:43:17 2010 +0200
+Date:  Wed Aug 4 13:43:17 2010 +0200
 
     Fix some warnings.
 
- gi/pygi-argument.c | 2 --
- gi/pygi-invoke.c   | 2 +-
- gi/pygi-struct.c   | 1 -
+ gi/pygi-argument.c |   2 --
+ gi/pygi-invoke.c   |   2 +-
+ gi/pygi-struct.c   |   1 -
  3 files changed, 1 insertion(+), 4 deletions(-)
 
 commit 529eca6054e9a7e2267f1529e317c2373932762f
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Fri Jul 30 22:39:40 2010 +0200
+Date:  Fri Jul 30 22:39:40 2010 +0200
 
     Add myself as a maintainer
 
- MAINTAINERS | 4 ++++
+ MAINTAINERS |   4 ++++
  1 file changed, 4 insertions(+)
 
 commit caac75a6ed6f671b37e38a78e71b87906a00ac1b
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jul 30 14:14:16 2010 +0200
+Date:  Fri Jul 30 14:14:16 2010 +0200
 
     Properly allocate boxed structs that are (caller-allocates)
 
@@ -30593,41 +12534,41 @@ Date:   Fri Jul 30 14:14:16 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625653
 
- gi/pygi-boxed.c         | 50
- ++++++++++++++++++++++++++++++++-----------------
- gi/pygi-boxed.h         | 10 ++++++----
- gi/pygi-invoke.c        | 16 ++++++----------
- tests/test_overrides.py | 39 +++++++++++++++++++-------------------
+ gi/pygi-boxed.c        |   50
+ +++++++++++++++++++++++++++++++----------------
+ gi/pygi-boxed.h        |   10 ++++++----
+ gi/pygi-invoke.c       |   16 ++++++---------
+ tests/test_overrides.py |   39 ++++++++++++++++++------------------
  4 files changed, 64 insertions(+), 51 deletions(-)
 
 commit 99c7322898c00a576c7319ea0a7c808446253133
 Author: Toms Baugis <toms.baugis@gmail.com>
-Date:   Fri Jul 30 15:44:21 2010 +0200
+Date:  Fri Jul 30 15:44:21 2010 +0200
 
     override gdk.Event to return attribute from the proper event object
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620593
 
- gi/overrides/Gdk.py     | 48
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c        |  4 ----
- tests/test_overrides.py | 10 ++++++++++
+ gi/overrides/Gdk.py    |   48
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c       |    4 ----
+ tests/test_overrides.py |   10 ++++++++++
  3 files changed, 58 insertions(+), 4 deletions(-)
 
 commit 55814e722c2ae11310f346790c9221e4fad92b50
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jul 30 06:30:48 2010 -0400
+Date:  Fri Jul 30 06:30:48 2010 -0400
 
     check if z# needs an int or Py_ssize_t
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
- gio/gio.override | 5 +++++
+ gio/gio.override |    5 +++++
  1 file changed, 5 insertions(+)
 
 commit 477315465d0a6d84b51e146e86e254873bc564ff
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jul 30 06:43:06 2010 -0400
+Date:  Fri Jul 30 06:43:06 2010 -0400
 
     make sure we parse parameters to python object vars not glib vars
 
@@ -30637,12 +12578,12 @@ Date:   Fri Jul 30 06:43:06 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
- gio/gfile.override | 8 ++++----
+ gio/gfile.override |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit faa7d4eece7ddb698725098970c2478a3b45c4d5
 Author: Paul Bolle <pebolle@tiscali.nl>
-Date:   Fri Jul 30 10:56:01 2010 +0200
+Date:  Fri Jul 30 10:56:01 2010 +0200
 
     Make an example and a demo work out of the box
 
@@ -30653,13 +12594,13 @@ Date:   Fri Jul 30 10:56:01 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625638
 
- demos/gtk-demo/gtk-demo.py | 2 ++
- examples/cairo-demo.py     | 2 ++
+ demos/gtk-demo/gtk-demo.py |   2 ++
+ examples/cairo-demo.py     |   2 ++
  2 files changed, 4 insertions(+)
 
 commit c9da5782e6c633d9af43ee85075e9ee65db09780
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jul 9 13:14:42 2010 -0400
+Date:  Fri Jul 9 13:14:42 2010 -0400
 
     make sure caller allocated structs are freed when they go out of scope
 
@@ -30676,13 +12617,13 @@ Date:   Fri Jul 9 13:14:42 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623969
 
- gi/pygi-argument.c | 13 +++++--------
- gi/pygi-invoke.c   | 46 ++++++++++++++++++++++++++++++++++++++++------
+ gi/pygi-argument.c |  13 +++++--------
+ gi/pygi-invoke.c   |  46 ++++++++++++++++++++++++++++++++++++++++------
  2 files changed, 45 insertions(+), 14 deletions(-)
 
 commit e0a85305cd107aae5902e524afd074cd8c329927
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jul 30 10:35:33 2010 +0200
+Date:  Fri Jul 30 10:35:33 2010 +0200
 
     Revert "override gdk.Event to return attribute from the proper
     event object."
@@ -30691,12 +12632,12 @@ Date:   Fri Jul 30 10:35:33 2010 +0200
 
     This reverts commit e7bb3954880568884ca66e7751ede689dc2f24f6.
 
- gi/overrides/Gdk.py | 44 --------------------------------------------
+ gi/overrides/Gdk.py |  44 --------------------------------------------
  1 file changed, 44 deletions(-)
 
 commit 61ffb8d6d08fcfe638f71ea97ceac3a366e5536d
 Author: Paul Bolle <pebolle@tiscali.nl>
-Date:   Thu Jul 29 22:55:28 2010 +0200
+Date:  Thu Jul 29 22:55:28 2010 +0200
 
     PyGI: properly quit cairo-demo
 
@@ -30704,23 +12645,23 @@ Date:   Thu Jul 29 22:55:28 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625619
 
- examples/cairo-demo.py | 2 +-
+ examples/cairo-demo.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e7bb3954880568884ca66e7751ede689dc2f24f6
 Author: Toms Baugis <toms.baugis@gmail.com>
-Date:   Tue Jul 27 21:37:16 2010 +0200
+Date:  Tue Jul 27 21:37:16 2010 +0200
 
     override gdk.Event to return attribute from the proper event object.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620593
 
- gi/overrides/Gdk.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gdk.py |  44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit 0a9f1da052fd33dcef81d0e267fc7972f02c7888
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Wed Jul 28 14:56:00 2010 +0200
+Date:  Wed Jul 28 14:56:00 2010 +0200
 
     Clean and improve the test infrastructure
 
@@ -30731,78 +12672,78 @@ Date:   Wed Jul 28 14:56:00 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625488
 
- Makefile.am                |  5 ----
- tests/Makefile.am          | 65
- +++++++++++++++++++++-------------------------
- tests/common.py            | 47 ---------------------------------
- tests/runtests.py          | 43 ++++++++++++------------------
- tests/test_gcancellable.py |  4 +--
- tests/test_gi.py           |  3 ---
- tests/test_gicon.py        |  3 ++-
- tests/test_gio.py          |  3 ++-
- tests/test_gobject.py      |  3 ++-
- tests/test_gresolver.py    |  4 +--
- tests/test_gsocket.py      |  4 ++-
- tests/test_interface.py    |  6 ++++-
- tests/test_mainloop.py     | 11 +++-----
- tests/test_signal.py       |  4 ++-
- tests/test_source.py       |  4 +--
- tests/test_subprocess.py   |  5 +---
- tests/test_thread.py       |  5 +++-
- tests/test_unknown.py      |  5 +++-
+ Makefile.am               |    5 ----
+ tests/Makefile.am         |   65
+ ++++++++++++++++++++------------------------
+ tests/common.py           |   47 --------------------------------
+ tests/runtests.py         |   43 +++++++++++------------------
+ tests/test_gcancellable.py |   4 +--
+ tests/test_gi.py          |    3 --
+ tests/test_gicon.py       |    3 +-
+ tests/test_gio.py         |    3 +-
+ tests/test_gobject.py     |    3 +-
+ tests/test_gresolver.py    |   4 +--
+ tests/test_gsocket.py     |    4 ++-
+ tests/test_interface.py    |   6 +++-
+ tests/test_mainloop.py     |  11 +++-----
+ tests/test_signal.py      |    4 ++-
+ tests/test_source.py      |    4 +--
+ tests/test_subprocess.py   |   5 +---
+ tests/test_thread.py      |    5 +++-
+ tests/test_unknown.py     |    5 +++-
  18 files changed, 82 insertions(+), 142 deletions(-)
 
 commit 82f4cb5ebf5d992493b7a2f74cfd5f175e19eb76
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jul 29 12:34:19 2010 +0200
+Date:  Thu Jul 29 12:34:19 2010 +0200
 
     Add some more transformations to pygi-convert.sh
 
- pygi-convert.sh | 37 +++++++++++++++++++++++++++++--------
+ pygi-convert.sh |   37 +++++++++++++++++++++++++++++--------
  1 file changed, 29 insertions(+), 8 deletions(-)
 
 commit de519adcd21947a0aef7932cdecb78cef200c85e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jul 28 14:42:36 2010 +0200
+Date:  Wed Jul 28 14:42:36 2010 +0200
 
     Adapt to API changes: g_irepository_enumerate_versions
 
- gi/importer.py       |  2 +-
- gi/pygi-repository.c | 12 ++++++------
+ gi/importer.py       |    2 +-
+ gi/pygi-repository.c |   12 ++++++------
  2 files changed, 7 insertions(+), 7 deletions(-)
 
 commit 01cd9abb43f93f9a57a5a05b6dc9560614e666e3
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jul 28 12:26:48 2010 +0200
+Date:  Wed Jul 28 12:26:48 2010 +0200
 
     Add GValue<->GArgument marshalling for some more types
 
- gi/pygi-property.c | 37 ++++++++++++++++++++++++++++++++++++-
+ gi/pygi-property.c |  37 ++++++++++++++++++++++++++++++++++++-
  1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit ddffa70c3ee0e837070f390632bc692430f79171
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jul 28 11:10:42 2010 +0200
+Date:  Wed Jul 28 11:10:42 2010 +0200
 
     Chain up with the non-introspection implementation for properties
     if needed
 
- gobject/pygobject.c | 7 ++++++-
+ gobject/pygobject.c |   7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 045433a1f8167205dc8eae613dcb8835d02c8916
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jul 28 10:59:49 2010 +0200
+Date:  Wed Jul 28 10:59:49 2010 +0200
 
     Improve error reporting for missing attributes in introspection
     modules
 
- gi/module.py | 4 ++--
+ gi/module.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6655a79b2f13fe417aefdf6aebab0f2d6162ba00
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jul 27 21:52:49 2010 +0200
+Date:  Tue Jul 27 21:52:49 2010 +0200
 
     Implement getting and setting properties using introspection
     information.
@@ -30812,30 +12753,30 @@ Date:   Tue Jul 27 21:52:49 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620808
 
- gi/Makefile.am           |   2 +
- gi/gimodule.c            |   2 +
- gi/pygi-argument.c       |   2 +
- gi/pygi-private.h        |   1 +
- gi/pygi-property.c       | 226
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-property.h       |  39 ++++++++
- gi/pygi.h                |  41 +++++++++
- gobject/pygobject.c      |   9 ++
- tests/test_everything.py |  19 ++++
+ gi/Makefile.am                  |    2 +
+ gi/gimodule.c              2 +
+ gi/pygi-argument.c         2 +
+ gi/pygi-private.h          1 +
+ gi/pygi-property.c       226
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.h        39 ++++++++
+ gi/pygi.h                 41 +++++++++
+ gobject/pygobject.c        9 ++
+ tests/test_everything.py |   19 ++++
  9 files changed, 341 insertions(+)
 
 commit 85f4572b3ffbfa364ebb2e470eab759edc557b36
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jul 27 21:32:41 2010 +0200
+Date:  Tue Jul 27 21:32:41 2010 +0200
 
     Readd Gdk.Rectangle override for Gtk-2.0
 
- gi/overrides/Gdk.py | 19 +++++++++++++++++++
+ gi/overrides/Gdk.py |  19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 2082ee35e2a33f52bf1e8ec49cb4a43398e91989
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jul 27 18:25:27 2010 +0200
+Date:  Tue Jul 27 18:25:27 2010 +0200
 
     Allow specifying a version when loading a typelib
 
@@ -30845,31 +12786,31 @@ Date:   Tue Jul 27 18:25:27 2010 +0200
     * gi/pygi-repository.c: Add wrappers for g_irepository_enumerate and
       g_irepository_get_version.
 
- gi/importer.py                     | 26 ++++++-----------
- gi/module.py                       | 58
- +++++++++++++++++++++++++-------------
- gi/overrides/GIMarshallingTests.py |  2 +-
- gi/overrides/Gdk.py                |  2 +-
- gi/overrides/Gtk.py                |  2 +-
- gi/pygi-repository.c               | 56
- +++++++++++++++++++++++++++++++++++-
+ gi/importer.py                            |   26 ++++++----------
+ gi/module.py                      |   58
+ +++++++++++++++++++++++-------------
+ gi/overrides/GIMarshallingTests.py |   2 +-
+ gi/overrides/Gdk.py               |    2 +-
+ gi/overrides/Gtk.py               |    2 +-
+ gi/pygi-repository.c              |   56
+ +++++++++++++++++++++++++++++++++-
  6 files changed, 105 insertions(+), 41 deletions(-)
 
 commit 6d7ed6c322234c240b1063a1dfaadd17157432a9
 Author: Jonathan Matthew <jonathan@d14n.org>
-Date:   Tue Jul 13 20:27:28 2010 +1000
+Date:  Tue Jul 13 20:27:28 2010 +1000
 
     treat GFreeFunc as equivalent to GDestroyNotify when scanning
     callbacks
 
     https://bugzilla.gnome.org/show_bug.cgi?id=624232
 
- gi/pygi-callbacks.c | 3 ++-
+ gi/pygi-callbacks.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 7e9cbd5601ad548b78d106bac1a1576d33b91c65
 Author: Simon van der Linden <svdlinden@gnome.org>
-Date:   Mon Jul 26 17:00:23 2010 +0200
+Date:  Mon Jul 26 17:00:23 2010 +0200
 
     Don't use == to compare doubles, use <= and =>.
 
@@ -30877,35 +12818,35 @@ Date:   Mon Jul 26 17:00:23 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625326
 
- tests/testhelpermodule.c | 2 +-
+ tests/testhelpermodule.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 5ca2a41f16f4a5fcc3ab4d00bec46b077c7eb384
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jul 8 11:36:12 2010 +0200
+Date:  Thu Jul 8 11:36:12 2010 +0200
 
     Allow passing ints as enum args
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622584
 
- gi/pygi-argument.c | 23 +++++++++++++++++++++--
- tests/test_gi.py   |  6 ++++--
+ gi/pygi-argument.c |  23 +++++++++++++++++++++--
+ tests/test_gi.py   |   6 ++++--
  2 files changed, 25 insertions(+), 4 deletions(-)
 
 commit 890c3233f8a9f884b045a294bf0122bb3afcd54a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Sun Jul 25 17:30:40 2010 +0100
+Date:  Sun Jul 25 17:30:40 2010 +0100
 
     Make error message less ambiguous
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625095
 
- gi/pygi-callbacks.c | 3 ++-
+ gi/pygi-callbacks.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 1162e436273ff8e9e4e24bd8ba74615fd4624753
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jun 24 10:07:12 2010 -0400
+Date:  Thu Jun 24 10:07:12 2010 -0400
 
     fix passing in type names as a GType and add gtype unit tests
 
@@ -30916,34 +12857,34 @@ Date:   Thu Jun 24 10:07:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622605
 
- gi/pygi-argument.c       |  8 +-------
- tests/test_everything.py | 27 +++++++++++++++++++++++++++
- tests/test_overrides.py  |  6 ++----
+ gi/pygi-argument.c      |    8 +-------
+ tests/test_everything.py |   27 +++++++++++++++++++++++++++
+ tests/test_overrides.py  |    6 ++----
  3 files changed, 30 insertions(+), 11 deletions(-)
 
 commit 8becd32fc042445d62b885bac12dac326b2dc1fa
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 26 11:54:47 2010 +0200
+Date:  Mon Jul 26 11:54:47 2010 +0200
 
     Increase a bit verbosity of tests so people know which test failed
 
- tests/runtests.py | 2 +-
+ tests/runtests.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3b3c63514f311592e6769a373d37a2bde7ea6b38
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jul 15 15:17:53 2010 +0200
+Date:  Thu Jul 15 15:17:53 2010 +0200
 
     Actually add the files for GVariant foreign structs
 
- gi/pygi-foreign-gvariant.c | 63
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign-gvariant.h | 41 ++++++++++++++++++++++++++++++
+ gi/pygi-foreign-gvariant.c |  63
+ ++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-foreign-gvariant.h |  41 ++++++++++++++++++++++++++++
  2 files changed, 104 insertions(+)
 
 commit e65275bc57f345c111eb12a6b4476ff1ddc3bc24
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jul 15 13:31:33 2010 +0200
+Date:  Thu Jul 15 13:31:33 2010 +0200
 
     Add foreign struct support for GVariant
 
@@ -30956,66 +12897,66 @@ Date:   Thu Jul 15 13:31:33 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619501
 
- gi/Makefile.am           |   2 +
- gi/pygi-argument.c       |   2 +-
- gi/pygi-foreign-cairo.c  |  16 +++----
- gi/pygi-foreign.c        | 107
- +++++++++++++++++++++++++++++------------------
- gi/pygi-foreign.h        |   7 ++--
- gi/pygi-invoke.c         |  18 ++++----
- gi/pygi-struct.c         |  10 ++++-
- gi/pygi.h                |   9 ++--
- tests/test_everything.py |   8 ++++
+ gi/Makefile.am                  |    2 +
+ gi/pygi-argument.c         2 +-
+ gi/pygi-foreign-cairo.c  |   16 +++----
+ gi/pygi-foreign.c        107
+ ++++++++++++++++++++++++++++------------------
+ gi/pygi-foreign.h       |    7 ++-
+ gi/pygi-invoke.c          18 ++++----
+ gi/pygi-struct.c          10 ++++-
+ gi/pygi.h                  9 ++--
+ tests/test_everything.py |    8 ++++
  9 files changed, 110 insertions(+), 69 deletions(-)
 
 commit 3b3bd4da3fbc993fa7f7cfb46ed4e67671c94cc0
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 12 11:19:06 2010 +0200
+Date:  Mon Jul 12 11:19:06 2010 +0200
 
     Add HACKING to MANIFEST.in
 
- MANIFEST.in | 2 +-
+ MANIFEST.in |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 40bf08ff001b119c7daf709197005ef6480216c5
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 12 11:18:04 2010 +0200
+Date:  Mon Jul 12 11:18:04 2010 +0200
 
     Add HACKING file with instructions for releasing
 
- HACKING | 14 ++++++++++++++
+ HACKING |   14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 3b9dffe7cc3820dfb84fd968fc604899601c5dc4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 12 11:09:58 2010 +0200
+Date:  Mon Jul 12 11:09:58 2010 +0200
 
     Post release version bump to 2.21.6
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 42a5a0897b38156ae010c396ea254abf502f35de
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 12 11:00:29 2010 +0200
+Date:  Mon Jul 12 11:00:29 2010 +0200
 
     Update NEWS and release PyGObject-2.21.5
 
- NEWS | 17 +++++++++++++++++
+ NEWS |   17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit 5857f25c1c6e25b79e6134558bd7151bc6c30ef7
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jul 12 11:00:20 2010 +0200
+Date:  Mon Jul 12 11:00:20 2010 +0200
 
     Pre-release version bump to 2.21.5
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e500adc3ac19ef6f436809e5a8828ac7e8db28f6
 Author: Florian Müllner <florian.muellner@gmail.com>
-Date:   Sat Jul 10 22:35:13 2010 +0200
+Date:  Sat Jul 10 22:35:13 2010 +0200
 
     Shut up some compiler warnings
 
@@ -31023,14 +12964,14 @@ Date:   Sat Jul 10 22:35:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=624066
 
- gi/pygi-callbacks.c | 1 -
- gi/pygi-closure.c   | 2 +-
- gi/pygi-invoke.c    | 1 -
+ gi/pygi-callbacks.c |   1 -
+ gi/pygi-closure.c   |   2 +-
+ gi/pygi-invoke.c    |   1 -
  3 files changed, 1 insertion(+), 3 deletions(-)
 
 commit 2efa18afbcc2fac1c90958535b2f80e6e730ee56
 Author: =?UTF-8?q?Florian=20M=C3=BCllner?= <florian.muellner@gmail.com>
-Date:   Mon Jul 12 10:31:42 2010 +0200
+Date:  Mon Jul 12 10:31:42 2010 +0200
 
     Adjust to API break in GObject-Introspection
 
@@ -31046,39 +12987,39 @@ Date:   Mon Jul 12 10:31:42 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=624065
 
- configure.ac       |   2 +-
- gi/importer.py     |   7 +--
- gi/pygi-argument.c | 146
- -----------------------------------------------------
- gi/pygi-closure.c  |  10 ----
- gi/pygi-info.c     |  37 --------------
- tests/test_gi.py   |  21 --------
+ configure.ac         2 +-
+ gi/importer.py     |   7 +--
+ gi/pygi-argument.c |  146
+ ----------------------------------------------------
+ gi/pygi-closure.c  |  10 ----
+ gi/pygi-info.c     |  37 -------------
+ tests/test_gi.py   |  21 --------
  6 files changed, 5 insertions(+), 218 deletions(-)
 
 commit 27a417c71f8c122e46c7472663bb25c17413f103
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jul 8 16:01:25 2010 -0400
+Date:  Thu Jul 8 16:01:25 2010 -0400
 
     pass in the demo app so demos can use utility methods like requesting
     file paths
 
- demos/gtk-demo/demos/Entry/entry_buffer.py     |  2 +-
- demos/gtk-demo/demos/Entry/entry_completion.py |  2 +-
- demos/gtk-demo/demos/appwindow.py              | 13 +++++++++++--
- demos/gtk-demo/demos/assistant.py              |  2 +-
- demos/gtk-demo/demos/builder.py                | 14 ++++++++++----
- demos/gtk-demo/demos/button_box.py             |  2 +-
- demos/gtk-demo/demos/clipboard.py              |  8 +-------
- demos/gtk-demo/demos/colorselector.py          |  2 +-
- demos/gtk-demo/demos/combobox.py               |  8 +++++---
- demos/gtk-demo/demos/drawingarea.py            |  2 +-
- demos/gtk-demo/demos/test.py                   |  2 +-
- demos/gtk-demo/gtk-demo.py                     |  6 +++---
+ demos/gtk-demo/demos/Entry/entry_buffer.py    |    2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py |    2 +-
+ demos/gtk-demo/demos/appwindow.py             |   13 +++++++++++--
+ demos/gtk-demo/demos/assistant.py             |    2 +-
+ demos/gtk-demo/demos/builder.py               |   14 ++++++++++----
+ demos/gtk-demo/demos/button_box.py            |    2 +-
+ demos/gtk-demo/demos/clipboard.py             |    8 +-------
+ demos/gtk-demo/demos/colorselector.py         |    2 +-
+ demos/gtk-demo/demos/combobox.py              |    8 +++++---
+ demos/gtk-demo/demos/drawingarea.py           |    2 +-
+ demos/gtk-demo/demos/test.py                  |    2 +-
+ demos/gtk-demo/gtk-demo.py                    |    6 +++---
  12 files changed, 37 insertions(+), 26 deletions(-)
 
 commit e7daae919c2c6ae35d3927f0006252aacd49ea86
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jul 8 15:38:07 2010 -0400
+Date:  Thu Jul 8 15:38:07 2010 -0400
 
     demo fixes to keep up with Gtk+
 
@@ -31086,32 +13027,32 @@ Date:   Thu Jul 8 15:38:07 2010 -0400
     * fix some flag handling
     * use get_indicies_with_depth instead of get_indices for paths
 
- demos/gtk-demo/demos/appwindow.py | 10 +++++++---
- demos/gtk-demo/demos/combobox.py  | 24 ++++++++++++------------
- demos/gtk-demo/gtk-demo.py        | 13 +++++--------
+ demos/gtk-demo/demos/appwindow.py |   10 +++++++---
+ demos/gtk-demo/demos/combobox.py  |   24 ++++++++++++------------
+ demos/gtk-demo/gtk-demo.py       |   13 +++++--------
  3 files changed, 24 insertions(+), 23 deletions(-)
 
 commit 3d9fd6391710cc33058394d6821e4d4e11f09b22
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jul 8 12:54:43 2010 -0400
+Date:  Thu Jul 8 12:54:43 2010 -0400
 
     override test fixes for new GTK+ annotations
 
- tests/test_overrides.py | 23 +++++++++++++----------
+ tests/test_overrides.py |   23 +++++++++++++----------
  1 file changed, 13 insertions(+), 10 deletions(-)
 
 commit 7a400f8139b70ddfe7c949035e0851689951c647
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Thu Jul 8 12:42:25 2010 +0200
+Date:  Thu Jul 8 12:42:25 2010 +0200
 
     Fix warning.
 
- gi/pygi-argument.c | 4 ++--
+ gi/pygi-argument.c |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 39fd0a85a3de06b1b877d1125f91036409886373
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jul 7 15:48:36 2010 -0400
+Date:  Wed Jul 7 15:48:36 2010 -0400
 
     fix up treeiter usage due to caller-allocates annotations in gtk+
 
@@ -31120,73 +13061,72 @@ Date:   Wed Jul 7 15:48:36 2010 -0400
       handle the case where the parameter is followed by a regular
       in parameter
 
- gi/overrides/Gtk.py     |  7 +++----
- tests/test_overrides.py | 21 +++++++++++----------
+ gi/overrides/Gtk.py    |    7 +++----
+ tests/test_overrides.py |   21 +++++++++++----------
  2 files changed, 14 insertions(+), 14 deletions(-)
 
 commit 4d970b75dc5c75c1bec04cb2954c9985b476070c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 6 17:50:10 2010 -0400
+Date:  Tue Jul 6 17:50:10 2010 -0400
 
     add entry completion demo
 
- demos/gtk-demo/demos/Entry/entry_completion.py | 87
- ++++++++++++++++++++++++++
+ demos/gtk-demo/demos/Entry/entry_completion.py |   87
+ ++++++++++++++++++++++++
  1 file changed, 87 insertions(+)
 
 commit f3531eaa1bfa4e01651d35cd587384d30a398ba8
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 6 17:49:18 2010 -0400
+Date:  Tue Jul 6 17:49:18 2010 -0400
 
     string changes
 
- demos/gtk-demo/demos/Entry/entry_buffer.py | 4 ++--
+ demos/gtk-demo/demos/Entry/entry_buffer.py |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit baf1e9bb550c7bf45e2ac0b70ba29c434ef1ccc6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 6 17:27:04 2010 -0400
+Date:  Tue Jul 6 17:27:04 2010 -0400
 
     add the Entry demo directory and the entry_buffer demo
 
- demos/gtk-demo/demos/Entry/__init__.py     |  0
- demos/gtk-demo/demos/Entry/entry_buffer.py | 73
- ++++++++++++++++++++++++++++++
- 2 files changed, 73 insertions(+)
+ demos/gtk-demo/demos/Entry/entry_buffer.py |  73
+ ++++++++++++++++++++++++++++
+ 1 file changed, 73 insertions(+)
 
 commit f2b1d222120f055bec9339cca55c9cc90f538c00
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 6 17:26:03 2010 -0400
+Date:  Tue Jul 6 17:26:03 2010 -0400
 
     fix loading of demo modules to support sub modules
 
- demos/gtk-demo/gtk-demo.py | 9 +++++++--
+ demos/gtk-demo/gtk-demo.py |   9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 4f9390fb1892b13ab2ea00ed66c5000a40f09029
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jul 6 15:56:34 2010 -0400
+Date:  Tue Jul 6 15:56:34 2010 -0400
 
     add the ability to have demos in sub catagories
 
- demos/gtk-demo/gtk-demo.py | 76
- ++++++++++++++++++++++++++++++++--------------
+ demos/gtk-demo/gtk-demo.py |  76
+ +++++++++++++++++++++++++++++++-------------
  1 file changed, 54 insertions(+), 22 deletions(-)
 
 commit dc2249a3ecf339008351316217191d0551ccc588
 Author: Jose Aliste <jaliste@src.gnome.org>
-Date:   Mon Jul 5 14:36:59 2010 -0400
+Date:  Mon Jul 5 14:36:59 2010 -0400
 
     Add  __name__ to DynamicModule class.
 
     Fixes bug #623486.
 
- gi/module.py | 1 +
+ gi/module.py |    1 +
  1 file changed, 1 insertion(+)
 
 commit 2357bca8d14539894b6bd0acfdc18d30b4bb4db6
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Mon Jul 5 16:11:07 2010 +0200
+Date:  Mon Jul 5 16:11:07 2010 +0200
 
     Do not override GdkRectangle.
 
@@ -31194,86 +13134,86 @@ Date:   Mon Jul 5 16:11:07 2010 +0200
     to override
     it anymore.
 
- gi/overrides/Gdk.py | 19 -------------------
+ gi/overrides/Gdk.py |  19 -------------------
  1 file changed, 19 deletions(-)
 
 commit daca09dc2c2306d4fa82a68bbdd147d4b170a1e7
 Author: Philip Withnall <philip.withnall@collabora.co.uk>
-Date:   Tue Jun 29 16:37:36 2010 +0100
+Date:  Tue Jun 29 16:37:36 2010 +0100
 
     Add override for TreeModel implementing __len__()
 
     Closes: bgo#622882
 
- gi/overrides/Gtk.py     | 11 +++++++++--
- tests/test_overrides.py |  5 +++++
+ gi/overrides/Gtk.py    |   11 +++++++++--
+ tests/test_overrides.py |    5 +++++
  2 files changed, 14 insertions(+), 2 deletions(-)
 
 commit bb8adb7f02f0c5494df2cb6e535e44d23902e8f5
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 29 11:27:13 2010 +0200
+Date:  Tue Jun 29 11:27:13 2010 +0200
 
     Update NEWS and release PyGObject-2.21.4
 
- NEWS | 27 +++++++++++++++++++++++++--
+ NEWS |   27 +++++++++++++++++++++++++--
  1 file changed, 25 insertions(+), 2 deletions(-)
 
 commit 2d473ee17be4671244bb4a2a0953a21ccf2a0df6
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 29 10:55:03 2010 +0200
+Date:  Tue Jun 29 10:55:03 2010 +0200
 
     Remove files from the makefiles
 
- gi/Makefile.am      | 4 +---
- gobject/Makefile.am | 3 +--
+ gi/Makefile.am      |   4 +---
+ gobject/Makefile.am |   3 +--
  2 files changed, 2 insertions(+), 5 deletions(-)
 
 commit 89827314fd183eac07443c8e9d275ca9d4ce59df
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 29 10:27:39 2010 +0200
+Date:  Tue Jun 29 10:27:39 2010 +0200
 
     Build the cairo shim as a python module so the _gi module stops
     linking to it
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623021
 
- configure.ac            |   2 +
- gi/Makefile.am          |  38 ++++++++++-----
- gi/gimodule.c           |   8 +---
- gi/pygi-argument.c      |  10 +---
- gi/pygi-foreign-cairo.c |  56 ++++++++++++++++------
- gi/pygi-foreign-cairo.h |  55 ---------------------
- gi/pygi-foreign.c       | 125
- ++++++++++++++++++++++++++++--------------------
- gi/pygi-foreign.h       |  31 ++++++------
- gi/pygi.h               |  40 ++++++++++++++--
+ configure.ac              2 +
+ gi/Makefile.am                 |   38 +++++++++-----
+ gi/gimodule.c          |    8 +--
+ gi/pygi-argument.c       10 +---
+ gi/pygi-foreign-cairo.c |   56 +++++++++++++++------
+ gi/pygi-foreign-cairo.h |   55 ---------------------
+ gi/pygi-foreign.c       125
+ ++++++++++++++++++++++++++++-------------------
+ gi/pygi-foreign.h        31 ++++++------
+ gi/pygi.h              |   40 +++++++++++++--
  9 files changed, 196 insertions(+), 169 deletions(-)
 
 commit a6a90551311bc64f037cbd442e13f70c30060871
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 28 14:20:43 2010 +0200
+Date:  Mon Jun 28 14:20:43 2010 +0200
 
     Remove pygi-external.h
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623021
 
- gi/gimodule.c           |  8 +++---
- gi/pygi-type.c          |  4 +--
- gi/pygi-type.h          |  2 +-
- gi/pygi.h               | 54 ++++++++++++++++-----------------------
- gobject/Makefile.am     |  6 +++++
- gobject/pygboxed.c      |  2 +-
- gobject/pygenum.c       |  2 +-
- gobject/pygflags.c      |  2 +-
- gobject/pygi-external.h | 67
- -------------------------------------------------
- gobject/pygobject.c     |  2 +-
- gobject/pygpointer.c    |  2 +-
+ gi/gimodule.c          |    8 +++---
+ gi/pygi-type.c                 |    4 +--
+ gi/pygi-type.h                 |    2 +-
+ gi/pygi.h              |   54 ++++++++++++++++----------------------
+ gobject/Makefile.am    |    6 +++++
+ gobject/pygboxed.c     |    2 +-
+ gobject/pygenum.c      |    2 +-
+ gobject/pygflags.c     |    2 +-
+ gobject/pygi-external.h |   67
+ -----------------------------------------------
+ gobject/pygobject.c    |    2 +-
+ gobject/pygpointer.c   |    2 +-
  11 files changed, 40 insertions(+), 111 deletions(-)
 
 commit 8b3a3baacb45cb3f9112f7597607602fa89c6634
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jun 25 13:54:57 2010 +0200
+Date:  Fri Jun 25 13:54:57 2010 +0200
 
     Revert "correctly handle floating objects in gtk"
 
@@ -31281,70 +13221,70 @@ Date:   Fri Jun 25 13:54:57 2010 +0200
 
     Conflicts:
 
-            gi/gimodule.c
-            tests/test_everything.py
+       gi/gimodule.c
+       tests/test_everything.py
 
- gi/gimodule.c            | 13 -------------
- tests/test_everything.py |  3 ++-
+ gi/gimodule.c           |   13 -------------
+ tests/test_everything.py |    3 ++-
  2 files changed, 2 insertions(+), 14 deletions(-)
 
 commit 0f2a09d7eae63abb71723b7cd8fb290dcba33426
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jun 25 13:49:04 2010 +0200
+Date:  Fri Jun 25 13:49:04 2010 +0200
 
     Make valgrind happy again
 
     * gi/pygi-argument.c, gi/pygi-info.c: Zero two GArgument instances.
     * gi/pygi-invoke.c: workaround bgo#622711 and zero invocation_state.
 
- gi/pygi-argument.c | 1 +
- gi/pygi-info.c     | 2 ++
- gi/pygi-invoke.c   | 8 ++++++--
+ gi/pygi-argument.c |   1 +
+ gi/pygi-info.c     |   2 ++
+ gi/pygi-invoke.c   |   8 ++++++--
  3 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 63afe55906c8637e913783e65b82b540b81bed65
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jun 24 16:13:37 2010 -0400
+Date:  Thu Jun 24 16:13:37 2010 -0400
 
     add drawing area demo
 
- demos/gtk-demo/demos/drawingarea.py | 249
- ++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/drawingarea.py | 249
+ +++++++++++++++++++++++++++++++++++
  1 file changed, 249 insertions(+)
 
 commit 8bba5f842393a284367cdd15f3d32a8c7745516a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jun 24 14:11:00 2010 -0400
+Date:  Thu Jun 24 14:11:00 2010 -0400
 
     sort the demo list
 
- demos/gtk-demo/gtk-demo.py | 2 ++
+ demos/gtk-demo/gtk-demo.py |   2 ++
  1 file changed, 2 insertions(+)
 
 commit b9da82742701ed276b01dee39626cd71cbef8556
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jun 24 13:56:18 2010 -0400
+Date:  Thu Jun 24 13:56:18 2010 -0400
 
     rename iter to treeiter so we aren't using a python reserved word
 
- demos/gtk-demo/gtk-demo.py | 12 ++++++------
+ demos/gtk-demo/gtk-demo.py |  12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit c93935621f2fb1ff5e8c424ae884bd684ea68e50
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Jun 24 13:47:54 2010 -0400
+Date:  Thu Jun 24 13:47:54 2010 -0400
 
     Fixup for change in buffer API
 
     * Part of buffer API dealing with TextIter now marked (out
     caller-allocates)
 
- demos/gtk-demo/gtk-demo.py | 10 ++++------
+ demos/gtk-demo/gtk-demo.py |  10 ++++------
  1 file changed, 4 insertions(+), 6 deletions(-)
 
 commit 8d9516a593a515290109401a9db7aa259b5aa35c
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 23 17:04:33 2010 -0400
+Date:  Wed Jun 23 17:04:33 2010 -0400
 
     add ListStore, TreeStore and TreeViewColumn APIs
 
@@ -31363,55 +13303,55 @@ Date:   Wed Jun 23 17:04:33 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620405
 
- gi/overrides/Gtk.py     | 59 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 69
- +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py    |   59 ++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   69
+ +++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 128 insertions(+)
 
 commit c305fbeb7bdb44623d5198f4a8f0a374d529fdf4
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Wed Jun 23 14:34:28 2010 -0300
+Date:  Wed Jun 23 14:34:28 2010 -0300
 
     [gi] Add -I../gobject to cflags
 
     Since we're no longer pulling in pygobject cflags,
     add this to be able to include pygobject.h
 
- gi/Makefile.am | 3 +++
+ gi/Makefile.am |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 53a093198851e3ba5abd1f6c3314737decd401d8
 Author: Ignacio Casal Quinteiro <icq@gnome.org>
-Date:   Wed Jun 23 18:09:19 2010 +0200
+Date:  Wed Jun 23 18:09:19 2010 +0200
 
     Add unit test for add_actions user data.
 
- tests/test_overrides.py | 20 +++++++++++++++-----
+ tests/test_overrides.py |   20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit 7f829af620cba768de619dd9f228d5d2ebf7fee4
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Wed Jun 23 18:06:46 2010 +0200
+Date:  Wed Jun 23 18:06:46 2010 +0200
 
     Pass user_data param when adding actions
 
- gi/overrides/Gtk.py | 12 ++++++------
+ gi/overrides/Gtk.py |  12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit 8f537ccd62f41ebe0db3853e2ae08080666f598f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 23 12:02:04 2010 -0400
+Date:  Wed Jun 23 12:02:04 2010 -0400
 
     add an exception type to the try/except block
 
     * we should always specify what exception types we are expecting
 
- gi/overrides/Gtk.py | 6 +++---
+ gi/overrides/Gtk.py |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit f140a8ebf59347162b67b550bd6f62d2eafad29a
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Wed Jun 23 12:31:51 2010 -0300
+Date:  Wed Jun 23 12:31:51 2010 -0300
 
     Avoid duplicating required versions
 
@@ -31420,12 +13360,12 @@ Date:   Wed Jun 23 12:31:51 2010 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622503
 
- configure.ac | 9 +++++----
+ configure.ac |    9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit e8bd25355fbe7de38a28b7a0583167a2c0ffc31f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 22 15:03:08 2010 -0400
+Date:  Tue Jun 22 15:03:08 2010 -0400
 
     return PyList instead of PyTuple for array, return empty list for
     NULL arrays
@@ -31435,15 +13375,15 @@ Date:   Tue Jun 22 15:03:08 2010 -0400
     * test the ability to send in both None and empty list for arrays
     and lists
 
- gi/pygi-argument.c       |  7 ++--
- tests/test_everything.py |  5 ++-
- tests/test_gi.py         | 84
- ++++++++++++++++++++++++------------------------
+ gi/pygi-argument.c      |    7 ++--
+ tests/test_everything.py |    5 ++-
+ tests/test_gi.py        |   84
+ +++++++++++++++++++++++-----------------------
  3 files changed, 49 insertions(+), 47 deletions(-)
 
 commit f312e6a49505eca07815146cfbdb0e48e5b3b8a8
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 23 15:42:29 2010 +0200
+Date:  Wed Jun 23 15:42:29 2010 +0200
 
     Fix 'make distcheck'
 
@@ -31454,82 +13394,82 @@ Date:   Wed Jun 23 15:42:29 2010 +0200
      * tests/common.py: Don't add the src dir to the python path
      * tests/runtests.py: Don't pass the src dir to common.py
 
- Makefile.am         |  4 +++-
- gi/Makefile.am      |  1 +
- gio/Makefile.am     |  1 +
- glib/Makefile.am    |  2 +-
- gobject/Makefile.am |  1 +
- tests/Makefile.am   | 17 ++---------------
- tests/common.py     |  3 +--
- tests/runtests.py   | 12 +++++-------
+ Makefile.am        |    4 +++-
+ gi/Makefile.am      |   1 +
+ gio/Makefile.am     |   1 +
+ glib/Makefile.am    |   2 +-
+ gobject/Makefile.am |   1 +
+ tests/Makefile.am   |  17 ++---------------
+ tests/common.py     |   3 +--
+ tests/runtests.py   |  12 +++++-------
  8 files changed, 15 insertions(+), 26 deletions(-)
 
 commit 5f82e7d2909cbbbecbf5dbee2342f516c0d1f371
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 23 13:59:14 2010 +0200
+Date:  Wed Jun 23 13:59:14 2010 +0200
 
     Allow building pygobject without introspection support by providing
     --disable-introspection to configure.
 
- Makefile.am             |  6 +++++-
- configure.ac            | 15 ++++++++-------
- gobject/pygi-external.h |  4 ++--
- tests/Makefile.am       |  8 ++++++--
- tests/runtests.py       | 21 +++++++--------------
+ Makefile.am            |    6 +++++-
+ configure.ac           |   15 ++++++++-------
+ gobject/pygi-external.h |    4 ++--
+ tests/Makefile.am      |    8 ++++++--
+ tests/runtests.py      |   21 +++++++--------------
  5 files changed, 28 insertions(+), 26 deletions(-)
 
 commit cc3ea77318ee572673d2a044deca9001366b0f08
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 23 12:26:51 2010 +0200
+Date:  Wed Jun 23 12:26:51 2010 +0200
 
     Make sure that sys.argv is a list and not a sequence.
 
     Because Python's optparse will try to do things on it that can
     only be done with list.
 
- gi/overrides/Gtk.py | 2 +-
+ gi/overrides/Gtk.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3d72b8248cc534a689dee5679a729b2fba56c528
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 23 12:26:02 2010 +0200
+Date:  Wed Jun 23 12:26:02 2010 +0200
 
     Force loading the GObject typelib so we have available the wrappers
     for base classes such as GInitiallyUnowned.
 
- gi/__init__.py | 3 +++
+ gi/__init__.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit c7c94ef349c30597f2f10d90f74718d678ec7add
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 22 14:45:48 2010 -0400
+Date:  Tue Jun 22 14:45:48 2010 -0400
 
     we shouldn't g_array_free NULL pointers
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622425
 
- gi/pygi-info.c | 5 +++--
+ gi/pygi-info.c |    5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit fb1ee243493616d7a7e4f6924c574db39f5a423d
-Merge: acf7b43a 5f9cb91c
+Merge: acf7b43 5f9cb91
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed Jun 23 12:53:05 2010 +0200
+Date:  Wed Jun 23 12:53:05 2010 +0200
 
     Merge branch 'pygi'
 
 commit 5f9cb91c2b3851056d5e2d7ff1401d4ce2be7c1f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 22 15:39:46 2010 -0400
+Date:  Tue Jun 22 15:39:46 2010 -0400
 
     remove unneeded TextIter creation in the tests
 
- tests/test_overrides.py | 3 ---
+ tests/test_overrides.py |    3 ---
  1 file changed, 3 deletions(-)
 
 commit 53c355d2cc0894e7f551e9b4eb719b89188a978e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 21 11:42:12 2010 -0400
+Date:  Mon Jun 21 11:42:12 2010 -0400
 
     add override for TextBuffer
 
@@ -31542,14 +13482,14 @@ Date:   Mon Jun 21 11:42:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620583
 
- gi/overrides/Gtk.py     | 51
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py | 25 ++++++++++++++++++++++++
+ gi/overrides/Gtk.py    |   51
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py |   25 +++++++++++++++++++++++
  2 files changed, 76 insertions(+)
 
 commit 1d89a88b212c7411ad28e74eda80ae751de92e50
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 22 12:46:39 2010 -0400
+Date:  Tue Jun 22 12:46:39 2010 -0400
 
     fix up some build issues
 
@@ -31560,13 +13500,13 @@ Date:   Tue Jun 22 12:46:39 2010 -0400
     targets like
       make check.gdb work
 
- configure.ac      | 2 +-
- tests/Makefile.am | 2 +-
+ configure.ac     |    2 +-
+ tests/Makefile.am |   2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 4fe0d94c219deb69a2309693202309c53a0e5e69
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 22 11:50:30 2010 -0400
+Date:  Tue Jun 22 11:50:30 2010 -0400
 
     make the overrides file git friendly by appending to __all__ after
     each override
@@ -31584,64 +13524,64 @@ Date:   Tue Jun 22 11:50:30 2010 -0400
       after each override.  This creates distinct blocks of changed text
       which will not conflict
 
- gi/overrides/GIMarshallingTests.py | 10 ++++------
- gi/overrides/Gdk.py                |  8 ++++----
- gi/overrides/Gtk.py                |  7 +++++--
+ gi/overrides/GIMarshallingTests.py |  10 ++++------
+ gi/overrides/Gdk.py               |    8 ++++----
+ gi/overrides/Gtk.py               |    7 +++++--
  3 files changed, 13 insertions(+), 12 deletions(-)
 
 commit 49321b934603e1ec69fb04082c63902970907d2b
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Sun Jun 20 13:27:34 2010 +0200
+Date:  Sun Jun 20 13:27:34 2010 +0200
 
     Override Dialog constructor and add_buttons method
 
- gi/overrides/Gtk.py     | 46
+ gi/overrides/Gtk.py    |   46
  +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_overrides.py | 16 ++++++++++++++++
+ tests/test_overrides.py |   16 ++++++++++++++++
  2 files changed, 61 insertions(+), 1 deletion(-)
 
 commit acf7b43a41ce814f0c57ce609a090826f04771db
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 21 18:17:38 2010 +0200
+Date:  Mon Jun 21 18:17:38 2010 +0200
 
     Post release version bump to 2.21.4
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a7fa8b80406227a06cf18f8675dbc1f471283829
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 21 18:10:32 2010 +0200
+Date:  Mon Jun 21 18:10:32 2010 +0200
 
     Update NEWS and release PyGObject-2.21.3
 
- NEWS | 7 +++++++
+ NEWS |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 79acac7b86ec52cd3681d94d7f116314c3f00167
 Author: Ludovic L'Hours <ludovic.lhours@gmail.com>
-Date:   Tue Jul 21 16:28:34 2009 +0200
+Date:  Tue Jul 21 16:28:34 2009 +0200
 
     Proper handling of null-ok in virtual methods
 
     https://bugzilla.gnome.org/show_bug.cgi?id=589253
 
- codegen/codegen.py        |  2 ++
- codegen/reversewrapper.py | 18 +++++++++++++++---
+ codegen/codegen.py       |    2 ++
+ codegen/reversewrapper.py |   18 +++++++++++++++---
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 259a4b08f009aa01451caed20dbb6e68b402da2a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 21 17:34:54 2010 +0200
+Date:  Mon Jun 21 17:34:54 2010 +0200
 
     Add *~ and *.orig to .gitignore
 
- .gitignore | 5 ++++-
+ .gitignore |   5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 00a85f6a844714d1715e2f67431747d1a4cdacb1
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 21 17:33:56 2010 +0200
+Date:  Mon Jun 21 17:33:56 2010 +0200
 
     Fall back to use the floating references API in glib if there isn't
     a sinkfunc defined.
@@ -31654,146 +13594,217 @@ Date:   Mon Jun 21 17:33:56 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=583909
 
- gobject/gobjectmodule.c  |   2 -
- gobject/pygobject.c      |  50 +++++++++++++---------
- gobject/pygobject.h      |   1 +
- tests/Makefile.am        |   2 +
- tests/test-floating.c    |  95 +++++++++++++++++++++++++++++++++++++++++
- tests/test-floating.h    |  60 ++++++++++++++++++++++++++
- tests/test_gobject.py    |  19 ++++++++-
- tests/testhelpermodule.c | 109
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c  |    2 -
+ gobject/pygobject.c     |   50 ++++++++++++---------
+ gobject/pygobject.h        1 +
+ tests/Makefile.am          2 +
+ tests/test-floating.c   |   95 ++++++++++++++++++++++++++++++++++++++++
+ tests/test-floating.h   |   60 +++++++++++++++++++++++++
+ tests/test_gobject.py   |   19 +++++++-
+ tests/testhelpermodule.c |  109
+ ++++++++++++++++++++++++++++++++++++++++++++++
  8 files changed, 315 insertions(+), 23 deletions(-)
 
 commit e71238a699ae783fd1a59c8a76e3555d8066cf82
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon Jun 21 13:06:13 2010 +0200
+Date:  Mon Jun 21 13:06:13 2010 +0200
 
     Revert "Drop sinkfuncs."
 
     This reverts commit 04627488220b4f2a16e11f8982af7866fea9f7eb.
 
- gobject/gobjectmodule.c |  3 ++-
- gobject/pygobject.c     | 42 ++++++++++++++++++++++++++++++++++--------
- gobject/pygobject.h     |  1 -
+ gobject/gobjectmodule.c |    3 ++-
+ gobject/pygobject.c    |   42 ++++++++++++++++++++++++++++++++++--------
+ gobject/pygobject.h    |    1 -
  3 files changed, 36 insertions(+), 10 deletions(-)
 
 commit b2661054d6bde673484eab472e69ca021124528d
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Sun Jun 20 11:09:57 2010 -0300
+Date:  Sun Jun 20 11:09:57 2010 -0300
 
     Merge back pygi
 
     For reasons outlined at:
     http://mail.gnome.org/archives/python-hackers-list/2010-June/msg00009.html
 
- Makefile.am                                        |  14 ++++-
- configure.ac                                       |  29 ++++++++--
- {gi/demos => demos}/gtk-demo/demos/__init__.py     |   0
- {gi/demos => demos}/gtk-demo/demos/appwindow.py    |   0
- {gi/demos => demos}/gtk-demo/demos/assistant.py    |   0
- {gi/demos => demos}/gtk-demo/demos/builder.py      |   0
- {gi/demos => demos}/gtk-demo/demos/button_box.py   |   0
- {gi/demos => demos}/gtk-demo/demos/clipboard.py    |   0
- .../gtk-demo/demos/colorselector.py                |   0
- {gi/demos => demos}/gtk-demo/demos/combobox.py     |   0
- .../gtk-demo/demos/data/alphatest.png              | Bin
- .../gtk-demo/demos/data/apple-red.png              | Bin
- .../gtk-demo/demos/data/background.jpg             | Bin
- {gi/demos => demos}/gtk-demo/demos/data/demo.ui    |   0
- .../gtk-demo/demos/data/floppybuddy.gif            | Bin
- .../gtk-demo/demos/data/gnome-applets.png          | Bin
- .../gtk-demo/demos/data/gnome-calendar.png         | Bin
- .../gtk-demo/demos/data/gnome-foot.png             | Bin
- .../gtk-demo/demos/data/gnome-fs-directory.png     | Bin
- .../gtk-demo/demos/data/gnome-fs-regular.png       | Bin
- .../gtk-demo/demos/data/gnome-gimp.png             | Bin
- .../gtk-demo/demos/data/gnome-gmush.png            | Bin
- .../gtk-demo/demos/data/gnome-gsame.png            | Bin
- .../gtk-demo/demos/data/gnu-keys.png               | Bin
- .../gtk-demo/demos/data/gtk-logo-rgb.gif           | Bin
- {gi/demos => demos}/gtk-demo/demos/test.py         |   0
- {gi/demos => demos}/gtk-demo/gtk-demo.py           |   0
- examples/Makefile.am                               |   2 +-
- {gi/examples => examples}/cairo-demo.py            |   0
- gi/Makefile.am                                     |   4 +-
- gi/examples/Makefile.am                            |   2 -
- pygi-Makefile.am                                   |  28 ----------
- pygi-configure.ac                                  |  60
- ---------------------
- pygi.doap                                          |  34 ------------
- pygobject.doap                                     |  16 +++++-
- tests/Makefile.am                                  |  23 ++++++--
- {gi/tests => tests}/test_everything.py             |   0
- {gi/tests => tests}/test_gi.py                     |   0
- {gi/tests => tests}/test_overrides.py              |   0
- 39 files changed, 75 insertions(+), 137 deletions(-)
+ Makefile.am                                       |   14 +-
+ configure.ac                                      |   29 +-
+ demos/gtk-demo/demos/appwindow.py                 |  411 +++++
+ demos/gtk-demo/demos/assistant.py                 |  134 ++
+ demos/gtk-demo/demos/builder.py                   |   57 +
+ demos/gtk-demo/demos/button_box.py                |  121 ++
+ demos/gtk-demo/demos/clipboard.py                 |  238 +++
+ demos/gtk-demo/demos/colorselector.py             |  121 ++
+ demos/gtk-demo/demos/combobox.py                  |  282 ++++
+ demos/gtk-demo/demos/data/alphatest.png           |  Bin 0 ->
+ 26529 bytes
+ demos/gtk-demo/demos/data/apple-red.png           |  Bin 0 -> 3545 bytes
+ demos/gtk-demo/demos/data/background.jpg          |  Bin 0 ->
+ 22219 bytes
+ demos/gtk-demo/demos/data/demo.ui                 |  258 ++++
+ demos/gtk-demo/demos/data/floppybuddy.gif         |  Bin 0 -> 5216 bytes
+ demos/gtk-demo/demos/data/gnome-applets.png       |  Bin 0 -> 3090 bytes
+ demos/gtk-demo/demos/data/gnome-calendar.png      |  Bin 0 -> 2755 bytes
+ demos/gtk-demo/demos/data/gnome-foot.png          |  Bin 0 -> 2916 bytes
+ demos/gtk-demo/demos/data/gnome-fs-directory.png   |  Bin 0 -> 2044 bytes
+ demos/gtk-demo/demos/data/gnome-fs-regular.png     |  Bin 0 -> 1795 bytes
+ demos/gtk-demo/demos/data/gnome-gimp.png          |  Bin 0 -> 3410 bytes
+ demos/gtk-demo/demos/data/gnome-gmush.png         |  Bin 0 -> 3244 bytes
+ demos/gtk-demo/demos/data/gnome-gsame.png         |  Bin 0 -> 4263 bytes
+ demos/gtk-demo/demos/data/gnu-keys.png                    |  Bin 0 -> 3852 bytes
+ demos/gtk-demo/demos/data/gtk-logo-rgb.gif        |  Bin 0 -> 6427 bytes
+ demos/gtk-demo/demos/test.py                      |   14 +
+ demos/gtk-demo/gtk-demo.py                        |  266 ++++
+ examples/Makefile.am                              |    2 +-
+ examples/cairo-demo.py                                    |  121 ++
+ gi/Makefile.am                                            |    4 +-
+ gi/demos/gtk-demo/demos/appwindow.py              |  411 -----
+ gi/demos/gtk-demo/demos/assistant.py              |  134 --
+ gi/demos/gtk-demo/demos/builder.py                |   57 -
+ gi/demos/gtk-demo/demos/button_box.py             |  121 --
+ gi/demos/gtk-demo/demos/clipboard.py              |  238 ---
+ gi/demos/gtk-demo/demos/colorselector.py          |  121 --
+ gi/demos/gtk-demo/demos/combobox.py               |  282 ----
+ gi/demos/gtk-demo/demos/data/alphatest.png        |  Bin 26529 ->
+ 0 bytes
+ gi/demos/gtk-demo/demos/data/apple-red.png        |  Bin 3545 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/background.jpg       |  Bin 22219 ->
+ 0 bytes
+ gi/demos/gtk-demo/demos/data/demo.ui              |  258 ----
+ gi/demos/gtk-demo/demos/data/floppybuddy.gif      |  Bin 5216 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-applets.png     |  Bin 3090 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-calendar.png    |  Bin 2755 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-foot.png       |  Bin 2916 -> 0 bytes
+ .../gtk-demo/demos/data/gnome-fs-directory.png     |  Bin 2044 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-fs-regular.png  |  Bin 1795 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gimp.png       |  Bin 3410 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gmush.png      |  Bin 3244 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gsame.png      |  Bin 4263 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnu-keys.png         |  Bin 3852 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gtk-logo-rgb.gif     |  Bin 6427 -> 0 bytes
+ gi/demos/gtk-demo/demos/test.py                   |   14 -
+ gi/demos/gtk-demo/gtk-demo.py                     |  266 ----
+ gi/examples/Makefile.am                           |    2 -
+ gi/examples/cairo-demo.py                         |  121 --
+ gi/tests/test_everything.py                       |  270 ----
+ gi/tests/test_gi.py                               | 1624
+ --------------------
+ gi/tests/test_overrides.py                        |  132 --
+ pygi-Makefile.am                                  |   28 -
+ pygi-configure.ac                                 |   60 -
+ pygi.doap                                         |   34 -
+ pygobject.doap                                            |   16 +-
+ tests/Makefile.am                                 |   23 +-
+ tests/test_everything.py                          |  270 ++++
+ tests/test_gi.py                                  | 1624
+ ++++++++++++++++++++
+ tests/test_overrides.py                           |  132 ++
+ 66 files changed, 4124 insertions(+), 4186 deletions(-)
 
 commit 597bd64319d7966045b5b8613ca6fc85668c3f56
-Merge: ec8d148e fa91dfd3
+Merge: ec8d148 fa91dfd
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Sun Jun 20 10:53:46 2010 -0300
+Date:  Sun Jun 20 10:53:46 2010 -0300
 
     Merge branch 'pygi-merge'
 
 commit fa91dfd3ec79ecd03c9fb59b9363eab4a5b3ff2b
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Sun Jun 20 10:53:36 2010 -0300
+Date:  Sun Jun 20 10:53:36 2010 -0300
 
     Prepare pygi move
 
- autogen.sh                                         | 166
- ---------------------
- .gitignore => gi/.gitignore                        |   0
- HACKING => gi/HACKING                              |   0
- {demos => gi/demos}/gtk-demo/demos/__init__.py     |   0
- {demos => gi/demos}/gtk-demo/demos/appwindow.py    |   0
- {demos => gi/demos}/gtk-demo/demos/assistant.py    |   0
- {demos => gi/demos}/gtk-demo/demos/builder.py      |   0
- {demos => gi/demos}/gtk-demo/demos/button_box.py   |   0
- {demos => gi/demos}/gtk-demo/demos/clipboard.py    |   0
- .../demos}/gtk-demo/demos/colorselector.py         |   0
- {demos => gi/demos}/gtk-demo/demos/combobox.py     |   0
- .../demos}/gtk-demo/demos/data/alphatest.png       | Bin
- .../demos}/gtk-demo/demos/data/apple-red.png       | Bin
- .../demos}/gtk-demo/demos/data/background.jpg      | Bin
- {demos => gi/demos}/gtk-demo/demos/data/demo.ui    |   0
- .../demos}/gtk-demo/demos/data/floppybuddy.gif     | Bin
- .../demos}/gtk-demo/demos/data/gnome-applets.png   | Bin
- .../demos}/gtk-demo/demos/data/gnome-calendar.png  | Bin
- .../demos}/gtk-demo/demos/data/gnome-foot.png      | Bin
- .../gtk-demo/demos/data/gnome-fs-directory.png     | Bin
- .../gtk-demo/demos/data/gnome-fs-regular.png       | Bin
- .../demos}/gtk-demo/demos/data/gnome-gimp.png      | Bin
- .../demos}/gtk-demo/demos/data/gnome-gmush.png     | Bin
- .../demos}/gtk-demo/demos/data/gnome-gsame.png     | Bin
- .../demos}/gtk-demo/demos/data/gnu-keys.png        | Bin
- .../demos}/gtk-demo/demos/data/gtk-logo-rgb.gif    | Bin
- {demos => gi/demos}/gtk-demo/demos/test.py         |   0
- {demos => gi/demos}/gtk-demo/gtk-demo.py           |   0
- {examples => gi/examples}/Makefile.am              |   0
- {examples => gi/examples}/cairo-demo.py            |   0
- {tests => gi/tests}/Makefile.am                    |   0
- {tests => gi/tests}/runtests.py                    |   0
- {tests => gi/tests}/test_everything.py             |   0
- {tests => gi/tests}/test_gi.py                     |   0
- {tests => gi/tests}/test_overrides.py              |   0
- Makefile.am => pygi-Makefile.am                    |   0
- configure.ac => pygi-configure.ac                  |   0
- 37 files changed, 166 deletions(-)
+ .gitignore                                        |   40 -
+ HACKING                                           |   26 -
+ Makefile.am                                       |   28 -
+ autogen.sh                                        |  166 --
+ configure.ac                                      |   60 -
+ demos/gtk-demo/demos/appwindow.py                 |  411 -----
+ demos/gtk-demo/demos/assistant.py                 |  134 --
+ demos/gtk-demo/demos/builder.py                   |   57 -
+ demos/gtk-demo/demos/button_box.py                |  121 --
+ demos/gtk-demo/demos/clipboard.py                 |  238 ---
+ demos/gtk-demo/demos/colorselector.py             |  121 --
+ demos/gtk-demo/demos/combobox.py                  |  282 ----
+ demos/gtk-demo/demos/data/alphatest.png           |  Bin 26529 ->
+ 0 bytes
+ demos/gtk-demo/demos/data/apple-red.png           |  Bin 3545 -> 0 bytes
+ demos/gtk-demo/demos/data/background.jpg          |  Bin 22219 ->
+ 0 bytes
+ demos/gtk-demo/demos/data/demo.ui                 |  258 ----
+ demos/gtk-demo/demos/data/floppybuddy.gif         |  Bin 5216 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-applets.png       |  Bin 3090 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-calendar.png      |  Bin 2755 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-foot.png          |  Bin 2916 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-fs-directory.png   |  Bin 2044 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-fs-regular.png     |  Bin 1795 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gimp.png          |  Bin 3410 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gmush.png         |  Bin 3244 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gsame.png         |  Bin 4263 -> 0 bytes
+ demos/gtk-demo/demos/data/gnu-keys.png                    |  Bin 3852 -> 0 bytes
+ demos/gtk-demo/demos/data/gtk-logo-rgb.gif        |  Bin 6427 -> 0 bytes
+ demos/gtk-demo/demos/test.py                      |   14 -
+ demos/gtk-demo/gtk-demo.py                        |  266 ----
+ examples/Makefile.am                              |    2 -
+ examples/cairo-demo.py                                    |  121 --
+ gi/.gitignore                                     |   40 +
+ gi/HACKING                                        |   26 +
+ gi/demos/gtk-demo/demos/appwindow.py              |  411 +++++
+ gi/demos/gtk-demo/demos/assistant.py              |  134 ++
+ gi/demos/gtk-demo/demos/builder.py                |   57 +
+ gi/demos/gtk-demo/demos/button_box.py             |  121 ++
+ gi/demos/gtk-demo/demos/clipboard.py              |  238 +++
+ gi/demos/gtk-demo/demos/colorselector.py          |  121 ++
+ gi/demos/gtk-demo/demos/combobox.py               |  282 ++++
+ gi/demos/gtk-demo/demos/data/alphatest.png        |  Bin 0 ->
+ 26529 bytes
+ gi/demos/gtk-demo/demos/data/apple-red.png        |  Bin 0 -> 3545 bytes
+ gi/demos/gtk-demo/demos/data/background.jpg       |  Bin 0 ->
+ 22219 bytes
+ gi/demos/gtk-demo/demos/data/demo.ui              |  258 ++++
+ gi/demos/gtk-demo/demos/data/floppybuddy.gif      |  Bin 0 -> 5216 bytes
+ gi/demos/gtk-demo/demos/data/gnome-applets.png     |  Bin 0 -> 3090 bytes
+ gi/demos/gtk-demo/demos/data/gnome-calendar.png    |  Bin 0 -> 2755 bytes
+ gi/demos/gtk-demo/demos/data/gnome-foot.png       |  Bin 0 -> 2916 bytes
+ .../gtk-demo/demos/data/gnome-fs-directory.png     |  Bin 0 -> 2044 bytes
+ gi/demos/gtk-demo/demos/data/gnome-fs-regular.png  |  Bin 0 -> 1795 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gimp.png       |  Bin 0 -> 3410 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gmush.png      |  Bin 0 -> 3244 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gsame.png      |  Bin 0 -> 4263 bytes
+ gi/demos/gtk-demo/demos/data/gnu-keys.png         |  Bin 0 -> 3852 bytes
+ gi/demos/gtk-demo/demos/data/gtk-logo-rgb.gif     |  Bin 0 -> 6427 bytes
+ gi/demos/gtk-demo/demos/test.py                   |   14 +
+ gi/demos/gtk-demo/gtk-demo.py                     |  266 ++++
+ gi/examples/Makefile.am                           |    2 +
+ gi/examples/cairo-demo.py                         |  121 ++
+ gi/tests/Makefile.am                              |   22 +
+ gi/tests/runtests.py                              |   21 +
+ gi/tests/test_everything.py                       |  270 ++++
+ gi/tests/test_gi.py                               | 1624
+ ++++++++++++++++++++
+ gi/tests/test_overrides.py                        |  132 ++
+ pygi-Makefile.am                                  |   28 +
+ pygi-configure.ac                                 |   60 +
+ tests/Makefile.am                                 |   22 -
+ tests/runtests.py                                 |   21 -
+ tests/test_everything.py                          |  270 ----
+ tests/test_gi.py                                  | 1624
+ --------------------
+ tests/test_overrides.py                           |  132 --
+ 71 files changed, 4248 insertions(+), 4414 deletions(-)
 
 commit ec8d148eccbb3714093f21b595ea77ae4c7c3bce
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Sun Jun 20 10:49:55 2010 -0300
+Date:  Sun Jun 20 10:49:55 2010 -0300
 
     [giounix] Make it possible to compile on glib 2.20
 
- gio/unix.override | 2 ++
+ gio/unix.override |   2 ++
  1 file changed, 2 insertions(+)
 
 commit 606018a2c551d890fc2bb987d99683f777598bda
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 7 16:32:29 2010 -0400
+Date:  Mon Jun 7 16:32:29 2010 -0400
 
     Don't free transfer full struct pointers because we can't do it safely
 
@@ -31808,13 +13819,13 @@ Date:   Mon Jun 7 16:32:29 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620898
 
- gi/pygi-argument.c |  9 ++++++++-
- gi/pygi-invoke.c   | 11 +++++++++--
+ gi/pygi-argument.c |   9 ++++++++-
+ gi/pygi-invoke.c   |  11 +++++++++--
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 433ee2aa029a1482961f478252a06492bd3498e6
 Author: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
-Date:   Tue Jun 15 11:42:28 2010 +0200
+Date:  Tue Jun 15 11:42:28 2010 +0200
 
     Release the lock when potentially invoking Python code.
 
@@ -31823,31 +13834,31 @@ Date:   Tue Jun 15 11:42:28 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=530935
 
- gobject/pygobject.c | 11 ++++++++++-
+ gobject/pygobject.c |  11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)
 
 commit aa1e82c7eb87620bd73e1edb486f5b9e0d49aa96
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 14 18:36:57 2010 -0400
+Date:  Mon Jun 14 18:36:57 2010 -0400
 
     add combobox example
 
- demos/gtk-demo/demos/combobox.py | 282
- +++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/combobox.py |  282
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 282 insertions(+)
 
 commit a8668694da59c2dd959c875f13337e64ca22f7e9
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 14 13:43:53 2010 -0400
+Date:  Mon Jun 14 13:43:53 2010 -0400
 
     fix leak in the allow None callbacks patch
 
- gi/pygi-callbacks.c | 4 ++--
+ gi/pygi-callbacks.c |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 729072e73d65e7fd5b5197ebe5a8c53a449d0ec0
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 7 17:12:09 2010 -0400
+Date:  Mon Jun 7 17:12:09 2010 -0400
 
     Allow passing None for callbacks which are annotated allow-none
 
@@ -31864,23 +13875,23 @@ Date:   Mon Jun 7 17:12:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620906
 
- gi/pygi-callbacks.c      |  7 +++++++
- gi/pygi-invoke.c         | 14 +++++++++++---
- tests/test_everything.py |  4 ++++
+ gi/pygi-callbacks.c     |    7 +++++++
+ gi/pygi-invoke.c        |   14 +++++++++++---
+ tests/test_everything.py |    4 ++++
  3 files changed, 22 insertions(+), 3 deletions(-)
 
 commit a3eb5c7de5836c37aa7ae01dbe98996ec2632c17
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Mon Jun 14 19:06:45 2010 +0200
+Date:  Mon Jun 14 19:06:45 2010 +0200
 
     Fix to match latest gtk annotations
 
- demos/gtk-demo/demos/appwindow.py | 3 +--
+ demos/gtk-demo/demos/appwindow.py |   3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit 6306dd73cc74aa9202569eac0eaaa5f825c8dc59
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 8 15:03:49 2010 -0400
+Date:  Tue Jun 8 15:03:49 2010 -0400
 
     fix variable member names in Gdk.Color override
 
@@ -31890,77 +13901,77 @@ Date:   Tue Jun 8 15:03:49 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=621007
 
- gi/overrides/Gdk.py     | 10 +++++-----
- tests/test_overrides.py |  6 +++---
+ gi/overrides/Gdk.py    |   10 +++++-----
+ tests/test_overrides.py |    6 +++---
  2 files changed, 8 insertions(+), 8 deletions(-)
 
 commit d182630e1128fef6f1c2aea28ccd8da4bddd2c8f
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jun 10 20:23:13 2010 +0200
+Date:  Thu Jun 10 20:23:13 2010 +0200
 
     Post release version bump to 2.21.3
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c4e64d5d264593051b9a3131e4985a58e8e76f8b
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jun 10 20:21:13 2010 +0200
+Date:  Thu Jun 10 20:21:13 2010 +0200
 
     Update NEWS and release PyGObject-2.21.2
 
- NEWS | 26 ++++++++++++++++++++++++++
+ NEWS |   26 ++++++++++++++++++++++++++
  1 file changed, 26 insertions(+)
 
 commit e0fe844d5fe8f7e26316f197444fd4143ed36adf
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jun 10 20:09:07 2010 +0200
+Date:  Thu Jun 10 20:09:07 2010 +0200
 
     Remove deleted files from the Makefile.
 
-           test_conversion.py
-           test_enum.py
-           test_gtype.py
-           test_subtype.py
+          test_conversion.py
+          test_enum.py
+          test_gtype.py
+          test_subtype.py
 
- tests/Makefile.am | 4 ----
+ tests/Makefile.am |   4 ----
  1 file changed, 4 deletions(-)
 
 commit 495a301cb81c5e914bcef905999265604faa27fc
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jun 10 19:39:09 2010 +0200
+Date:  Thu Jun 10 19:39:09 2010 +0200
 
     Add myself to the maintainers list in the README
 
- README | 1 +
+ README |    1 +
  1 file changed, 1 insertion(+)
 
 commit 04627488220b4f2a16e11f8982af7866fea9f7eb
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Thu Jun 10 19:24:31 2010 +0200
+Date:  Thu Jun 10 19:24:31 2010 +0200
 
     Drop sinkfuncs.
 
-        * use g_object methods to sink floating refs instead of allowing
-          custom sink functions to be registered
-        * we now sink inside of pygobject_new_full to handle cases where
-          a library creates its own gobject via g_object_new and just
-          needs a python wrapper
-          - a previous patch had done the sink when creating the gobject,
-            since it needs to call pygobject_new_full to wrap the object,
-            this patch handles both cases (e.g. pygobject created object
-            and externally created gobject)
+       * use g_object methods to sink floating refs instead of allowing
+         custom sink functions to be registered
+       * we now sink inside of pygobject_new_full to handle cases where
+         a library creates its own gobject via g_object_new and just
+         needs a python wrapper
+         - a previous patch had done the sink when creating the gobject,
+           since it needs to call pygobject_new_full to wrap the object,
+           this patch handles both cases (e.g. pygobject created object
+           and externally created gobject)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=583909
 
- gobject/gobjectmodule.c |  3 +--
- gobject/pygobject.c     | 42 ++++++++----------------------------------
- gobject/pygobject.h     |  1 +
+ gobject/gobjectmodule.c |    3 +--
+ gobject/pygobject.c    |   42 ++++++++----------------------------------
+ gobject/pygobject.h    |    1 +
  3 files changed, 10 insertions(+), 36 deletions(-)
 
 commit 07df124dc06cf506634e95d08397f50a2d07fce2
 Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Jun 7 09:47:23 2010 +0200
+Date:  Mon Jun 7 09:47:23 2010 +0200
 
     Make the "wrong argument count" exception more explicit.
 
@@ -31975,13 +13986,13 @@ Date:   Mon Jun 7 09:47:23 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620804
 
- gi/pygi-invoke.c         | 3 ++-
- tests/test_everything.py | 6 ++++++
+ gi/pygi-invoke.c        |    3 ++-
+ tests/test_everything.py |    6 ++++++
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit b435319fe830a909cc4d414533b3b66574931e24
 Author: Steve Frécinaux <code@istique.net>
-Date:   Mon Jun 7 09:54:06 2010 +0200
+Date:  Mon Jun 7 09:54:06 2010 +0200
 
     Use bash explicitely in the pre-commit hook.
 
@@ -31991,41 +14002,41 @@ Date:   Mon Jun 7 09:54:06 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620805
 
- pre-commit.hook | 2 +-
+ pre-commit.hook |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9ee2916494eb7654004925c1ee1e94f99b14f1a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Jun 8 16:55:26 2010 -0400
+Date:  Tue Jun 8 16:55:26 2010 -0400
 
     colorselector demo
 
- demos/gtk-demo/demos/colorselector.py | 121
- ++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/colorselector.py |  121
+ +++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit ec598128de9e90dccab662ed2f5511c8d659e156
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 8 15:48:33 2010 +0200
+Date:  Tue Jun 8 15:48:33 2010 +0200
 
     Update PyGObject dependency to 2.21.1
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 87774a17bd607724a56e18c2eb1ac71b04b7079d
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 8 10:40:39 2010 +0200
+Date:  Tue Jun 8 10:40:39 2010 +0200
 
     Add myself to maintainers
 
- MAINTAINERS    | 4 ++++
- pygobject.doap | 7 +++++++
+ MAINTAINERS   |    4 ++++
+ pygobject.doap |    7 +++++++
  2 files changed, 11 insertions(+)
 
 commit 46c91a11d448e5e11d142d3362aff1483226bca4
 Author: Colin Walters <walters@verbum.org>
-Date:   Wed May 5 13:54:27 2010 -0400
+Date:  Wed May 5 13:54:27 2010 -0400
 
     Clear error if we failed the import
 
@@ -32036,160 +14047,159 @@ Date:   Wed May 5 13:54:27 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617796
 
- gobject/pygi-external.h | 2 ++
+ gobject/pygi-external.h |    2 ++
  1 file changed, 2 insertions(+)
 
 commit c1c41576d053cc1cdd8366d8cd1e59fff1c3a9c6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 7 17:19:30 2010 -0400
+Date:  Mon Jun 7 17:19:30 2010 -0400
 
     fix some typos and add a link to a patch which fixes a FIXME
 
- demos/gtk-demo/demos/clipboard.py | 7 +++++--
+ demos/gtk-demo/demos/clipboard.py |   7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit e7fabb5024d94a3166766e5fca740741bc50380a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon Jun 7 16:21:42 2010 -0400
+Date:  Mon Jun 7 16:21:42 2010 -0400
 
     clipboard demo
 
- demos/gtk-demo/demos/clipboard.py | 235
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/clipboard.py |  235
+ +++++++++++++++++++++++++++++++++++++
  1 file changed, 235 insertions(+)
 
 commit e0f1dce5ec58d071759f886697501da6eeea549d
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sun Jun 6 13:27:46 2010 -0400
+Date:  Sun Jun 6 13:27:46 2010 -0400
 
     set is_fully_bound to false
 
- demos/gtk-demo/demos/button_box.py | 2 +-
+ demos/gtk-demo/demos/button_box.py |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 986db1c73746d3a8ad7d8d5141c7eed194e7b948
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jun 5 23:53:36 2010 -0400
+Date:  Sat Jun 5 23:53:36 2010 -0400
 
     new button box demo
 
- demos/gtk-demo/demos/button_box.py | 121
- +++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/button_box.py |  121
+ ++++++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit e9f5f8a829121e59367bae690442150f144946ad
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jun 5 23:26:03 2010 -0400
+Date:  Sat Jun 5 23:26:03 2010 -0400
 
     set is_fully_bound to True fro builder example
 
- demos/gtk-demo/demos/builder.py | 2 +-
+ demos/gtk-demo/demos/builder.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d9968c3a4dea1d4a73a9376009cf486c80ea3da6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jun 5 23:24:36 2010 -0400
+Date:  Sat Jun 5 23:24:36 2010 -0400
 
     fix up formatting in demos
 
- demos/gtk-demo/demos/appwindow.py | 16 ++++++++--------
- demos/gtk-demo/demos/assistant.py | 24 ++++++++++++------------
- demos/gtk-demo/demos/builder.py   |  2 +-
+ demos/gtk-demo/demos/appwindow.py |   16 ++++++++--------
+ demos/gtk-demo/demos/assistant.py |   24 ++++++++++++------------
+ demos/gtk-demo/demos/builder.py   |   2 +-
  3 files changed, 21 insertions(+), 21 deletions(-)
 
 commit ffca02536bafb55e8c3bce31cd992365207429f6
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat Jun 5 14:54:47 2010 -0400
+Date:  Sat Jun 5 14:54:47 2010 -0400
 
     add the builder demo
 
- demos/gtk-demo/demos/builder.py | 57
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/builder.py |   57
+ +++++++++++++++++++++++++++++++++++++++
  1 file changed, 57 insertions(+)
 
 commit a96dbafdf562a2ac6bde4df27919d3628689dbdb
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 4 17:48:24 2010 -0400
+Date:  Fri Jun 4 17:48:24 2010 -0400
 
     add assistant demo
 
- demos/gtk-demo/demos/assistant.py | 134
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/assistant.py |  134
+ +++++++++++++++++++++++++++++++++++++
  1 file changed, 134 insertions(+)
 
 commit 7e1b8cf32f33d45603aaec76afb0d14be84ffd94
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 4 16:56:46 2010 -0400
+Date:  Fri Jun 4 16:56:46 2010 -0400
 
     add formatting rules and copyright notice
 
- demos/gtk-demo/demos/appwindow.py | 19 +++++++++++++++++++
+ demos/gtk-demo/demos/appwindow.py |   19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 03b99692b81631d397ab62dcd263341465bcee88
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Jun 4 16:26:54 2010 -0400
+Date:  Fri Jun 4 16:26:54 2010 -0400
 
     add the gtk-demo app along with a couple of demos
 
     * note there are still a couple of patches in bugzilla that are
     needed for this
       to run correctly:
-        - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162682
-        - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162764
-
- demos/gtk-demo/demos/__init__.py                 |   0
- demos/gtk-demo/demos/appwindow.py                | 393
- +++++++++++++++++++++++
- demos/gtk-demo/demos/data/alphatest.png          | Bin 0 -> 26529 bytes
- demos/gtk-demo/demos/data/apple-red.png          | Bin 0 -> 3545 bytes
- demos/gtk-demo/demos/data/background.jpg         | Bin 0 -> 22219 bytes
- demos/gtk-demo/demos/data/demo.ui                | 258 +++++++++++++++
- demos/gtk-demo/demos/data/floppybuddy.gif        | Bin 0 -> 5216 bytes
- demos/gtk-demo/demos/data/gnome-applets.png      | Bin 0 -> 3090 bytes
- demos/gtk-demo/demos/data/gnome-calendar.png     | Bin 0 -> 2755 bytes
- demos/gtk-demo/demos/data/gnome-foot.png         | Bin 0 -> 2916 bytes
- demos/gtk-demo/demos/data/gnome-fs-directory.png | Bin 0 -> 2044 bytes
- demos/gtk-demo/demos/data/gnome-fs-regular.png   | Bin 0 -> 1795 bytes
- demos/gtk-demo/demos/data/gnome-gimp.png         | Bin 0 -> 3410 bytes
- demos/gtk-demo/demos/data/gnome-gmush.png        | Bin 0 -> 3244 bytes
- demos/gtk-demo/demos/data/gnome-gsame.png        | Bin 0 -> 4263 bytes
- demos/gtk-demo/demos/data/gnu-keys.png           | Bin 0 -> 3852 bytes
- demos/gtk-demo/demos/data/gtk-logo-rgb.gif       | Bin 0 -> 6427 bytes
- demos/gtk-demo/demos/test.py                     |  14 +
- demos/gtk-demo/gtk-demo.py                       | 266 +++++++++++++++
- 19 files changed, 931 insertions(+)
+       - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162682
+       - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162764
+
+ demos/gtk-demo/demos/appwindow.py               |  393
+ ++++++++++++++++++++++
+ demos/gtk-demo/demos/data/alphatest.png         |  Bin 0 -> 26529 bytes
+ demos/gtk-demo/demos/data/apple-red.png         |  Bin 0 -> 3545 bytes
+ demos/gtk-demo/demos/data/background.jpg        |  Bin 0 -> 22219 bytes
+ demos/gtk-demo/demos/data/demo.ui               |  258 ++++++++++++++
+ demos/gtk-demo/demos/data/floppybuddy.gif       |  Bin 0 -> 5216 bytes
+ demos/gtk-demo/demos/data/gnome-applets.png     |  Bin 0 -> 3090 bytes
+ demos/gtk-demo/demos/data/gnome-calendar.png    |  Bin 0 -> 2755 bytes
+ demos/gtk-demo/demos/data/gnome-foot.png        |  Bin 0 -> 2916 bytes
+ demos/gtk-demo/demos/data/gnome-fs-directory.png |  Bin 0 -> 2044 bytes
+ demos/gtk-demo/demos/data/gnome-fs-regular.png   |  Bin 0 -> 1795 bytes
+ demos/gtk-demo/demos/data/gnome-gimp.png        |  Bin 0 -> 3410 bytes
+ demos/gtk-demo/demos/data/gnome-gmush.png       |  Bin 0 -> 3244 bytes
+ demos/gtk-demo/demos/data/gnome-gsame.png       |  Bin 0 -> 4263 bytes
+ demos/gtk-demo/demos/data/gnu-keys.png                  |  Bin 0 -> 3852 bytes
+ demos/gtk-demo/demos/data/gtk-logo-rgb.gif      |  Bin 0 -> 6427 bytes
+ demos/gtk-demo/demos/test.py                    |   14 +
+ demos/gtk-demo/gtk-demo.py                      |  266 +++++++++++++++
+ 18 files changed, 931 insertions(+)
 
 commit b3b1f029d8d16cf9bd74160009808147d07e3b3f
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jun 4 11:25:08 2010 +0200
+Date:  Fri Jun 4 11:25:08 2010 +0200
 
     Update gobject-introspection dependency to 0.6.14
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 45c4e46ae93bd83a0e3f3550df6c64ce96bbedb4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jun 4 11:23:41 2010 +0200
+Date:  Fri Jun 4 11:23:41 2010 +0200
 
     Post-release version bump to 0.6.1
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7a94270dac48b67aabc7dbad156cf1180db9cb5e
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Fri Jun 4 08:29:42 2010 +0200
+Date:  Fri Jun 4 08:29:42 2010 +0200
 
     Pre-release version bump 0.6.0
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1e42ee6eb25a07a5201f24ffeac18d298a98477e
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri May 28 10:03:11 2010 -0400
+Date:  Fri May 28 10:03:11 2010 -0400
 
     support for caller-allocates annotations for structs
 
@@ -32212,48 +14222,48 @@ Date:   Fri May 28 10:03:11 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620406
 
- gi/pygi-invoke.c         | 73
- +++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_everything.py | 28 +++++++++++++++++++
+ gi/pygi-invoke.c        |   73
+ +++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_everything.py |   28 ++++++++++++++++++
  2 files changed, 97 insertions(+), 4 deletions(-)
 
 commit c3f467e0ae99aa78c2fdb91b973a272d2fe970bd
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Jun 2 14:14:16 2010 -0400
+Date:  Wed Jun 2 14:14:16 2010 -0400
 
     don't import gobject directly in the tests
 
     * use from gi.repository import GObject
 
- tests/test_overrides.py | 5 ++---
+ tests/test_overrides.py |    5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 commit 46b5133fea4cd5db57a360b3cbe9ee923e27560c
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue Jun 1 14:28:57 2010 +0200
+Date:  Tue Jun 1 14:28:57 2010 +0200
 
     Wrap C arrays in structs as GArrays before converting to Python
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620247
 
- gi/pygi-info.c   | 11 +++++++++++
- tests/test_gi.py | 17 +++++++++++++++++
+ gi/pygi-info.c   |   11 +++++++++++
+ tests/test_gi.py |   17 +++++++++++++++++
  2 files changed, 28 insertions(+)
 
 commit 5f0f9a9c9145a129a063b041424c3109a24d9ead
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed May 26 13:20:27 2010 +0200
+Date:  Wed May 26 13:20:27 2010 +0200
 
     Install pre-commit hook that checks the code changes for style
     conformance
 
- autogen.sh      |  7 +++++++
- pre-commit.hook | 39 +++++++++++++++++++++++++++++++++++++++
+ autogen.sh     |    7 +++++++
+ pre-commit.hook |   39 +++++++++++++++++++++++++++++++++++++++
  2 files changed, 46 insertions(+)
 
 commit 1319da5b7f483e48a90b0b7489f77236ba26f479
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Wed May 26 12:19:17 2010 +0200
+Date:  Wed May 26 12:19:17 2010 +0200
 
     Apply consistent whitespace formatting with:
 
@@ -32261,42 +14271,42 @@ Date:   Wed May 26 12:19:17 2010 +0200
 
     This won't affect git blame nor git diff if the switch -w is used.
 
- gi/gimodule.c           | 138 +++----
- gi/pygi-argument.c      | 960
- ++++++++++++++++++++++++------------------------
- gi/pygi-boxed.c         | 108 +++---
- gi/pygi-callbacks.c     | 154 ++++----
- gi/pygi-callbacks.h     |   8 +-
- gi/pygi-closure.c       | 270 +++++++-------
- gi/pygi-closure.h       |  18 +-
- gi/pygi-foreign-cairo.c |  36 +-
- gi/pygi-foreign-cairo.h |  36 +-
- gi/pygi-foreign.c       |  54 +--
- gi/pygi-foreign.h       |  10 +-
- gi/pygi-info.c          | 646 ++++++++++++++++----------------
- gi/pygi-invoke.c        | 380 +++++++++----------
- gi/pygi-repository.c    | 114 +++---
- gi/pygi-struct.c        |  88 ++---
- gi/pygi-type.c          |  32 +-
- gi/pygi.h               |  20 +-
- gi/pygobject-external.h |  14 +-
+ gi/gimodule.c           138 +++----
+ gi/pygi-argument.c      960
+ +++++++++++++++++++++++------------------------
+ gi/pygi-boxed.c         108 +++---
+ gi/pygi-callbacks.c     154 ++++----
+ gi/pygi-callbacks.h       8 +-
+ gi/pygi-closure.c      |  270 ++++++-------
+ gi/pygi-closure.h        18 +-
+ gi/pygi-foreign-cairo.c |   36 +-
+ gi/pygi-foreign-cairo.h |   36 +-
+ gi/pygi-foreign.c        54 +--
+ gi/pygi-foreign.h        10 +-
+ gi/pygi-info.c                 |  646 +++++++++++++++----------------
+ gi/pygi-invoke.c        380 +++++++++----------
+ gi/pygi-repository.c    114 +++---
+ gi/pygi-struct.c         88 ++---
+ gi/pygi-type.c                 |   32 +-
+ gi/pygi.h                20 +-
+ gi/pygobject-external.h |   14 +-
  18 files changed, 1544 insertions(+), 1542 deletions(-)
 
 commit 6156f15cb15b4c20e975527227135d49207c520a
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue May 25 14:08:51 2010 +0200
+Date:  Tue May 25 14:08:51 2010 +0200
 
     Prepend gi.repository to the __module__ attribute of wrapper classes.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619597
 
- gi/module.py     | 4 ++--
- tests/test_gi.py | 4 +++-
+ gi/module.py    |    4 ++--
+ tests/test_gi.py |    4 +++-
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 commit 097b92983b7a322c58fecb1e691ba6ddf5035548
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Tue May 25 14:17:13 2010 +0200
+Date:  Tue May 25 14:17:13 2010 +0200
 
     Correctly identify at creation time:
 
@@ -32306,23 +14316,23 @@ Date:   Tue May 25 14:17:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619604
 
- gi/types.py | 15 +++++++++++----
+ gi/types.py |  15 +++++++++++----
  1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 686e10fcdb108af9758eb025a3447813c3513a93
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 29 10:55:13 2010 +0200
+Date:  Thu Apr 29 10:55:13 2010 +0200
 
     Dont complain if another base has implemented the method
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617153
 
- gi/types.py | 3 ++-
+ gi/types.py |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 9f34d120845d936b04546a5cea599ec67e9181a7
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon May 24 16:16:50 2010 -0400
+Date:  Mon May 24 16:16:50 2010 -0400
 
     fix up Builder override, add new override methods, and add unit tests
 
@@ -32334,14 +14344,14 @@ Date:   Mon May 24 16:16:50 2010 -0400
     * add test that loads objects from strings and connects them to
     signals
 
- gi/overrides/Gtk.py     | 19 +++++++++++--
- tests/test_overrides.py | 72
- ++++++++++++++++++++++++++++++++++++++++++++++---
+ gi/overrides/Gtk.py    |   19 +++++++++++--
+ tests/test_overrides.py |   72
+ +++++++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 86 insertions(+), 5 deletions(-)
 
 commit 1561d2977691f1cb8684f183a2e274c47960d931
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Mon May 24 18:48:10 2010 +0200
+Date:  Mon May 24 18:48:10 2010 +0200
 
     Improve handling of subclasses without __gtype_name__
 
@@ -32349,34 +14359,35 @@ Date:   Mon May 24 18:48:10 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616849
 
- gi/gimodule.c    |  9 +++++++++
- tests/test_gi.py | 13 ++++++++++++-
+ gi/gimodule.c   |    9 +++++++++
+ tests/test_gi.py |   13 ++++++++++++-
  2 files changed, 21 insertions(+), 1 deletion(-)
 
 commit c9d44d4d46c3da3a445000b1db592baa9c378a92
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Apr 30 18:17:50 2010 +0200
+Date:  Fri Apr 30 18:17:50 2010 +0200
 
     Add support for GArray args
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617054
 
- gi/pygi-invoke.c | 11 +++++++----
- tests/test_gi.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c |   11 +++++++----
+ tests/test_gi.py |   50
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 57 insertions(+), 4 deletions(-)
 
 commit c171579ee22681e1ee4ad33441c89f1053bdc3d1
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon May 24 11:48:16 2010 -0400
+Date:  Mon May 24 11:48:16 2010 -0400
 
     check refcounting of callback userdata in unit tests
 
- tests/test_everything.py | 18 ++++++++++++++++++
+ tests/test_everything.py |   18 ++++++++++++++++++
  1 file changed, 18 insertions(+)
 
 commit 8eb809468fe3e1f8e4f92bd7f25d96f9cf802cd4
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Sat May 22 15:12:37 2010 +0200
+Date:  Sat May 22 15:12:37 2010 +0200
 
     Add support for out args in callbacks
 
@@ -32387,14 +14398,14 @@ Date:   Sat May 22 15:12:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617780
 
- gi/pygi-closure.c | 335
- +++++++++++++++++++++++++++++++++++++++++-------------
- tests/test_gi.py  |   4 +
+ gi/pygi-closure.c |  335
+ +++++++++++++++++++++++++++++++++++++++++------------
+ tests/test_gi.py  |   4 +
  2 files changed, 263 insertions(+), 76 deletions(-)
 
 commit 0df0c956bb2476392c9d81f0a243a7e84c067166
 Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-Date:   Sun May 23 10:59:27 2010 +0200
+Date:  Sun May 23 10:59:27 2010 +0200
 
     If None is passed to an interface which takes an object, convert it to
     NULL
@@ -32408,13 +14419,13 @@ Date:   Sun May 23 10:59:27 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617880
 
- gi/pygi-argument.c       | 5 +++++
- tests/test_everything.py | 6 ++++++
+ gi/pygi-argument.c      |    5 +++++
+ tests/test_everything.py |    6 ++++++
  2 files changed, 11 insertions(+)
 
 commit 60fdf4b8f738dd0f5c190bc18ddf010032d3c5ca
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat May 22 14:06:37 2010 +0200
+Date:  Sat May 22 14:06:37 2010 +0200
 
     correctly handle floating objects in gtk
 
@@ -32428,13 +14439,13 @@ Date:   Sat May 22 14:06:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619007
 
- gi/gimodule.c            | 12 ++++++++++++
- tests/test_everything.py |  3 +++
+ gi/gimodule.c           |   12 ++++++++++++
+ tests/test_everything.py |    3 +++
  2 files changed, 15 insertions(+)
 
 commit 4b369f8aca980fc6a582094d6648f40fe4af5e9f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat May 22 13:21:30 2010 +0200
+Date:  Sat May 22 13:21:30 2010 +0200
 
     Return an empty list when a NULL GList and GSList is returned
 
@@ -32446,21 +14457,21 @@ Date:   Sat May 22 13:21:30 2010 +0200
     GList or
       GSList return
     * Many PyGtk apps do this:
-        for i in range(len(obj.get_list())):
-            ...
+       for i in range(len(obj.get_list())):
+           ...
     * If we were to continue to return None, they would have to add
     a check
       which is needlessly verbose and isn't very "pythonic"
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619232
 
- gi/pygi-argument.c       | 6 ------
- tests/test_everything.py | 4 ++--
+ gi/pygi-argument.c      |    6 ------
+ tests/test_everything.py |    4 ++--
  2 files changed, 2 insertions(+), 8 deletions(-)
 
 commit 71a2148b00dfdda99e0d961ae39b901608724e59
 Author: Steve Frécinaux <code@istique.net>
-Date:   Fri May 21 19:05:03 2010 +0200
+Date:  Fri May 21 19:05:03 2010 +0200
 
     Fix warning in configure.
 
@@ -32469,23 +14480,23 @@ Date:   Fri May 21 19:05:03 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619311
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit aa0357e468eb91e0f3707346e9b32f312fbf51d3
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 29 13:06:15 2010 +0200
+Date:  Thu Apr 29 13:06:15 2010 +0200
 
     GTypeInterface cannot be unrefed
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617159
 
- gi/gimodule.c | 4 +++-
+ gi/gimodule.c |    4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit ab1aaff108d23aabd28c3634edfb67236eb55460
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Sat May 22 13:09:48 2010 +0200
+Date:  Sat May 22 13:09:48 2010 +0200
 
     fix NULL array unit tests and fix crasher when sending None as
     an array
@@ -32515,19 +14526,19 @@ Date:   Sat May 22 13:09:48 2010 +0200
 
     * Fixing up the tests revealed a latent crasher bug when passing
     None to an
-      interface that accepts an array.  The fix was to check for NULL
+      interface that accepts an array. The fix was to check for NULL
       and set
       the length argument to 0 when invoking the bound method.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619235
 
- gi/pygi-invoke.c         | 6 +++++-
- tests/test_everything.py | 4 ++--
+ gi/pygi-invoke.c        |    6 +++++-
+ tests/test_everything.py |    4 ++--
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 commit e928ea9b1df9d87314ff8e93479530e26be9bd87
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri May 14 14:57:27 2010 -0400
+Date:  Fri May 14 14:57:27 2010 -0400
 
     don't error out on methods with callbacks as return type
 
@@ -32538,12 +14549,12 @@ Date:   Fri May 14 14:57:27 2010 -0400
       API such as this doesn't need to be used anymore and is a result of
       early GTK development
 
- gi/pygi-argument.c | 14 +++++++++++---
+ gi/pygi-argument.c |  14 +++++++++++---
  1 file changed, 11 insertions(+), 3 deletions(-)
 
 commit d963007aab123f4e53a944a66a935db2d22907c2
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Mon May 17 11:54:34 2010 -0400
+Date:  Mon May 17 11:54:34 2010 -0400
 
     reset sys.argv to the return value of Gtk.init_check
 
@@ -32557,177 +14568,177 @@ Date:   Mon May 17 11:54:34 2010 -0400
       new modified argument list
     * fixes https://bugzilla.gnome.org/show_bug.cgi?id=618889
 
- gi/overrides/Gtk.py | 1 +
+ gi/overrides/Gtk.py |   1 +
  1 file changed, 1 insertion(+)
 
 commit 897420ed97cc4a7b8a806894df5e76ed72617614
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed May 12 14:25:32 2010 -0400
+Date:  Wed May 12 14:25:32 2010 -0400
 
     add GtkUIManager and GtkActionGroup overrides
 
     * fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=618476
 
- gi/overrides/Gtk.py     | 167
- +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_overrides.py |  45 +++++++++++++
+ gi/overrides/Gtk.py     167
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py |   45 +++++++++++++
  2 files changed, 211 insertions(+), 1 deletion(-)
 
 commit 865939d29c1e9d69dbe6b9cf89477b5516dbff1f
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Thu May 13 01:02:24 2010 -0400
+Date:  Thu May 13 01:02:24 2010 -0400
 
     Bump version for development to 0.5.2 (hopefully 0.6)
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2674a9546b0246d4a75d71cf1708df77dc0173f9
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Wed May 5 15:54:39 2010 +0200
+Date:  Wed May 5 15:54:39 2010 +0200
 
     Fix overrides.Gdk.Color.__new__ args
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617757
 
- gi/overrides/Gdk.py     |  2 +-
- tests/Makefile.am       |  3 ++-
- tests/test_overrides.py | 22 ++++++++++++++++++++++
+ gi/overrides/Gdk.py    |    2 +-
+ tests/Makefile.am      |    3 ++-
+ tests/test_overrides.py |   22 ++++++++++++++++++++++
  3 files changed, 25 insertions(+), 2 deletions(-)
 
 commit c20b9f632a35bada1320ccc10fb7d5b2c06b9a88
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Thu Apr 29 14:55:33 2010 -0400
+Date:  Thu Apr 29 14:55:33 2010 -0400
 
     wrap GObject module so we can go through GI when requesting attrs
 
     * This gives us the best of both worlds.
       - We remain backwards compatable with pygobject by checking for
       existing
-        attrs in the gobject module
+       attrs in the gobject module
       - If an attr does not exist we use the GI mechanism to look it up
       so that
-        things like flags look the same whether exported from GObject, Gtk
-        or any GI managed library
+       things like flags look the same whether exported from GObject, Gtk
+       or any GI managed library
 
     * add DynamicGObjectModule tests and make tests use the new module
       - change import gobject to from gi.repository import GObject
 
- gi/importer.py           |  6 ++--
- gi/module.py             | 30 ++++++++++++++++
- tests/test_everything.py |  6 ++--
- tests/test_gi.py         | 93
- ++++++++++++++++++++++++++----------------------
+ gi/importer.py                  |    6 +--
+ gi/module.py            |   30 +++++++++++++++
+ tests/test_everything.py |    6 +--
+ tests/test_gi.py        |   93
+ +++++++++++++++++++++++++---------------------
  4 files changed, 87 insertions(+), 48 deletions(-)
 
 commit 64324a4c629432b2e688299b6edbfd5da4439a2a
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Fri Apr 30 14:11:55 2010 -0400
+Date:  Fri Apr 30 14:11:55 2010 -0400
 
     override Gdk.Drawable to add cairo_create convinience method
 
- gi/overrides/Gdk.py | 7 ++++++-
+ gi/overrides/Gdk.py |   7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 17fa1289b1e2ed841dd5de09a2ec7c25d401886e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon May 3 19:13:46 2010 +0200
+Date:  Mon May 3 19:13:46 2010 +0200
 
     Fix passing callbacks as constructor args
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617551
 
- gi/pygi-callbacks.c      |  3 ++-
- gi/pygi-callbacks.h      |  1 +
- gi/pygi-invoke.c         |  7 +++++--
- tests/test_everything.py | 21 +++++++++++++++++++++
+ gi/pygi-callbacks.c     |    3 ++-
+ gi/pygi-callbacks.h     |    1 +
+ gi/pygi-invoke.c        |    7 +++++--
+ tests/test_everything.py |   21 +++++++++++++++++++++
  4 files changed, 29 insertions(+), 3 deletions(-)
 
 commit f9fff978d56ddf2c012b906169ae16abb7fdc2a5
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Wed May 5 08:06:03 2010 +0200
+Date:  Wed May 5 08:06:03 2010 +0200
 
     Avoid freeing garbage
 
- gi/pygi-invoke.c | 6 ++++--
+ gi/pygi-invoke.c |    6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 5e20c018ae09a936f5ff140df5d1c133c98e98ba
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 29 13:09:03 2010 +0200
+Date:  Thu Apr 29 13:09:03 2010 +0200
 
     Only hookup vfunc implementations for locally-defined methods
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617160
 
- gi/types.py      | 10 +++++++++-
- tests/test_gi.py | 10 ++++++++++
+ gi/types.py     |   10 +++++++++-
+ tests/test_gi.py |   10 ++++++++++
  2 files changed, 19 insertions(+), 1 deletion(-)
 
 commit 3e61e7d4450a2bb133c7f3862e0962a35339ce8d
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon May 3 18:35:13 2010 +0200
+Date:  Mon May 3 18:35:13 2010 +0200
 
     Fix passing GDestroyNotify
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617542
 
- gi/pygi-invoke.c         |  3 ++-
- tests/test_everything.py | 10 ++++++++++
+ gi/pygi-invoke.c        |    3 ++-
+ tests/test_everything.py |   10 ++++++++++
  2 files changed, 12 insertions(+), 1 deletion(-)
 
 commit 9669acd0fad193013ef3505ae231588307f9834c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon May 3 12:23:58 2010 +0200
+Date:  Mon May 3 12:23:58 2010 +0200
 
     Move invocation code to its own file
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617107
 
- gi/Makefile.am    |   2 +
- gi/pygi-info.c    | 884
- ----------------------------------------------------
- gi/pygi-invoke.c  | 909
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.h  |  37 +++
- gi/pygi-private.h |   1 +
+ gi/Makefile.am    |   2 +
+ gi/pygi-info.c    |  884
+ ---------------------------------------------------
+ gi/pygi-invoke.c  |  909
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.h  |   37 +++
+ gi/pygi-private.h |   1 +
  5 files changed, 949 insertions(+), 884 deletions(-)
 
 commit 9b923a68dfde06fc2df6321b3f1e53f1c57b3666
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Tue Apr 27 19:13:08 2010 -0400
+Date:  Tue Apr 27 19:13:08 2010 -0400
 
     Add the Gtk.Builder override
 
- gi/overrides/Gtk.py | 37 ++++++++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py |  37 ++++++++++++++++++++++++++++++++++++-
  1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit 9fc6783406b8263ebd67ceae2730b4e86689b43e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Apr 30 15:00:52 2010 +0200
+Date:  Fri Apr 30 15:00:52 2010 +0200
 
     Fix GAsyncReadyCallback
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616236
 
- gi/pygi-closure.c        |  8 +++++++-
- tests/test_everything.py | 16 ++++++++++++++++
+ gi/pygi-closure.c       |    8 +++++++-
+ tests/test_everything.py |   16 ++++++++++++++++
  2 files changed, 23 insertions(+), 1 deletion(-)
 
 commit 5657ccaaec09e2a3194ea2e9a923724bcc66759e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 29 18:32:50 2010 +0200
+Date:  Thu Apr 29 18:32:50 2010 +0200
 
     Add override for Gdk.Color
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617162
 
- gi/overrides/Gdk.py | 20 +++++++++++++++++++-
+ gi/overrides/Gdk.py |  20 +++++++++++++++++++-
  1 file changed, 19 insertions(+), 1 deletion(-)
 
 commit 4410abd589a2f64cfbd7bbcb4013fae9e4aa734f
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Apr 28 13:19:48 2010 -0400
+Date:  Wed Apr 28 13:19:48 2010 -0400
 
     make __all__ be a list of strings, fix override mechanism to use
     it correctly
@@ -32739,28 +14750,28 @@ Date:   Wed Apr 28 13:19:48 2010 -0400
       against None as well as in __all__
     * went through all the overrides and made __all__ be a list of strings
 
- gi/module.py                       | 9 ++++-----
- gi/overrides/GIMarshallingTests.py | 2 +-
- gi/overrides/Gdk.py                | 2 +-
+ gi/module.py                      |    9 ++++-----
+ gi/overrides/GIMarshallingTests.py |   2 +-
+ gi/overrides/Gdk.py               |    2 +-
  3 files changed, 6 insertions(+), 7 deletions(-)
 
 commit 64fa8f936bad9a90628df446e690d67d947a0a22
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon Apr 26 11:41:06 2010 +0200
+Date:  Mon Apr 26 11:41:06 2010 +0200
 
     One more step at refactoring _wrap_g_function_info_invoke
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616357
 
- gi/pygi-callbacks.c |  22 +-
- gi/pygi-callbacks.h |   4 +-
- gi/pygi-info.c      | 582
- ++++++++++++++++++++++++++++++----------------------
+ gi/pygi-callbacks.c |  22 +-
+ gi/pygi-callbacks.h |   4 +-
+ gi/pygi-info.c      | 582
+ +++++++++++++++++++++++++++++----------------------
  3 files changed, 346 insertions(+), 262 deletions(-)
 
 commit 7fc5528273edae5ecdd5d8bdf0e5b898eec7a624
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 23:23:38 2010 -0400
+Date:  Tue Apr 20 23:23:38 2010 -0400
 
     Step 1 of refactoring _wrap_g_function_info_invoke
 
@@ -32770,25 +14781,25 @@ Date:   Tue Apr 20 23:23:38 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616357
 
- gi/pygi-info.c | 417
- +++++++++++++++++++++++++++++----------------------------
+ gi/pygi-info.c |  417
+ +++++++++++++++++++++++++++++---------------------------
  1 file changed, 214 insertions(+), 203 deletions(-)
 
 commit 1d9c6b6d76a3e27f66e6f0cfc7b16c5191e4fc22
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Apr 27 10:24:35 2010 +0200
+Date:  Tue Apr 27 10:24:35 2010 +0200
 
     Dont force subclasses to implement all virtual methods of their bases
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616674
 
- gi/types.py      |  4 ++--
- tests/test_gi.py | 15 +++++++++++++++
+ gi/types.py     |    4 ++--
+ tests/test_gi.py |   15 +++++++++++++++
  2 files changed, 17 insertions(+), 2 deletions(-)
 
 commit 8a0c48f4dd512797e5cf132f8ec6fb6d4d1e7aaa
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sun Apr 25 15:09:08 2010 -0400
+Date:  Sun Apr 25 15:09:08 2010 -0400
 
     Correct the reference counting of userdata in closure handling
 
@@ -32798,27 +14809,27 @@ Date:   Sun Apr 25 15:09:08 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616786
 
- gi/pygi-closure.c        |  3 +++
- tests/test_everything.py | 13 +++++++++++++
+ gi/pygi-closure.c       |    3 +++
+ tests/test_everything.py |   13 +++++++++++++
  2 files changed, 16 insertions(+)
 
 commit 2b12049306bf57513c43d08017185468bf897a4a
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 22:57:14 2010 -0400
+Date:  Tue Apr 20 22:57:14 2010 -0400
 
     Change SCOPE_TYPE_INVALID handling to be a more verbose error.
 
-    (Previous commit did not include the proper error message.  I blame
+    (Previous commit did not include the proper error message. I blame
     git-bz)
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
- gi/pygi-closure.c | 4 ++--
+ gi/pygi-closure.c |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8240320d0b67074ce91bdf7aadcf5951c5a8c45a
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 23:53:57 2010 -0400
+Date:  Tue Apr 20 23:53:57 2010 -0400
 
     Force out arguments to be initialized as NULL.  Comes with a test.
 
@@ -32833,13 +14844,13 @@ Date:   Tue Apr 20 23:53:57 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616043
 
- gi/pygi-info.c   | 1 +
- tests/test_gi.py | 3 +++
+ gi/pygi-info.c   |    1 +
+ tests/test_gi.py |    3 +++
  2 files changed, 4 insertions(+)
 
 commit 10e558ca283cdd06725bb0d24b5071ccbecc7d13
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 22:57:14 2010 -0400
+Date:  Tue Apr 20 22:57:14 2010 -0400
 
     Change SCOPE_TYPE_INVALID handling to be a warning and not an error
 
@@ -32851,43 +14862,43 @@ Date:   Tue Apr 20 22:57:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
- gi/pygi-closure.c | 3 ++-
+ gi/pygi-closure.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit d3b5fae9d609dbcd83deb0fa9102b24faf76787c
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 22:43:20 2010 -0400
+Date:  Tue Apr 20 22:43:20 2010 -0400
 
     Refactor implementation of scope call to allow for multiple calls
     during lifetime of function invocation.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616343
 
- gi/pygi-closure.c        | 10 +++++-----
- gi/pygi-info.c           |  9 +++++++--
- tests/test_everything.py |  9 +++++++++
+ gi/pygi-closure.c       |   10 +++++-----
+ gi/pygi-info.c                  |    9 +++++++--
+ tests/test_everything.py |    9 +++++++++
  3 files changed, 21 insertions(+), 7 deletions(-)
 
 commit 3ba666b7ab9c393963922c272e7d87bff50a93f9
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Jan 2 16:31:55 2010 +0100
+Date:  Sat Jan 2 16:31:55 2010 +0100
 
     Add basic support for unions
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603598
 
- gi/module.py       |  3 +-
- gi/pygi-argument.c | 24 +++-----------
- gi/pygi-boxed.c    | 18 +++++++++--
- gi/pygi-info.c     | 94
- ++++++++++++++++++++++++++++++++++++++++++++++++------
- gi/pygi-info.h     |  1 +
- tests/test_gi.py   | 56 ++++++++++++++++++++++++++++++++
+ gi/module.py      |    3 +-
+ gi/pygi-argument.c |  24 +++-----------
+ gi/pygi-boxed.c    |  18 ++++++++--
+ gi/pygi-info.c     |  94
+ +++++++++++++++++++++++++++++++++++++++++++++++-----
+ gi/pygi-info.h     |   1 +
+ tests/test_gi.py   |  56 +++++++++++++++++++++++++++++++
  6 files changed, 165 insertions(+), 31 deletions(-)
 
 commit af9e4e086d160fe7fb24758ed81753e784b198a8
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Jan 22 22:16:32 2010 +0100
+Date:  Fri Jan 22 22:16:32 2010 +0100
 
     Bump required GLib version to 2.22
 
@@ -32895,59 +14906,59 @@ Date:   Fri Jan 22 22:16:32 2010 +0100
     keep PyGI
     backward-compatible.
 
- configure.ac      |  2 +-
- gi/pygi-private.h | 20 --------------------
+ configure.ac     |    2 +-
+ gi/pygi-private.h |   20 --------------------
  2 files changed, 1 insertion(+), 21 deletions(-)
 
 commit c0f40de5648e2ebc556c449342a0025ffce2e33b
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 11:50:14 2010 -0400
+Date:  Sun Apr 18 11:50:14 2010 -0400
 
     Refactor get_* methods in the *Info wrappers
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616108
 
- gi/pygi-info.c | 360
- +++++++++++++++++++++++++++------------------------------
+ gi/pygi-info.c |  360
+ ++++++++++++++++++++++++++------------------------------
  1 file changed, 168 insertions(+), 192 deletions(-)
 
 commit 24bb89f1310dc2fc8ee6ddaf945342ebf80055cd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Apr 20 15:12:47 2010 +0200
+Date:  Tue Apr 20 15:12:47 2010 +0200
 
     Print any error messages raised inside _pygi_closure_handle
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616279
 
- gi/pygi-closure.c | 9 +++++----
+ gi/pygi-closure.c |   9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit d1ba23cdd05686ea721425f233371d573a2e9cce
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 22 19:57:17 2010 +0200
+Date:  Thu Apr 22 19:57:17 2010 +0200
 
     Rename variable with a very generic name
 
- gi/module.py | 28 ++++++++++++++--------------
+ gi/module.py |   28 ++++++++++++++--------------
  1 file changed, 14 insertions(+), 14 deletions(-)
 
 commit 391640b30ede50af3667b1019edb72bd79f2c68c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 22 19:53:06 2010 +0200
+Date:  Thu Apr 22 19:53:06 2010 +0200
 
     Add support for enums without GType
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616520
 
- gi/module.py       |  6 +++++-
- gi/pygi-argument.c | 22 +++++++++++++++++++++-
- gi/types.py        | 14 ++++++++++++++
- tests/test_gi.py   | 30 ++++++++++++++++++++++++++++--
+ gi/module.py      |    6 +++++-
+ gi/pygi-argument.c |  22 +++++++++++++++++++++-
+ gi/types.py       |   14 ++++++++++++++
+ tests/test_gi.py   |  30 ++++++++++++++++++++++++++++--
  4 files changed, 68 insertions(+), 4 deletions(-)
 
 commit 89704f60ddae0c81f1383d86491ef2785590a353
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Tue Apr 20 22:20:42 2010 -0400
+Date:  Tue Apr 20 22:20:42 2010 -0400
 
     Bump version during development to 0.5.1
 
@@ -32957,217 +14968,217 @@ Date:   Tue Apr 20 22:20:42 2010 -0400
     not the version after.  Thus after a release you make a new commit
     bumping to the next development version.
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e203dc7c8f524c16aa52e15758dc3a2b09fbac75
 Author: John Ehresman <jpe@wingware.com>
-Date:   Tue Apr 20 20:40:02 2010 -0400
+Date:  Tue Apr 20 20:40:02 2010 -0400
 
     Added missing , to keyword list of gio.GFile.set_attribute
 
- gio/gresolver.override | 2 +-
+ gio/gresolver.override |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0b222f01ac9ceea1d127083623ad532ecc75bf7e
 Author: John Ehresman <jpe@wingware.com>
-Date:   Tue Apr 20 20:37:12 2010 -0400
+Date:  Tue Apr 20 20:37:12 2010 -0400
 
     Fix arg conversion in gio.GFile.set_attribute
 
- gio/gfile.override | 232
- +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gio/gfile.override |  232
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 227 insertions(+), 5 deletions(-)
 
 commit a579ccc8bea90937bf970be3d461e2b650b0c7d6
 Author: John Ehresman <jpe@wingware.com>
-Date:   Tue Apr 20 20:01:53 2010 -0400
+Date:  Tue Apr 20 20:01:53 2010 -0400
 
     Set constants under python 2.5 or before
 
- gobject/gobjectmodule.c | 8 ++++++++
+ gobject/gobjectmodule.c |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 11fa39a861abf679e01b5f0da97be93ae0adf0f0
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Sun Apr 18 20:22:21 2010 -0400
+Date:  Sun Apr 18 20:22:21 2010 -0400
 
-            Doc Extractor: Use replacements that make sense for &...;
-            expressions.
+       Doc Extractor: Use replacements that make sense for &...;
+       expressions.
 
-            * codegen/docextract_to_xml.py: Use &#35; and &#160;
-            respectively for
-            &num; (#) and &nbsp;.  These are interpreted correctly in
-            XML and will
-            not make the parsing crash.
+       * codegen/docextract_to_xml.py: Use &#35; and &#160; respectively
+       for
+       &num; (#) and &nbsp;.  These are interpreted correctly in XML
+       and will
+       not make the parsing crash.
 
- codegen/docextract_to_xml.py | 4 ++--
+ codegen/docextract_to_xml.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8dbc2cb016acef7b364804cd9bc8f0b1da37e84b
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sun Apr 18 14:32:06 2010 -0400
+Date:  Sun Apr 18 14:32:06 2010 -0400
 
     Bump version for release 0.5.0
 
- HACKING      | 7 +++++++
- configure.ac | 4 ++--
+ HACKING      |    7 +++++++
+ configure.ac |    4 ++--
  2 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 3293c91d90c5c497b45e42a527d7f79f7435823e
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 14:28:13 2010 -0400
+Date:  Sun Apr 18 14:28:13 2010 -0400
 
     One more missing file...
 
- examples/Makefile.am | 2 ++
+ examples/Makefile.am |    2 ++
  1 file changed, 2 insertions(+)
 
 commit 1dc575af19fe985cc3fa3ec0cf18aeab1f43c16d
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 14:18:44 2010 -0400
+Date:  Sun Apr 18 14:18:44 2010 -0400
 
     Add more stuff to the tarballs
 
- Makefile.am  | 8 +++++++-
- configure.ac | 1 +
+ Makefile.am  |    8 +++++++-
+ configure.ac |    1 +
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit 8a9bb04755057e934b7f46c917af6ef281a2fedd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 13:48:45 2010 -0400
+Date:  Sun Apr 18 13:48:45 2010 -0400
 
     Add one more missing file to tarballs
 
- gi/overrides/GIMarshallingTests.py | 0
- gi/overrides/Makefile.am           | 1 +
- 2 files changed, 1 insertion(+)
+ gi/overrides/Makefile.am |    1 +
+ 1 file changed, 1 insertion(+)
 
 commit 979e01852fc7f830ee91093accdc387fa535075f
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 13:45:29 2010 -0400
+Date:  Sun Apr 18 13:45:29 2010 -0400
 
     Add missing file to tarballs
 
- tests/Makefile.am | 1 +
+ tests/Makefile.am |   1 +
  1 file changed, 1 insertion(+)
 
 commit 8b70faa7a9a32b9ea8862f28a503e38f496cfd89
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 13:11:11 2010 -0400
+Date:  Sun Apr 18 13:11:11 2010 -0400
 
     Implement vfuncs.
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602736
 
- gi/gimodule.c       | 89
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-argument.c  |  1 +
- gi/pygi-callbacks.c |  3 +-
- gi/pygi-closure.c   |  4 +--
- gi/pygi-closure.h   |  2 +-
- gi/pygi-info.c      | 86
- +++++++++++++++++++++++++++++++++++++++++++++++++--
- gi/pygi-info.h      |  1 +
- gi/types.py         | 44 +++++++++++++++++---------
- tests/test_gi.py    | 18 +++++++++++
+ gi/gimodule.c      |   89
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c  |   1 +
+ gi/pygi-callbacks.c |   3 +-
+ gi/pygi-closure.c   |   4 +--
+ gi/pygi-closure.h   |   2 +-
+ gi/pygi-info.c      |  86
+ +++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-info.h      |   1 +
+ gi/types.py        |   44 +++++++++++++++++--------
+ tests/test_gi.py    |  18 +++++++++++
  9 files changed, 227 insertions(+), 21 deletions(-)
 
 commit e239faacb4798fe2d166233ca1a19a843a6225e3
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sun Apr 18 11:59:06 2010 -0400
+Date:  Sun Apr 18 11:59:06 2010 -0400
 
     Fix a typo in pygi-callbacks.c header
 
- gi/pygi-callbacks.c | 2 +-
+ gi/pygi-callbacks.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 79aa416ae8632b123da61d79fb820d9e2704209c
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sat Apr 17 12:00:05 2010 -0400
+Date:  Sat Apr 17 12:00:05 2010 -0400
 
     Implement nullable argument support, including tests
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616035
 
- gi/pygi-argument.c       | 43 +++++++++++++++++++++++++++++++++++++------
- gi/pygi-argument.h       |  3 ++-
- gi/pygi-info.c           | 19 +++++++++++++------
- tests/test_everything.py | 28 ++++++++++++++++++++++++++++
+ gi/pygi-argument.c      |   43
+ +++++++++++++++++++++++++++++++++++++------
+ gi/pygi-argument.h      |    3 ++-
+ gi/pygi-info.c                  |   19 +++++++++++++------
+ tests/test_everything.py |   28 ++++++++++++++++++++++++++++
  4 files changed, 80 insertions(+), 13 deletions(-)
 
 commit 7d533b8893bc4a8a82fd9708278fa1dce5d3551e
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sat Apr 17 12:56:19 2010 -0400
+Date:  Sat Apr 17 12:56:19 2010 -0400
 
     Move some tests from test_gi to test_everything
 
- tests/test_everything.py | 60
- ++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py         | 62
- +-----------------------------------------------
+ tests/test_everything.py |   60
+ ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py        |   62
+ +---------------------------------------------
  2 files changed, 61 insertions(+), 61 deletions(-)
 
 commit a90298cc9e6c0f336f887a71d80b1efd07ec2811
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Apr 18 10:44:35 2010 -0400
+Date:  Sun Apr 18 10:44:35 2010 -0400
 
     Update to latest version of the pygi-convert.sh script
 
- pygi-convert.sh | 193
- ++++++++++++++++++++++++++++++++++++++++----------------
+ pygi-convert.sh |  193
+ +++++++++++++++++++++++++++++++++++++++----------------
  1 file changed, 137 insertions(+), 56 deletions(-)
 
 commit 34a39318c674737c6d64f2430456daef86ba1626
 Author: Colin Walters <walters@verbum.org>
-Date:   Sun Apr 18 10:40:44 2010 -0400
+Date:  Sun Apr 18 10:40:44 2010 -0400
 
     Add Tomeu's prototype script for converting pygtk to pygi
 
- pygi-convert.sh | 71
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ pygi-convert.sh |   71
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 71 insertions(+)
 
 commit a3afdb5fd33de0bf11d63857a245a8f5edec242c
 Author: Olav Vitters <olav@vitters.nl>
-Date:   Sun Apr 18 13:01:58 2010 +0200
+Date:  Sun Apr 18 13:01:58 2010 +0200
 
     Fix doap file
 
- pygi.doap | 4 ++++
+ pygi.doap |   4 ++++
  1 file changed, 4 insertions(+)
 
 commit 0de73d0bba79f92af22f43693f3575c596712416
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sat Apr 17 16:01:31 2010 -0400
+Date:  Sat Apr 17 16:01:31 2010 -0400
 
     Add Zach Goldberg as a pygi maintainer
 
- pygi.doap | 5 +++++
+ pygi.doap |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit a0e22e36e8cf0c1e0da3c0ec48c821fdb5a07ccd
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Apr 17 11:47:54 2010 -0400
+Date:  Sat Apr 17 11:47:54 2010 -0400
 
     Require PyCairo
 
- configure.ac | 7 +------
+ configure.ac |    7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit 2778f8a1bf6379a46beec6546c8efcb0fec2d7ad
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Apr 17 11:40:14 2010 -0400
+Date:  Sat Apr 17 11:40:14 2010 -0400
 
     Add examples/cairo-demo.py
 
- examples/cairo-demo.py | 121
- +++++++++++++++++++++++++++++++++++++++++++++++++
+ examples/cairo-demo.py |  121
+ ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit 610dd1eec87fab5c8c3badb4d104cba74477c745
 Author: Zach Goldberg <zach@zachgoldberg.com>
-Date:   Sat Apr 17 09:17:14 2010 -0400
+Date:  Sat Apr 17 09:17:14 2010 -0400
 
     Implementation callback support with scoping and basic argument
     support.
@@ -33185,90 +15196,91 @@ Date:   Sat Apr 17 09:17:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603095
 
- configure.ac        |   2 +
- gi/Makefile.am      |   4 +
- gi/pygi-argument.c  |  12 ++-
- gi/pygi-callbacks.c | 216
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-callbacks.h |  47 ++++++++++++
- gi/pygi-closure.c   | 205
- +++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-closure.h   |  57 ++++++++++++++
- gi/pygi-info.c      |  49 ++++++++++--
- gi/pygi-private.h   |   2 +
- tests/test_gi.py    |  64 +++++++++++++++-
+ configure.ac          2 +
+ gi/Makefile.am      |   4 +
+ gi/pygi-argument.c  |  12 ++-
+ gi/pygi-callbacks.c | 216
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-callbacks.h |  47 +++++++++++
+ gi/pygi-closure.c   | 205
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-closure.h   |  57 ++++++++++++++
+ gi/pygi-info.c      |  49 ++++++++++--
+ gi/pygi-private.h   |   2 +
+ tests/test_gi.py    |  64 ++++++++++++++-
  10 files changed, 648 insertions(+), 10 deletions(-)
 
 commit a34cb9f0038a6c89e5e6c5f7761d48a5a833044f
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Apr 17 10:54:45 2010 -0400
+Date:  Sat Apr 17 10:54:45 2010 -0400
 
     Add support for foreign structs
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603712
 
- configure.ac             |   6 +++
- gi/Makefile.am           |  10 +++-
- gi/gimodule.c            |   7 +++
- gi/pygi-argument.c       |  27 ++++++++++-
- gi/pygi-foreign-cairo.c  | 103 +++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign-cairo.h  |  55 +++++++++++++++++++++
- gi/pygi-foreign.c        | 123
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign.h        |  52 ++++++++++++++++++++
- gi/pygi-private.h        |   1 +
- tests/test_everything.py |  48 ++++++++++++++++++
+ configure.ac               6 +++
+ gi/Makefile.am                  |   10 +++-
+ gi/gimodule.c              7 +++
+ gi/pygi-argument.c      |   27 +++++++++-
+ gi/pygi-foreign-cairo.c  |  103 ++++++++++++++++++++++++++++++++++++++
+ gi/pygi-foreign-cairo.h  |   55 +++++++++++++++++++++
+ gi/pygi-foreign.c        123
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-foreign.h         52 ++++++++++++++++++++
+ gi/pygi-private.h          1 +
+ tests/test_everything.py |   48 ++++++++++++++++++
  10 files changed, 428 insertions(+), 4 deletions(-)
 
 commit e73b6f6fe8b5f23a2a390ae0a6bbced593ded155
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Apr 16 14:35:13 2010 -0400
+Date:  Fri Apr 16 14:35:13 2010 -0400
 
     Allow creating structs with pointers
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603537
 
- gi/pygi-struct.c | 6 ------
- tests/test_gi.py | 3 ++-
+ gi/pygi-struct.c |    6 ------
+ tests/test_gi.py |    3 ++-
  2 files changed, 2 insertions(+), 7 deletions(-)
 
 commit fc9ff02e53aacf9e77625c70985e99813544912a
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Apr 16 10:40:40 2010 -0400
+Date:  Fri Apr 16 10:40:40 2010 -0400
 
     Add gdb and valgrind variants for the tests
 
- HACKING           | 19 +++++++++++++++++++
- Makefile.am       | 12 ++++++++++++
- tests/Makefile.am | 14 +++++++++++++-
+ HACKING          |   19 +++++++++++++++++++
+ Makefile.am      |   12 ++++++++++++
+ tests/Makefile.am |   14 +++++++++++++-
  3 files changed, 44 insertions(+), 1 deletion(-)
 
 commit 695ac7bc5c60371a32538d690c7a15509f3c9637
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Fri Apr 16 14:36:11 2010 +1200
+Date:  Fri Apr 16 14:36:11 2010 +1200
 
     Add build docs for windows
 
- Makefile.am  |  1 +
- README.win32 | 24 ++++++++++++++++++++++++
+ Makefile.am  |    1 +
+ README.win32 |   24 ++++++++++++++++++++++++
  2 files changed, 25 insertions(+)
 
 commit e580da87f0b2fd36cb5d8008fb2fb0c3b01f456a
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Thu Apr 15 13:40:39 2010 +1200
+Date:  Thu Apr 15 13:40:39 2010 +1200
 
     Setup.py cosmetic tidy
 
      * Remove local doc install, point to website instead
      * link to versioned docs
 
- pygobject_postinstall.py | 43 ++++++++++++++++++++++++++-----------------
- setup.py                 | 39 ++++++++++++++-------------------------
+ pygobject_postinstall.py |   43
+ ++++++++++++++++++++++++++-----------------
+ setup.py                |   39 ++++++++++++++-------------------------
  2 files changed, 40 insertions(+), 42 deletions(-)
 
 commit 69ecd506c83ddf180c6cc9a2a8dc753a02543959
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Sat Jul 25 14:12:30 2009 +1200
+Date:  Sat Jul 25 14:12:30 2009 +1200
 
     Fix crash when importing gio
 
@@ -33276,12 +15288,12 @@ Date:   Sat Jul 25 14:12:30 2009 +1200
     no harm on linux as multiple calls to init
     are OK
 
- gio/giomodule.c | 3 +++
+ gio/giomodule.c |    3 +++
  1 file changed, 3 insertions(+)
 
 commit 5d159a13d89587cba189a0ca3203ac003e2f1f2b
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Thu Apr 15 22:52:48 2010 +1200
+Date:  Thu Apr 15 22:52:48 2010 +1200
 
     Bug 589671 - Dont use generate-constants
 
@@ -33289,18 +15301,19 @@ Date:   Thu Apr 15 22:52:48 2010 +1200
     largely unneeded. Just add the G_XXX constants
     to the module directly
 
- gobject/Makefile.am                       | 16 +----------
- gobject/{constants.py.in => constants.py} | 33 +++++++++++++++++++++++
- gobject/generate-constants.c              | 44
- -------------------------------
- gobject/gobjectmodule.c                   | 35 ++++++++++++++++++++++++
- setup.py                                  |  2 +-
- tests/runtests.py                         |  3 +--
- 6 files changed, 71 insertions(+), 62 deletions(-)
+ gobject/Makefile.am         |   16 +-------
+ gobject/constants.py        |   83
+ ++++++++++++++++++++++++++++++++++++++++++
+ gobject/constants.py.in      |   50 -------------------------
+ gobject/generate-constants.c |   44 ----------------------
+ gobject/gobjectmodule.c      |   35 ++++++++++++++++++
+ setup.py                    |    2 +-
+ tests/runtests.py           |    3 +-
+ 7 files changed, 121 insertions(+), 112 deletions(-)
 
 commit 6d7a3ab9ce352692d0faccbf106974d264fa953d
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Thu Apr 15 22:49:17 2010 +1200
+Date:  Thu Apr 15 22:49:17 2010 +1200
 
     Bug 589671 - Fix setup.py for windows build
 
@@ -33309,42 +15322,42 @@ Date:   Thu Apr 15 22:49:17 2010 +1200
     * Modernise setup.py and add more util functions
       to dsextras
 
- dsextras.py |  32 ++++++++++++++++---
- setup.py    | 102
- +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ dsextras.py |  32 ++++++++++++++++---
+ setup.py    | 102
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--------
  2 files changed, 116 insertions(+), 18 deletions(-)
 
 commit d11ef47072acae5801ce25c68d1289e425eb9fc2
 Author: John Stowers <john.stowers@gmail.com>
-Date:   Thu Apr 15 22:48:28 2010 +1200
+Date:  Thu Apr 15 22:48:28 2010 +1200
 
     Include pygsource.h
 
- glib/pygiochannel.c | 1 +
+ glib/pygiochannel.c |   1 +
  1 file changed, 1 insertion(+)
 
 commit c5f6af4844c74354abc508d17969d9d45153acf2
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Thu Apr 15 14:25:59 2010 -0400
+Date:  Thu Apr 15 14:25:59 2010 -0400
 
     Add metadata to the .doap file
 
- pygi.doap | 3 +++
+ pygi.doap |   3 +++
  1 file changed, 3 insertions(+)
 
 commit 81796cb77cbe6b9598a652bd63c047af93e747ee
 Author: John (J5) Palmieri <johnp@redhat.com>
-Date:   Wed Apr 14 12:01:43 2010 -0400
+Date:  Wed Apr 14 12:01:43 2010 -0400
 
     override that wasn't checked in - fixes some test cases
 
- gi/overrides/GIMarshallingTests.py | 69
- ++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GIMarshallingTests.py |  69
+ ++++++++++++++++++++++++++++++++++++
  1 file changed, 69 insertions(+)
 
 commit de5d2ea1584b01af809346316c7fbd4955a9db1d
 Author: Colin Walters <walters@verbum.org>
-Date:   Wed Apr 14 10:06:07 2010 -0400
+Date:  Wed Apr 14 10:06:07 2010 -0400
 
     [Makefile.am] Clean up CFLAGS handling, don't override all: target
 
@@ -33353,247 +15366,232 @@ Date:   Wed Apr 14 10:06:07 2010 -0400
     is unnecessary since we only have one target.
 
     More importantly, avoid overriding the all: target here; that's
-    owned by Automake.  Use all-local instead to append things to
+    owned by Automake. Use all-local instead to append things to
     the end of the normal build.
 
- gi/Makefile.am | 15 +++++++++------
+ gi/Makefile.am |   15 +++++++++------
  1 file changed, 9 insertions(+), 6 deletions(-)
 
 commit 5a47e96e3f580c973e6880dafa747f54c144c760
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Apr 13 19:15:49 2010 -0400
+Date:  Tue Apr 13 19:15:49 2010 -0400
 
     Use GIMarshallingTests (old TestGI) in gobject-introspection
 
  gi/overrides/TestGI.py |   69 --
- tests/Makefile.am      |   40 -
- tests/libtestgi.c      | 2924
+ tests/Makefile.am     |   40 -
+ tests/libtestgi.c     | 2924
  ------------------------------------------------
- tests/libtestgi.h      |  628 -----------
- tests/test_gi.py       |  832 +++++++-------
+ tests/libtestgi.h     |  628 -----------
+ tests/test_gi.py      |  832 +++++++-------
  5 files changed, 416 insertions(+), 4077 deletions(-)
 
 commit 681832c3cd040433a488a400693b68f213bf7078
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Tue Apr 13 13:33:12 2010 -0400
+Date:  Tue Apr 13 13:33:12 2010 -0400
 
-            codegen/docextract_to_xml.py: One more &...; replacement
-            (&nbsp;).
+       codegen/docextract_to_xml.py: One more &...; replacement (&nbsp;).
 
-            * codegen/docextract_to_xml.py: Replace &nbsp; which also
-            causes
-            errors with a regular space.
+       * codegen/docextract_to_xml.py: Replace &nbsp; which also causes
+       errors with a regular space.
 
- codegen/docextract_to_xml.py | 1 +
+ codegen/docextract_to_xml.py |    1 +
  1 file changed, 1 insertion(+)
 
 commit bd4e7f2459e34957aaae59b9be807d6dff5ec1eb
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Tue Apr 13 12:28:10 2010 -0400
+Date:  Tue Apr 13 12:28:10 2010 -0400
 
-            codegen/docextract_to_xml.py: Replace some &..; that cause
-            errors.
+       codegen/docextract_to_xml.py: Replace some &..; that cause errors.
 
-            * codegen/docextract_to_xml.py (escape_text): Replace
-            some &..;
-            expressions that cause errors with more appropriate output.
+       * codegen/docextract_to_xml.py (escape_text): Replace some &..;
+       expressions that cause errors with more appropriate output.
 
- codegen/docextract_to_xml.py | 4 ++++
+ codegen/docextract_to_xml.py |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit f00b9ce91fc9c3aabd4af4132fc112d9e415e12e
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Sun Apr 11 17:46:40 2010 -0400
+Date:  Sun Apr 11 17:46:40 2010 -0400
 
-            codegen/docextract_to_xml.py: Handle C++ multi-line comments.
+       codegen/docextract_to_xml.py: Handle C++ multi-line comments.
 
-            * codegen/docextract_to_xml.py (escape_text): Translate '/*'
-            and '*/'
-            in text to '/ *' and '* /' respectively so that comment
-            errors don't
-            show up when the descriptions that include C++ code with C++
-            multi-line comments are used in Doxygen blocks.
+       * codegen/docextract_to_xml.py (escape_text): Translate '/*'
+       and '*/'
+       in text to '/ *' and '* /' respectively so that comment errors
+       don't
+       show up when the descriptions that include C++ code with C++
+       multi-line comments are used in Doxygen blocks.
 
- codegen/docextract_to_xml.py | 9 +++++++++
+ codegen/docextract_to_xml.py |    9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit a2fcdecbb5e109da5568084d7acb2332af83b6f5
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Sun Apr 11 16:15:01 2010 -0400
+Date:  Sun Apr 11 16:15:01 2010 -0400
 
-            codegen/docextract.py: Stop final section processing on
-            first match.
+       codegen/docextract.py: Stop final section processing on first
+       match.
 
-            * codegen/docextract.py (process_final_sections): Modify
-            the final
-            section pattern matching for loop to stop on first match so
-            that it
-            doesn't match both a colon return ('Returns: ...') and a
-            no colon
-            return ('Returns ...') which leads to annotation extraction
-            errors.
+       * codegen/docextract.py (process_final_sections): Modify the final
+       section pattern matching for loop to stop on first match so
+       that it
+       doesn't match both a colon return ('Returns: ...') and a no colon
+       return ('Returns ...') which leads to annotation extraction
+       errors.
 
- codegen/docextract.py | 4 ++++
+ codegen/docextract.py |    4 ++++
  1 file changed, 4 insertions(+)
 
 commit 825fd305f03b726665edca34963978ce27448182
 Author: José Alburquerque <jaalburqu@svn.gnome.org>
-Date:   Sun Apr 11 15:45:09 2010 -0400
-
-            Update doc extraction tool to handle GObjectIntrospection
-            annotations.
-
-            * codegen/docextract.py (FunctionDoc): Renamed class to
-            GtkDoc.
-            (GtkDoc::annotations): Added a list field to store annotations
-            which
-            are 2-tuples of (name, value).
-            (GtkDoc::ret): Modified field to store the return description
-            along
-            with a list of annotations as described above.
-            (GtkDoc::params): Now holds a list of 3-tupples: name,
-            description and
-            annotations (as described above).
-            (GtkDoc::block_type): Add a field to tell if the comment
-            block is a
-            function block, signal block or property block.
-            (GtkDoc::set_type):
-            (GtkDoc::get_type): Add methods for setting/getting the
-            block type.
-            (GtkDoc::add_param): Modified to also accept a list of
-            annotations to
-            be added with the parameter.
-            (GtkDoc::add_annotation):
-            (GtkDoc::get_annotations): Added methods to add/get
-            annotations for
-            the comment block.
-            (GtkDoc::append_description): Renamed to
-            append_to_description().
-            (GtkDoc::get_param_description): Removed unused method.
-            (GtkDoc::get_description): Added method to get block
-            description.
-            (GtkDoc::add_return): Added method to add a return accepting
-            the first
-            line of the description and its annotations.
-            (GtkDoc::append_return): Renamed to append_to_return().
-            (Regular expressions):
-             - Made the names of the variables un-abbreviated.
-
-             - Added 'since', 'deprecated' and 'rename to' regular
-             expressions.
-
-             - Modified the return matching regular expression so that
-             it doesn't
-               match descriptions that begin with 'Returns ...'.
-               This improves
-               the docs of many function.
-
-             - Added signal and property comment block identifier
-             matching regular
-               expressions in case those are useful.
-
-            - Modified existing identifier matching regular expressions
-            (function,
-              signal, and property regular expressions) to properly parse
-              annotations.  Also added a regular expression for extracting
-              annotations from the parameter and return descriptions.
-
-            - Refined the function name matching regular expression to
-            only accept
-              identifiers that begin with a lowercase letter.
-              This eliminates
-              'SECTION:' matches.
-
-            - Finally, grouped commonly related expressions like
-            return_pattern,
-              since_pattern, etc.  into groups (in lists) so that
-              matching those
-              sections can be done using loops.
-
-            (Parsing algorithm): Modified the algorithm to use a
-            functional
-            approach to parsing.  Extra methods like skip_to_comment() and
-            processs_params() have been added and used in the parse_file()
-            function to now process the comment blocks.
-            (parse_dir): Added file processing output to stderr.
-            * codegen/docextract_to_xml.py (usage): Added function to
-            print out
-            the usage.
-            (print_annotations): Added function to print the given list of
-            annotations.
-            (options): Added --with-signals (-i), with-properties (-p) and
-            --with-annotation (-a) to the existing --source-dir (-s)
-            option.
-
-            (algorithm): Now prints annotations, if specified.  Also,
-            prints
-            signals and properties correctly (using names like
-            Class::signal-one
-            for signals and Classs:property) with xml such as <signal
-            name="...">...</signal>.  The return xml is slightly
-            modified with
-            annotations but this would only be exhibited if annotation
-            xml is
-            requested.
-
- codegen/docextract.py        | 439
- ++++++++++++++++++++++++++++++++++---------
- codegen/docextract_to_xml.py |  87 ++++++---
+Date:  Sun Apr 11 15:45:09 2010 -0400
+
+       Update doc extraction tool to handle GObjectIntrospection
+       annotations.
+
+       * codegen/docextract.py (FunctionDoc): Renamed class to GtkDoc.
+       (GtkDoc::annotations): Added a list field to store annotations
+       which
+       are 2-tuples of (name, value).
+       (GtkDoc::ret): Modified field to store the return description
+       along
+       with a list of annotations as described above.
+       (GtkDoc::params): Now holds a list of 3-tupples: name,
+       description and
+       annotations (as described above).
+       (GtkDoc::block_type): Add a field to tell if the comment block
+       is a
+       function block, signal block or property block.
+       (GtkDoc::set_type):
+       (GtkDoc::get_type): Add methods for setting/getting the block
+       type.
+       (GtkDoc::add_param): Modified to also accept a list of
+       annotations to
+       be added with the parameter.
+       (GtkDoc::add_annotation):
+       (GtkDoc::get_annotations): Added methods to add/get annotations
+       for
+       the comment block.
+       (GtkDoc::append_description): Renamed to append_to_description().
+       (GtkDoc::get_param_description): Removed unused method.
+       (GtkDoc::get_description): Added method to get block description.
+       (GtkDoc::add_return): Added method to add a return accepting
+       the first
+       line of the description and its annotations.
+       (GtkDoc::append_return): Renamed to append_to_return().
+       (Regular expressions):
+        - Made the names of the variables un-abbreviated.
+
+        - Added 'since', 'deprecated' and 'rename to' regular
+        expressions.
+
+        - Modified the return matching regular expression so that
+        it doesn't
+          match descriptions that begin with 'Returns ...'.
+          This improves
+          the docs of many function.
+
+        - Added signal and property comment block identifier matching
+        regular
+          expressions in case those are useful.
+
+       - Modified existing identifier matching regular expressions
+       (function,
+         signal, and property regular expressions) to properly parse
+         annotations.  Also added a regular expression for extracting
+         annotations from the parameter and return descriptions.
+
+       - Refined the function name matching regular expression to
+       only accept
+         identifiers that begin with a lowercase letter.  This eliminates
+         'SECTION:' matches.
+
+       - Finally, grouped commonly related expressions like
+       return_pattern,
+         since_pattern, etc.  into groups (in lists) so that matching
+         those
+         sections can be done using loops.
+
+       (Parsing algorithm): Modified the algorithm to use a functional
+       approach to parsing.  Extra methods like skip_to_comment() and
+       processs_params() have been added and used in the parse_file()
+       function to now process the comment blocks.
+       (parse_dir): Added file processing output to stderr.
+       * codegen/docextract_to_xml.py (usage): Added function to
+       print out
+       the usage.
+       (print_annotations): Added function to print the given list of
+       annotations.
+       (options): Added --with-signals (-i), with-properties (-p) and
+       --with-annotation (-a) to the existing --source-dir (-s) option.
+
+       (algorithm): Now prints annotations, if specified.  Also, prints
+       signals and properties correctly (using names like
+       Class::signal-one
+       for signals and Classs:property) with xml such as <signal
+       name="...">...</signal>.  The return xml is slightly modified with
+       annotations but this would only be exhibited if annotation xml is
+       requested.
+
+ codegen/docextract.py       |  439
+ +++++++++++++++++++++++++++++++++---------
+ codegen/docextract_to_xml.py |   87 ++++++---
  2 files changed, 414 insertions(+), 112 deletions(-)
 
 commit 9fef1acb42cd900d4a814a7378f60bc189121785
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Apr 9 13:47:03 2010 +0200
+Date:  Fri Apr 9 13:47:03 2010 +0200
 
     Always create the .so link
 
- gi/Makefile.am | 2 +-
+ gi/Makefile.am |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9f7fd414e94595e40eb1ba0fc471ca69136d82f
 Author: Paul Bolle <pebolle@tiscali.nl>
-Date:   Thu Apr 8 11:52:25 2010 +0200
+Date:  Thu Apr 8 11:52:25 2010 +0200
 
     Docs: replace gio.IO_ERROR_* with gio.ERROR_*
 
     Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
 
- docs/reference/pygio-file.xml        | 58
- ++++++++++++++++++------------------
- docs/reference/pygio-inputstream.xml | 22 +++++++-------
- docs/reference/pygio-mount.xml       | 10 +++----
+ docs/reference/pygio-file.xml       |   58
+ +++++++++++++++++-----------------
+ docs/reference/pygio-inputstream.xml |   22 ++++++-------
+ docs/reference/pygio-mount.xml       |   10 +++---
  3 files changed, 45 insertions(+), 45 deletions(-)
 
 commit 4cbd9941c5705970a9f7a429e236e1203d3155a1
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Apr 5 18:10:42 2010 +0200
+Date:  Mon Apr 5 18:10:42 2010 +0200
 
     Bug 613341 - pygobject tests seem to require pygtk causing a circular
     dependencies problem
 
     move tests that require pygtk to pygtk itself
 
- tests/test_conversion.py |  83 --------------
- tests/test_enum.py       | 234 --------------------------------------
- tests/test_gtype.py      | 112 ------------------
- tests/test_subtype.py    | 289
- -----------------------------------------------
+ tests/test_conversion.py |   83 -------------
+ tests/test_enum.py      |  234 -------------------------------------
+ tests/test_gtype.py      112 ------------------
+ tests/test_subtype.py    289
+ ----------------------------------------------
  4 files changed, 718 deletions(-)
 
 commit ef0ceb266a45715ece58642fb0042e3376416755
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Wed Feb 3 20:33:03 2010 +0100
+Date:  Wed Feb 3 20:33:03 2010 +0100
 
     Add modelines and copyright information to overrides modules
 
- gi/overrides/Gdk.py    | 21 +++++++++++++++++++++
- gi/overrides/Gtk.py    | 21 +++++++++++++++++++++
- gi/overrides/TestGI.py | 20 ++++++++++++++++++++
+ gi/overrides/Gdk.py   |   21 +++++++++++++++++++++
+ gi/overrides/Gtk.py   |   21 +++++++++++++++++++++
+ gi/overrides/TestGI.py |   20 ++++++++++++++++++++
  3 files changed, 62 insertions(+)
 
 commit 5106523a4b8378997a1e6cb0488398aa73e7d9d5
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Wed Feb 3 20:29:55 2010 +0100
+Date:  Wed Feb 3 20:29:55 2010 +0100
 
     Fix and complete overrides tests
 
@@ -33601,28 +15599,28 @@ Date:   Wed Feb 3 20:29:55 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/overrides/TestGI.py | 49
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py       |  8 +++++++-
+ gi/overrides/TestGI.py |   49
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py      |    8 +++++++-
  2 files changed, 56 insertions(+), 1 deletion(-)
 
 commit 23fc0f615d87994acafd9d39e92dd92b587fc2eb
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Thu Jan 21 17:30:51 2010 +0100
+Date:  Thu Jan 21 17:30:51 2010 +0100
 
     Don't raise an error in _pygi_import if pygi support is disabled
 
     http://bugzilla.gnome.org/show_bug.cgi?id=607674
 
- gobject/pygboxed.c      | 6 +-----
- gobject/pygi-external.h | 1 -
- gobject/pygobject.c     | 6 +-----
- gobject/pygpointer.c    | 6 +-----
+ gobject/pygboxed.c     |    6 +-----
+ gobject/pygi-external.h |    1 -
+ gobject/pygobject.c    |    6 +-----
+ gobject/pygpointer.c   |    6 +-----
  4 files changed, 3 insertions(+), 16 deletions(-)
 
 commit aefac8c5f64bf059dd6652f8a843d17b34fa0854
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Jan 22 22:22:37 2010 +0100
+Date:  Fri Jan 22 22:22:37 2010 +0100
 
     Remove support for pointers to basic types as input-only argument
     and return value
@@ -33633,18 +15631,18 @@ Date:   Fri Jan 22 22:22:37 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=607759
 
- gi/pygi-argument.c | 586 ++++-------------------------------------------
- gi/pygi-argument.h |   1 -
- gi/pygi-info.c     |   8 +-
- tests/libtestgi.c  | 660
- -----------------------------------------------------
- tests/libtestgi.h  |  86 -------
- tests/test_gi.py   | 144 ------------
+ gi/pygi-argument.c |  586 ++++------------------------------------------
+ gi/pygi-argument.h |   1 -
+ gi/pygi-info.c     |   8 +-
+ tests/libtestgi.c  |  660
+ ----------------------------------------------------
+ tests/libtestgi.h  |  86 -------
+ tests/test_gi.py   |  144 ------------
  6 files changed, 47 insertions(+), 1438 deletions(-)
 
 commit eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Jan 22 13:41:21 2010 +0100
+Date:  Fri Jan 22 13:41:21 2010 +0100
 
     Restore the overrides support
 
@@ -33662,41 +15660,41 @@ Date:   Fri Jan 22 13:41:21 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/importer.py      |  40 +++++++-------------
- gi/module.py        |  43 ++++++++++++++-------
- gi/overrides/Gdk.py |  42 +++++++++++++--------
- gi/overrides/Gtk.py |  16 ++++----
- gi/types.py         |   6 +++
- tests/libtestgi.c   | 105
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/libtestgi.h   |  49 ++++++++++++++++++++++++
- tests/test_gi.py    |  36 ++++++++++++++++++
+ gi/importer.py      |  40 +++++++-------------
+ gi/module.py         43 ++++++++++++++-------
+ gi/overrides/Gdk.py |  42 +++++++++++++--------
+ gi/overrides/Gtk.py |  16 ++++----
+ gi/types.py           6 +++
+ tests/libtestgi.c   | 105
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/libtestgi.h   |  49 ++++++++++++++++++++++++
+ tests/test_gi.py    |  36 ++++++++++++++++++
  8 files changed, 273 insertions(+), 64 deletions(-)
 
 commit 289d641775d1ea52d2a5379126b70b7fcee46683
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Jan 10 21:01:59 2010 +0100
+Date:  Sun Jan 10 21:01:59 2010 +0100
 
     Initialize PyGPollFD_Type.fd_obj to NULL
 
     https://bugzilla.gnome.org/show_bug.cgi?id=606582
 
- gio/gcancellable.override | 1 +
+ gio/gcancellable.override |   1 +
  1 file changed, 1 insertion(+)
 
 commit b11cf2595987c1f0fc4ffd834f07c98b92aa2355
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Jan 8 21:10:28 2010 +0100
+Date:  Fri Jan 8 21:10:28 2010 +0100
 
     Initialize struct fields to 0 when allocating
 
- gi/pygi-struct.c | 2 +-
- tests/test_gi.py | 5 +++++
+ gi/pygi-struct.c |    2 +-
+ tests/test_gi.py |    5 +++++
  2 files changed, 6 insertions(+), 1 deletion(-)
 
 commit b4189be2b2d3c350fdf33e27309bee5a72e4f72a
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Jan 8 20:33:44 2010 +0100
+Date:  Fri Jan 8 20:33:44 2010 +0100
 
     Don't set a default constructor for structures.
 
@@ -33710,37 +15708,37 @@ Date:   Fri Jan 8 20:33:44 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603536
 
- gi/types.py       | 35 +++++++----------------------------
- tests/libtestgi.c | 33 ---------------------------------
- tests/libtestgi.h |  7 -------
- tests/test_gi.py  | 21 ++++++++++-----------
+ gi/types.py      |   35 +++++++----------------------------
+ tests/libtestgi.c |   33 ---------------------------------
+ tests/libtestgi.h |   7 -------
+ tests/test_gi.py  |   21 ++++++++++-----------
  4 files changed, 17 insertions(+), 79 deletions(-)
 
 commit 4db68b958ea11bd2c3a88067cae03fd6bdd1d24b
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Tue Jan 5 13:36:44 2010 +0100
+Date:  Tue Jan 5 13:36:44 2010 +0100
 
     Suppress compilation warnings
 
- gi/pygi-argument.c      | 3 ++-
- gi/pygi-boxed.c         | 2 --
- gi/pygobject-external.h | 2 +-
+ gi/pygi-argument.c     |    3 ++-
+ gi/pygi-boxed.c        |    2 --
+ gi/pygobject-external.h |    2 +-
  3 files changed, 3 insertions(+), 4 deletions(-)
 
 commit 4e2efa91d101bf755739e1cca8eee41eb0ad20fd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jan 4 08:35:14 2010 +0100
+Date:  Mon Jan 4 08:35:14 2010 +0100
 
     Bug 605937 - pygobject: Makefile.am sets $TMPDIR, disrupting distcc
 
     Committed a patch from Kevin Pyle
 
- Makefile.am | 27 +++++++++++++--------------
+ Makefile.am |  27 +++++++++++++--------------
  1 file changed, 13 insertions(+), 14 deletions(-)
 
 commit 8ddcbca0e98e0b0c082170a2b2b6cfcbd7864b40
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Dec 11 22:24:30 2009 +0100
+Date:  Fri Dec 11 22:24:30 2009 +0100
 
     sys.path must be modified after pygtk is imported
 
@@ -33748,613 +15746,615 @@ Date:   Fri Dec 11 22:24:30 2009 +0100
     loaded from the
     system's default site-package directory.
 
- tests/runtests.py | 1 -
- tests/test_gi.py  | 3 +++
+ tests/runtests.py |   1 -
+ tests/test_gi.py  |   3 +++
  2 files changed, 3 insertions(+), 1 deletion(-)
 
 commit 284a1e1c0143c95d3007cf58e6c248b5d11fb4d1
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun Jan 3 11:02:57 2010 +0100
+Date:  Sun Jan 3 11:02:57 2010 +0100
 
     Wrap gio.Cancellable.make_pollfd() and add a test
 
- gio/Makefile.am            |  1 +
- gio/gcancellable.override  | 37 +++++++++++++++++++++++++++++++++++++
- gio/gio.override           |  3 +++
- tests/test_gcancellable.py | 15 +++++++++++++++
+ gio/Makefile.am           |    1 +
+ gio/gcancellable.override  |  37 +++++++++++++++++++++++++++++++++++++
+ gio/gio.override          |    3 +++
+ tests/test_gcancellable.py |  15 +++++++++++++++
  4 files changed, 56 insertions(+)
 
 commit 82d7bcbf37200ee2ef5892dd12bebd2f39965c56
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jan 2 23:15:56 2010 +0100
+Date:  Sat Jan 2 23:15:56 2010 +0100
 
     Make cancellable an optional parameter in many methods
 
- gio/gio.defs | 102
- +++++++++++++++++++++++++++++------------------------------
+ gio/gio.defs |  102
+ +++++++++++++++++++++++++++++-----------------------------
  1 file changed, 51 insertions(+), 51 deletions(-)
 
 commit 49a078cd22d55dc33a03ecfda235d63955edc741
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jan 2 23:15:21 2010 +0100
+Date:  Sat Jan 2 23:15:21 2010 +0100
 
     Post release version bump to 2.21.2
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4f9f1f43ab4e2cfb204ffa0e257a34cfd95d84e2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jan 2 22:58:36 2010 +0100
+Date:  Sat Jan 2 22:58:36 2010 +0100
 
     Update NEWS and release PyGObject-2.21.1
 
- NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 55 insertions(+)
 
 commit c1f34be73bd186d7b4682dfef133da2c4229d213
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 20:25:35 2010 +0100
+Date:  Fri Jan 1 20:25:35 2010 +0100
 
     Wrap gio.Volume.eject_with_operation()
 
- gio/gvolume.override | 54
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gvolume.override |   54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 9b76fbff6f6897aaf26ed4644c1f19efc2826917
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 20:22:21 2010 +0100
+Date:  Fri Jan 1 20:22:21 2010 +0100
 
     gio.Mount.unmount_with_operation() fix a copy/paste leftover
 
- gio/gmount.override | 4 ++--
+ gio/gmount.override |   4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6f459786dd641cd49d81eba403d940620f961cab
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 20:21:05 2010 +0100
+Date:  Fri Jan 1 20:21:05 2010 +0100
 
     Wrap gio.Mount.eject_with_operation()
 
- gio/gmount.override | 54
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gmount.override |  54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit d4b5d1b4839364e5676eb2da28f1d21db7e2552d
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 20:15:38 2010 +0100
+Date:  Fri Jan 1 20:15:38 2010 +0100
 
     Wrap gio.Mount.unmount_mountable_with_operation()
 
- gio/gmount.override | 54
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gmount.override |  54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit e919d47c2430451b436cec955e9b99237f97028c
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 18:22:46 2010 +0100
+Date:  Fri Jan 1 18:22:46 2010 +0100
 
     Wrap File.unmount_mountable_with_operation()
 
- gio/gfile.override | 54
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override |  54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 5a614df9c5507d67f240462f7bf71b4cd411addf
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 18:14:11 2010 +0100
+Date:  Fri Jan 1 18:14:11 2010 +0100
 
     Wrap gio.File.stop_mountable()
 
- gio/gfile.override | 52
+ gio/gfile.override |  52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit 6af506647f36f2b825bc6556df5ee57fa7721906
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 18:10:49 2010 +0100
+Date:  Fri Jan 1 18:10:49 2010 +0100
 
     Wrap gio.File.start_mountable()
 
- gio/gfile.override | 52
+ gio/gfile.override |  52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit e700efc839fc0b651fc9794a1611190bffa80263
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 18:02:46 2010 +0100
+Date:  Fri Jan 1 18:02:46 2010 +0100
 
     Wrap gio.File.replace_readwrite_async()
 
- gio/gfile.override | 55
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override |  55
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 55 insertions(+)
 
 commit 92662f129fc728258fd5e34f53dcb081e3715017
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 17:00:26 2010 +0100
+Date:  Fri Jan 1 17:00:26 2010 +0100
 
     Wrap gio.File.poll_mountable()
 
- gio/gfile.override | 41 +++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override |  41 +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 41 insertions(+)
 
 commit 99902b786500948c3278779841e4db54223b9256
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 16:56:26 2010 +0100
+Date:  Fri Jan 1 16:56:26 2010 +0100
 
     Wrap gio.File.open_readwrite_async()
 
- gio/gfile.override | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override |  44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit 8cff5d53183ae81364ac74a34a1d52e55e082eb4
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 16:50:15 2010 +0100
+Date:  Fri Jan 1 16:50:15 2010 +0100
 
     Wrap gio.File.eject_mountable_with_operation()
 
- gio/gfile.override | 54
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override |  54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit ca436fe7785fd24b0f0e65f2f8c9fa6478277682
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 13:30:24 2010 +0100
+Date:  Fri Jan 1 13:30:24 2010 +0100
 
     Wrap gio.File.create_readwrite_async() and add a test
 
- gio/gfile.override | 51
+ gio/gfile.override |  51
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gio.py  | 24 ++++++++++++++++++++++++
+ tests/test_gio.py  |  24 ++++++++++++++++++++++++
  2 files changed, 75 insertions(+)
 
 commit f72c5e451dfaeb01b3c3d9243fed2732d3620462
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 13:20:11 2010 +0100
+Date:  Fri Jan 1 13:20:11 2010 +0100
 
     Wrap gio.Drive.stop()
 
- gio/gdrive.override | 52
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override |  52
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit 29043bade408338cefa13fb4b0c875aabd3ef05e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 13:00:42 2010 +0100
+Date:  Fri Jan 1 13:00:42 2010 +0100
 
     Wrap gio.Drive.start()
 
- gio/gdrive.override | 52
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override |  52
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit dff374287bbecc8af782bbc726fad86c6c867754
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 12:45:29 2010 +0100
+Date:  Fri Jan 1 12:45:29 2010 +0100
 
     Add more remainders on missing methods of gio.Socket and related types
 
- gio/gsocket.override | 3 +++
+ gio/gsocket.override |    3 +++
  1 file changed, 3 insertions(+)
 
 commit b8c7e996498bd72df551011af85ff05ef7335b4f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 12:41:08 2010 +0100
+Date:  Fri Jan 1 12:41:08 2010 +0100
 
     Wrap gio.SocketListener.accept_socket_async|finish() and add a test
 
- gio/gsocket.override  | 86
- +++++++++++++++++++++++++++++++++++++++++++++++++--
- tests/test_gsocket.py | 24 ++++++++++++++
+ gio/gsocket.override  |   86
+ +++++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_gsocket.py |   24 ++++++++++++++
  2 files changed, 108 insertions(+), 2 deletions(-)
 
 commit a5ae2d5ba3db34967fe07a3cc97b75df2793988c
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 12:28:53 2010 +0100
+Date:  Fri Jan 1 12:28:53 2010 +0100
 
     Wrap gio.SocketListener.accept_finish() and add a test
 
- gio/gsocket.override  | 44 ++++++++++++++++++++++++++++++++++++++++++--
- tests/test_gsocket.py | 24 ++++++++++++++++++++++++
+ gio/gsocket.override  |   44 ++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_gsocket.py |   24 ++++++++++++++++++++++++
  2 files changed, 66 insertions(+), 2 deletions(-)
 
 commit a5ab26cc1bb3e9dd57e2fdb26ef5c02e8066d097
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 11:19:34 2010 +0100
+Date:  Fri Jan 1 11:19:34 2010 +0100
 
     Wrap gio.SocketListener.accept_async()
 
- gio/gsocket.override | 42 ++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override |   42 ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 42 insertions(+)
 
 commit c9496b29ef9ef232020a4044577d2947353953a5
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jan 1 11:14:35 2010 +0100
+Date:  Fri Jan 1 11:14:35 2010 +0100
 
     Wrap gio.SocketListener.accept_socket() and add a test
 
- gio/gsocket.override  | 48
+ gio/gsocket.override  |   48
  +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py | 13 +++++++++++++
+ tests/test_gsocket.py |   13 +++++++++++++
  2 files changed, 60 insertions(+), 1 deletion(-)
 
 commit 1aa5e301c49f11e1c5ef58de44b4b03f714d1a70
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 16:35:18 2009 +0100
+Date:  Thu Dec 31 16:35:18 2009 +0100
 
     Wrap gio.SocketListener.accept() and add a test
 
- gio/gsocket.override  | 46 +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py | 13 +++++++++++++
+ gio/gsocket.override  |   46
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gsocket.py |   13 +++++++++++++
  2 files changed, 58 insertions(+), 1 deletion(-)
 
 commit aaedcf166c78baf5449ef59d0ade4a29077fedc7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 16:25:33 2009 +0100
+Date:  Thu Dec 31 16:25:33 2009 +0100
 
     Make cancellable optional in gio.SocketClient.connect_to_host()
 
- gio/gio.defs | 2 +-
+ gio/gio.defs |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3829d7667b19126fb74562b28d271e616b154c99
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 15:25:10 2009 +0100
+Date:  Thu Dec 31 15:25:10 2009 +0100
 
     Wrap gio.SocketListener.add_address() and add a test
 
- gio/gsocket.override  | 57
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |  9 ++++++++
+ gio/gsocket.override  |   57
+ ++++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gsocket.py |    9 ++++++++
  2 files changed, 65 insertions(+), 1 deletion(-)
 
 commit 5bec72f34ea75bc56158cae5c39d61a2a4e7e601
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 10:19:47 2009 +0100
+Date:  Thu Dec 31 10:19:47 2009 +0100
 
     Add more remainders on missing methods of gio.Socket and related types
 
- gio/gsocket.override | 8 ++++++++
+ gio/gsocket.override |    8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit b08b20f2b1a57bcbf400d6fe8e87cf052bdb719d
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 10:16:18 2009 +0100
+Date:  Thu Dec 31 10:16:18 2009 +0100
 
     Wrap gio.SocketClient.connect_to_service_async()
 
- gio/gsocket.override | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override |   47
+ +++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 47 insertions(+)
 
 commit 116ea1bfe32946e67aa54eb8dc7b977e57f254c2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 10:10:43 2009 +0100
+Date:  Thu Dec 31 10:10:43 2009 +0100
 
     Wrap gio.SocketClient.connect_to_host_async()
 
- gio/gsocket.override | 48
+ gio/gsocket.override |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
 commit 9c930910505d5b9001b8cec17ff98fadeaa799e2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 31 09:59:46 2009 +0100
+Date:  Thu Dec 31 09:59:46 2009 +0100
 
     Wrap gio.SocketClient.connect_async()
 
- gio/gsocket.override | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override |   45 +++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 45 insertions(+)
 
 commit dff024256295c15e49888ad9d5fef74a7746edd7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 23:44:25 2009 +0100
+Date:  Wed Dec 30 23:44:25 2009 +0100
 
     Wrap gio.SocketAddressEnumerator.next_async() and add a test
 
- gio/gsocket.override  | 42 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_gsocket.py | 16 ++++++++++++++++
+ gio/gsocket.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gsocket.py |   16 ++++++++++++++++
  2 files changed, 58 insertions(+)
 
 commit e2330bd0d6cbc49b0ecb27b30e3b0593935ce229
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 23:43:14 2009 +0100
+Date:  Wed Dec 30 23:43:14 2009 +0100
 
     Add a missing object gio.InetSocketAddress new in GIO 2.22
 
- gio/gio-types.defs |  7 +++++++
- gio/gio.defs       | 31 +++++++++++++++++++++++++++++++
+ gio/gio-types.defs |   7 +++++++
+ gio/gio.defs      |   31 +++++++++++++++++++++++++++++++
  2 files changed, 38 insertions(+)
 
 commit 6040b33467ea381c6cb02f6a5efc0745fa8fa47b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 22:54:47 2009 +0100
+Date:  Wed Dec 30 22:54:47 2009 +0100
 
     Make cancellable optional for gio.SocketAddressEnumerator.next()
 
- gio/gio.defs | 2 +-
+ gio/gio.defs |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b19f59790b9de943d69b6c5e483928e0443c3d20
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 22:17:44 2009 +0100
+Date:  Wed Dec 30 22:17:44 2009 +0100
 
     Add a remainder of the Socket methods that needs manual wrapping still
 
- gio/gsocket.override | 5 +++++
+ gio/gsocket.override |    5 +++++
  1 file changed, 5 insertions(+)
 
 commit 771a7c3fdef7b2e98e509293a8376a81c1282286
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 17:20:35 2009 +0100
+Date:  Wed Dec 30 17:20:35 2009 +0100
 
     Wrap gio.Socket.condition_wait() and add a test
 
- gio/gsocket.override  | 27 +++++++++++++++++++++++++++
- tests/test_gsocket.py |  6 +++++-
+ gio/gsocket.override  |   27 +++++++++++++++++++++++++++
+ tests/test_gsocket.py |    6 +++++-
  2 files changed, 32 insertions(+), 1 deletion(-)
 
 commit 50960656815b0897a5ebe5f011537b8dcbdc857e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 16:21:49 2009 +0100
+Date:  Wed Dec 30 16:21:49 2009 +0100
 
     Wrap gio.Socket.condition_check() and add a test
 
- gio/Makefile.am       |  1 +
- gio/gio.override      |  1 +
- gio/gsocket.override  | 41 +++++++++++++++++++++++++++++++++++++++++
- tests/test_gsocket.py | 21 +++++++++++++++++++++
+ gio/Makefile.am       |    1 +
+ gio/gio.override      |    1 +
+ gio/gsocket.override  |   41 +++++++++++++++++++++++++++++++++++++++++
+ tests/test_gsocket.py |   21 +++++++++++++++++++++
  4 files changed, 64 insertions(+)
 
 commit de7a359e81792ae8573ac944455ea289985449ed
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 14:07:52 2009 +0100
+Date:  Wed Dec 30 14:07:52 2009 +0100
 
     Wrap gio.Resolver.lookup_service_finish() and add a test
 
- gio/gresolver.override  | 37 +++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py | 13 +++++++++++++
+ gio/gresolver.override  |   37 +++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py |   13 +++++++++++++
  2 files changed, 50 insertions(+)
 
 commit 308421789ce849040d645077c41c80b6e2e65e83
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 14:00:22 2009 +0100
+Date:  Wed Dec 30 14:00:22 2009 +0100
 
     Wrap gio.Resolver.lookup_service_async()
 
- gio/gresolver.override | 48
+ gio/gresolver.override |   48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
 commit 9d56ce775f56fff1b1ef3c75843c0583e39f75c3
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Dec 30 11:11:32 2009 +0100
+Date:  Wed Dec 30 11:11:32 2009 +0100
 
     Wrap gio.Resolver.lookup_service() and add a test
 
- gio/gresolver.override  | 42 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |  5 +++++
+ gio/gresolver.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py |    5 +++++
  2 files changed, 47 insertions(+)
 
 commit 7fc71f490494dae73a5264869a97a9d30814930e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 22:12:50 2009 +0100
+Date:  Tue Dec 29 22:12:50 2009 +0100
 
     Wrap gio.Resolver.lookup_by_address_async() and add a test
 
- gio/gresolver.override  | 46
+ gio/gresolver.override  |   46
  ++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py | 14 ++++++++++++++
+ tests/test_gresolver.py |   14 ++++++++++++++
  2 files changed, 60 insertions(+)
 
 commit c91656dbe56f07d3ebbad5113467c22427cf212a
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 21:41:30 2009 +0100
+Date:  Tue Dec 29 21:41:30 2009 +0100
 
     Wrap gio.Resolver.lookup_by_name_finish() and add a test
 
- gio/gresolver.override  | 82
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py | 16 ++++++++--
+ gio/gresolver.override  |   82
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py |   16 +++++++--
  2 files changed, 96 insertions(+), 2 deletions(-)
 
 commit 45b477342fa1c2435917c6d97745ad57665c4734
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 17:15:44 2009 +0100
+Date:  Tue Dec 29 17:15:44 2009 +0100
 
     Wrap gio.Drive.eject_with_data()
 
- gio/gdrive.override | 54
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override |  54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 635227480f9659a1f91ab1ec12536d3ed012a976
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 17:06:52 2009 +0100
+Date:  Tue Dec 29 17:06:52 2009 +0100
 
     Deprecate old gio.Drive methods
 
- gio/gdrive.override | 7 ++++++-
- gio/gio.defs        | 1 +
+ gio/gdrive.override |   7 ++++++-
+ gio/gio.defs       |    1 +
  2 files changed, 7 insertions(+), 1 deletion(-)
 
 commit 3c0cbc95af29b1e192ed4b5963e96e39c70b349c
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 13:51:54 2009 +0100
+Date:  Tue Dec 29 13:51:54 2009 +0100
 
     Small fix in the header
 
- gio/gdrive.override | 2 +-
+ gio/gdrive.override |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7589128515b79d836365247dc876538c6352da23
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 12:40:50 2009 +0100
+Date:  Tue Dec 29 12:40:50 2009 +0100
 
     Wrap gio.Resolver.lookup_by_name() and add a couple of tests
 
- gio/Makefile.am         |  1 +
- gio/gio.override        |  1 +
- gio/gresolver.override  | 57
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py | 21 ++++++++++++++++++
+ gio/Makefile.am        |    1 +
+ gio/gio.override       |    1 +
+ gio/gresolver.override  |   57
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py |   21 +++++++++++++++++
  4 files changed, 80 insertions(+)
 
 commit 604d2bf220b1fefa415baaedbdb2882dbaf9e07e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 12:39:13 2009 +0100
+Date:  Tue Dec 29 12:39:13 2009 +0100
 
     Make cancellable an optional parameter in
     gio.Resolver.lookup_by_address()
 
- gio/gio.defs | 2 +-
+ gio/gio.defs |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 00029145f4cd10759b37b38fb9f72435bf26b28b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 10:15:14 2009 +0100
+Date:  Tue Dec 29 10:15:14 2009 +0100
 
     Strip g_ prefix for many other functions
 
- gio/gio.defs | 94
- ++++++++++++++++++++++++++++++------------------------------
+ gio/gio.defs |   94
+ +++++++++++++++++++++++++++++-----------------------------
  1 file changed, 47 insertions(+), 47 deletions(-)
 
 commit 56d5dfc4fd862e32c19f944a0feb7a00a9154f06
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 10:12:53 2009 +0100
+Date:  Tue Dec 29 10:12:53 2009 +0100
 
     Strip g_prefix from InetAddress functions
 
- gio/gio.defs | 8 ++++----
+ gio/gio.defs |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 1d360301d51a587a36a59f5d62e354484bbd2b31
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 10:03:59 2009 +0100
+Date:  Tue Dec 29 10:03:59 2009 +0100
 
     Fix function name gio.resolver_get_default()
 
     Strip the g_ prefix from function name
 
- gio/gio.defs | 2 +-
+ gio/gio.defs |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0fe00109c4f6fc27cbaae9b0a24ecfac71355d2f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Dec 29 09:54:05 2009 +0100
+Date:  Tue Dec 29 09:54:05 2009 +0100
 
     Wrap gio.FileIOStream.query_info_async() and add a test
 
- gio/Makefile.am            |  1 +
- gio/gfileiostream.override | 68
- ++++++++++++++++++++++++++++++++++++++++++++++
- gio/gio.override           |  1 +
- tests/test_gio.py          | 18 ++++++++++++
+ gio/Makefile.am           |    1 +
+ gio/gfileiostream.override |  68
+ ++++++++++++++++++++++++++++++++++++++++++++
+ gio/gio.override          |    1 +
+ tests/test_gio.py         |   18 ++++++++++++
  4 files changed, 88 insertions(+)
 
 commit 86783c695f3641b9491962e8f95a4dcb91f4017c
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Dec 29 13:08:29 2009 +0100
+Date:  Tue Dec 29 13:08:29 2009 +0100
 
     Register enums and flags in PyGI if needed
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603534
 
- gobject/pygenum.c  | 20 ++++++++++++++------
- gobject/pygflags.c | 19 +++++++++++++------
+ gobject/pygenum.c  |  20 ++++++++++++++------
+ gobject/pygflags.c |  19 +++++++++++++------
  2 files changed, 27 insertions(+), 12 deletions(-)
 
 commit b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 28 22:41:54 2009 +0100
+Date:  Mon Dec 28 22:41:54 2009 +0100
 
     Wrap GIOStream.close_async() and add a test
 
- gio/Makefile.am        |  1 +
- gio/gio.override       |  1 +
- gio/giostream.override | 68
- ++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gio.py      | 21 ++++++++++++++++
+ gio/Makefile.am       |    1 +
+ gio/gio.override      |    1 +
+ gio/giostream.override |   68
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gio.py     |   21 +++++++++++++++
  4 files changed, 91 insertions(+)
 
 commit 0bff01bcee73a0e0d18342331136119c4e8bf151
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 28 22:39:09 2009 +0100
+Date:  Mon Dec 28 22:39:09 2009 +0100
 
     Make cancellable an optional parameter in GFile.create_readwrite()
 
- gio/gio.defs | 2 +-
+ gio/gio.defs |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1cabd733cde269ce3164834933f4a226673ecb0b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 28 21:39:50 2009 +0100
+Date:  Mon Dec 28 21:39:50 2009 +0100
 
     Remove a duplicate entry in gio.defs
 
- gio/gio.defs | 9 ---------
+ gio/gio.defs |    9 ---------
  1 file changed, 9 deletions(-)
 
 commit 9ac372ad0bcfdec4bb1c96bc152246542a59a9b1
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 28 21:37:49 2009 +0100
+Date:  Mon Dec 28 21:37:49 2009 +0100
 
     Wrap gio.FileInfo.set_modification_time and add a test
 
- gio/gfileinfo.override | 33 ++++++++++++++++++++++++++++++++-
- tests/test_gio.py      |  7 ++++++-
+ gio/gfileinfo.override |   33 ++++++++++++++++++++++++++++++++-
+ tests/test_gio.py     |    7 ++++++-
  2 files changed, 38 insertions(+), 2 deletions(-)
 
 commit 7bc2673f92138b1804d8eba091942d14d8884f90
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Dec 28 18:28:03 2009 +0100
+Date:  Mon Dec 28 18:28:03 2009 +0100
 
     Wrap gio.EmblemedIcon.get_emblems() and add a test
 
- gio/gicon.override  | 14 ++++++++++++++
- tests/test_gicon.py |  7 +++++++
+ gio/gicon.override  |  14 ++++++++++++++
+ tests/test_gicon.py |   7 +++++++
  2 files changed, 21 insertions(+)
 
 commit 3d5056ad766d6856d8d6459fe9b377de2f0fd172
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Dec 26 22:27:48 2009 +0100
+Date:  Sat Dec 26 22:27:48 2009 +0100
 
     Update Enums and Flags with new API
 
- gio/gio-types.defs | 153
- +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gio/gio-types.defs |  153
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 149 insertions(+), 4 deletions(-)
 
 commit 62a9d660a4a2d5fab1d57c6c96c984ff02d25ccd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Dec 25 18:06:39 2009 +0100
+Date:  Fri Dec 25 18:06:39 2009 +0100
 
     Post release version bump to 2.21.1
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2bd92cba5b028f0f78c35ecb34e648e95248f9d3
 Author: Bastian Winkler <buz@netbuz.org>
-Date:   Fri Aug 14 15:10:26 2009 +0200
+Date:  Fri Aug 14 15:10:26 2009 +0200
 
     Fix handling of uchar in pyg_value_from_pyobject
 
     Set the value by g_value_set_uchar and allow to use integer types
     from python.
 
- gobject/pygtype.c | 15 +++++++++++----
+ gobject/pygtype.c |   15 +++++++++++----
  1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 828d0f042b59ea0319f33a23803c179af34ef2f1
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Dec 22 18:05:47 2009 +0100
+Date:  Tue Dec 22 18:05:47 2009 +0100
 
     Add Gtk.keysyms to overrides
 
- gi/overrides/Gtk.py      |    2 +
+ gi/overrides/Gtk.py     |    2 +
  gi/overrides/Makefile.am |    1 +
  gi/overrides/keysyms.py  | 1499
  ++++++++++++++++++++++++++++++++++++++++++++++
@@ -34362,65 +16362,65 @@ Date:   Tue Dec 22 18:05:47 2009 +0100
 
 commit 24fa1224ff00b9da177e0bfaa1e14e1b899e4976
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Wed Nov 25 10:33:56 2009 +0100
+Date:  Wed Nov 25 10:33:56 2009 +0100
 
     The array field 'length' starts to count from the C arg list, so
     need to decrement when it's a method
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602640
 
- gi/pygi-argument.c | 11 +++++++++-
- gi/pygi-argument.h |  3 ++-
- gi/pygi-info.c     | 14 +++++++++++--
- tests/libtestgi.c  | 60
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/libtestgi.h  |  4 ++++
- tests/test_gi.py   | 15 ++++++++++++++
+ gi/pygi-argument.c |  11 +++++++++-
+ gi/pygi-argument.h |   3 ++-
+ gi/pygi-info.c     |  14 ++++++++++--
+ tests/libtestgi.c  |  60
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/libtestgi.h  |   4 ++++
+ tests/test_gi.py   |  15 +++++++++++++
  6 files changed, 103 insertions(+), 4 deletions(-)
 
 commit 867536c6734e606d045760837ed22583da06566e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Dec 18 10:50:09 2009 +0100
+Date:  Fri Dec 18 10:50:09 2009 +0100
 
     Update NEWS and README, release pygobject 2.21.0
 
- NEWS   | 18 ++++++++++++++++++
- README |  6 +++---
+ NEWS  |   18 ++++++++++++++++++
+ README |    6 +++---
  2 files changed, 21 insertions(+), 3 deletions(-)
 
 commit f50fbd24fa61863aaefa4ae1e12e0b314ecd43ae
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Dec 18 10:31:48 2009 +0100
+Date:  Fri Dec 18 10:31:48 2009 +0100
 
     Add pygi-external.h into Makefile SOURCES
 
- gobject/Makefile.am | 3 ++-
+ gobject/Makefile.am |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 108c03b78f04b4bcfe066a6cb4d941e172bd32fe
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Dec 18 01:20:34 2009 +0100
+Date:  Fri Dec 18 01:20:34 2009 +0100
 
     Bug 598435 - No wrapping for g_find_program_in_path ()
 
- glib/glibmodule.c | 20 ++++++++++++++++++++
+ glib/glibmodule.c |   20 ++++++++++++++++++++
  1 file changed, 20 insertions(+)
 
 commit d3d5cb3a4a2c2cb2bd0c2571304d59e19bc08452
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 17 21:54:36 2009 +0100
+Date:  Thu Dec 17 21:54:36 2009 +0100
 
     Wrap new API added in GIO-UNIX 2.22
 
- gio/unix-types.defs |  22 ++++++++++
- gio/unix.defs       | 115
- +++++++++++++++++++++++++++++++++++++++++++++++++++-
- gio/unix.override   |   8 ++++
+ gio/unix-types.defs |  22 ++++++++++
+ gio/unix.defs       115
+ ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gio/unix.override   |   8 ++++
  3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit c87c8a81947a68507e8f3bcaf8e0e969b3e5331b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 17 21:52:11 2009 +0100
+Date:  Thu Dec 17 21:52:11 2009 +0100
 
     Bump required glib version to 2.22.4
 
@@ -34428,21 +16428,21 @@ Date:   Thu Dec 17 21:52:11 2009 +0100
     branch.
     Without the patch the unix module will fail, so I'm forced to bump.
 
- configure.ac | 6 +++---
+ configure.ac |    6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit b630c8d4b1e55938dac89729768c4a877b305215
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Dec 17 02:24:45 2009 +0100
+Date:  Thu Dec 17 02:24:45 2009 +0100
 
     Properly define Connectable as interface type and not object type
 
- gio/gio-types.defs | 12 ++++++------
+ gio/gio-types.defs |  12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit e955b931b07113c7432f7a85f882f69f12d263ad
 Author: Anderson Lizardo <anderson.lizardo@openbossa.org>
-Date:   Mon Nov 30 22:01:25 2009 +0100
+Date:  Mon Nov 30 22:01:25 2009 +0100
 
     Depend on GLib 2.20 rather than 2.22
 
@@ -34450,165 +16450,165 @@ Date:   Mon Nov 30 22:01:25 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603411
 
- configure.ac      |  2 +-
- gi/pygi-private.h | 19 +++++++++++++++++++
+ configure.ac     |    2 +-
+ gi/pygi-private.h |   19 +++++++++++++++++++
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit 542fdf6da4ad8f2d28d0d50152bd93cb4d8ee39a
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Nov 28 18:48:19 2009 +0000
+Date:  Sat Nov 28 18:48:19 2009 +0000
 
     Use the limit constants from glib and interpret G_MAXUINT32 as
     PyLong_FromLongLong
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602384
 
- gi/pygi-argument.c | 14 +++++++-------
- tests/test_gi.py   | 18 +++++++++---------
+ gi/pygi-argument.c |  14 +++++++-------
+ tests/test_gi.py   |  18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit 38e89942d29f2a1dba47ab4a8d5edc84322707cd
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Mon Nov 30 00:10:56 2009 +0100
+Date:  Mon Nov 30 00:10:56 2009 +0100
 
     Suppress warnings about format conversion
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603355
 
- gobject/generate-constants.c | 32 ++++++++++++++++----------------
+ gobject/generate-constants.c |   32 ++++++++++++++++----------------
  1 file changed, 16 insertions(+), 16 deletions(-)
 
 commit cfa7d005487e17e8f7c1ceb14282d3a5baadb736
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 28 00:22:21 2009 +0100
+Date:  Sat Nov 28 00:22:21 2009 +0100
 
     Remove global checks for pointers and move them in type cases that
     need them
 
- gi/pygi-argument.c | 516
- +++++++++++++++++++++++++++++++++++++++++++----------
- gi/pygi-info.c     | 333 +++++++++++++++++-----------------
+ gi/pygi-argument.c |  516
+ ++++++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-info.c     |  333 +++++++++++++++++----------------
  2 files changed, 596 insertions(+), 253 deletions(-)
 
 commit d1ae73f3cf7cebdb74c9ec56b08928a2a53b9de6
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon Nov 23 15:58:17 2009 -0200
+Date:  Mon Nov 23 15:58:17 2009 -0200
 
     Pythonify. Avoid ; and () around if statements
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/types.py | 8 ++++----
+ gi/types.py |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit a8660621679c629fc81320a8ddf5bf2c7ee1f177
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Tue Nov 24 10:36:18 2009 -0200
+Date:  Tue Nov 24 10:36:18 2009 -0200
 
     Remove trailing whitespace
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/module.py | 4 ++--
+ gi/module.py |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 66c34805223af9e63c7d61f21a3dbd7505a8f256
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon Nov 30 10:03:34 2009 +0000
+Date:  Mon Nov 30 10:03:34 2009 +0000
 
     Set a default constructor for boxed structs that don't have one
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602735
 
- gi/Makefile.am     |   2 +
- gi/gimodule.c      |   1 +
- gi/module.py       |   2 +-
- gi/pygi-argument.c |  14 +++-
- gi/pygi-boxed.c    | 184
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-boxed.h    |  40 ++++++++++++
- gi/pygi-info.c     |   2 +-
- gi/pygi-private.h  |   1 +
- gi/pygi.h          |   6 ++
- gi/types.py        |  18 ------
- tests/libtestgi.c  |  72 ++++++++++-----------
- tests/libtestgi.h  |  18 +++---
- tests/test_gi.py   |  47 ++++++++------
+ gi/Makefile.am     |   2 +
+ gi/gimodule.c        1 +
+ gi/module.py         2 +-
+ gi/pygi-argument.c |  14 +++-
+ gi/pygi-boxed.c    |  184
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-boxed.h    |  40 ++++++++++++
+ gi/pygi-info.c     |   2 +-
+ gi/pygi-private.h  |   1 +
+ gi/pygi.h            6 ++
+ gi/types.py       |   18 -----
+ tests/libtestgi.c  |  72 ++++++++++----------
+ tests/libtestgi.h  |  18 ++---
+ tests/test_gi.py   |  47 ++++++++------
  13 files changed, 321 insertions(+), 86 deletions(-)
 
 commit e7e2fccae36c28c7e9f288fcd4c90a001140e307
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon Nov 30 10:53:57 2009 +0000
+Date:  Mon Nov 30 10:53:57 2009 +0000
 
     Revert "Use the limit constants from glib and interpret G_MAXUINT32
     as PyLong_FromLongLong"
 
     This reverts commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041.
 
- gi/pygi-argument.c | 14 +++++++-------
- tests/test_gi.py   | 18 +++++++++---------
+ gi/pygi-argument.c |  14 +++++++-------
+ tests/test_gi.py   |  18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Nov 28 18:48:19 2009 +0000
+Date:  Sat Nov 28 18:48:19 2009 +0000
 
     Use the limit constants from glib and interpret G_MAXUINT32 as
     PyLong_FromLongLong
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602384
 
- gi/pygi-argument.c | 14 +++++++-------
- tests/test_gi.py   | 18 +++++++++---------
+ gi/pygi-argument.c |  14 +++++++-------
+ tests/test_gi.py   |  18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit e24d155dd7b4a5b9c25c054137d1370c369d3192
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Nov 28 18:45:54 2009 +0000
+Date:  Sat Nov 28 18:45:54 2009 +0000
 
     Add the missing limit constants from glibconfig.h
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603244
 
- gobject/generate-constants.c | 17 ++++++++++++++++-
+ gobject/generate-constants.c |   17 ++++++++++++++++-
  1 file changed, 16 insertions(+), 1 deletion(-)
 
 commit 3a295cb7ffaaaf29c71b8833cf0ee5ec7ceaa909
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Nov 28 18:48:49 2009 +0100
+Date:  Sat Nov 28 18:48:49 2009 +0100
 
     Fix bad name when rebuilding the unix source module
 
- gio/Makefile.am | 2 +-
+ gio/Makefile.am |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a8cbb6fb72dbe6630d1265b18095c9a96f496b86
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Nov 28 18:47:26 2009 +0100
+Date:  Sat Nov 28 18:47:26 2009 +0100
 
     Wrap new API added in GIO 2.22
 
  gio/gio-types.defs |  138 +++
- gio/gio.defs       | 2444
+ gio/gio.defs      | 2444
  +++++++++++++++++++++++++++++++++++++++++++++++-----
  2 files changed, 2360 insertions(+), 222 deletions(-)
 
 commit 96f6c638709636d7e2ddf560b877879691da3314
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sat Nov 28 11:03:51 2009 +0000
+Date:  Sat Nov 28 11:03:51 2009 +0000
 
     A few tests about interfaces
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601181
 
- tests/libtestgi.c | 23 +++++++++++++++++++++++
- tests/libtestgi.h | 16 ++++++++++++++++
- tests/test_gi.py  | 21 +++++++++++++++++++++
+ tests/libtestgi.c |   23 +++++++++++++++++++++++
+ tests/libtestgi.h |   16 ++++++++++++++++
+ tests/test_gi.py  |   21 +++++++++++++++++++++
  3 files changed, 60 insertions(+)
 
 commit 076ba3156c13375a75983cef7a409c8c8afea119
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Thu Nov 26 23:50:54 2009 +0100
+Date:  Thu Nov 26 23:50:54 2009 +0100
 
     Fix members initialization in metaclasses
 
@@ -34627,85 +16627,84 @@ Date:   Thu Nov 26 23:50:54 2009 +0100
     notably tests
     that methods don't get overridden by the metaclass.
 
- gi/types.py      |  5 +++--
- tests/test_gi.py | 19 +++++++++++++++++++
+ gi/types.py     |    5 +++--
+ tests/test_gi.py |   19 +++++++++++++++++++
  2 files changed, 22 insertions(+), 2 deletions(-)
 
 commit ac80e64c9f7d257865aa820753e52d56cf2871c8
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Fri Nov 27 12:06:59 2009 +0000
+Date:  Fri Nov 27 12:06:59 2009 +0000
 
     Structs in arrays are not marshalled correctly
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602709
 
- gi/pygi-argument.c | 29 ++++++++++++++++++++++++-----
- tests/libtestgi.c  | 23 ++++++++++++++++++++++-
- tests/libtestgi.h  |  7 +++++--
- tests/test_gi.py   |  8 ++++++++
+ gi/pygi-argument.c |  29 ++++++++++++++++++++++++-----
+ tests/libtestgi.c  |  23 ++++++++++++++++++++++-
+ tests/libtestgi.h  |   7 +++++--
+ tests/test_gi.py   |   8 ++++++++
  4 files changed, 59 insertions(+), 8 deletions(-)
 
 commit 4a373b8ad6ec137e911b92a3e745e0fd76541292
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Wed Nov 25 16:53:55 2009 +0100
+Date:  Wed Nov 25 16:53:55 2009 +0100
 
     Use the right variable when looking up in sys.modules
 
- gi/importer.py | 2 +-
+ gi/importer.py |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fc3dca018e85aee34ade79d104ebd8cdd1dd5968
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Nov 24 15:52:47 2009 +0100
+Date:  Tue Nov 24 15:52:47 2009 +0100
 
     Accept 0 as a valid value for flag and enum arguments
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602638
 
- gi/pygi-argument.c | 19 ++++++++++++++++++-
- tests/libtestgi.c  |  6 ++++++
- tests/libtestgi.h  |  1 +
- tests/test_gi.py   |  1 +
+ gi/pygi-argument.c |  19 ++++++++++++++++++-
+ tests/libtestgi.c  |   6 ++++++
+ tests/libtestgi.h  |   1 +
+ tests/test_gi.py   |   1 +
  4 files changed, 26 insertions(+), 1 deletion(-)
 
 commit 33081c29a1c2fdec2b8bfe17ae0a72b8db7a8d84
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Tue Nov 24 13:10:11 2009 +0100
+Date:  Tue Nov 24 13:10:11 2009 +0100
 
     Add stuff to .gitignore
 
- .gitignore | 7 +++++++
+ .gitignore |   7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 5c010fe673d9bd01c27c8d7d312064665275888c
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Mon Nov 23 22:39:12 2009 +0100
+Date:  Mon Nov 23 22:39:12 2009 +0100
 
     Remove the girepository module
 
- Makefile.am                        |    2 +-
- configure.ac                       |   17 -
- girepository/Makefile.am           |   54 --
- girepository/__init__.py           |   24 -
- girepository/bank-argument.c       |  379 ------------
- girepository/bank-info.c           | 1194
- ------------------------------------
- girepository/bank-repository.c     |  236 -------
- girepository/bank.c                |  155 -----
- girepository/bank.h                |   80 ---
- girepository/btypes.py             |  300 ---------
- girepository/importer.py           |   51 --
- girepository/module.py             |  224 -------
- girepository/overrides/Gdk.py      |   14 -
- girepository/overrides/Gtk.py      |    8 -
- girepository/overrides/__init__.py |    0
- girepository/repository.py         |   51 --
- tests/test_girepository.py         |  386 ------------
- 17 files changed, 1 insertion(+), 3174 deletions(-)
+ Makefile.am                   |    2 +-
+ configure.ac                  |   17 -
+ girepository/Makefile.am      |   54 --
+ girepository/__init__.py      |   24 -
+ girepository/bank-argument.c  |  379 -------------
+ girepository/bank-info.c      | 1194
+ ----------------------------------------
+ girepository/bank-repository.c |  236 --------
+ girepository/bank.c           |  155 ------
+ girepository/bank.h           |   80 ---
+ girepository/btypes.py                |  300 ----------
+ girepository/importer.py      |   51 --
+ girepository/module.py                |  224 --------
+ girepository/overrides/Gdk.py |   14 -
+ girepository/overrides/Gtk.py |    8 -
+ girepository/repository.py    |   51 --
+ tests/test_girepository.py    |  386 -------------
+ 16 files changed, 1 insertion(+), 3174 deletions(-)
 
 commit a644edf0515c26ed027522891ccf02aceac764e8
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Mon Nov 23 15:32:16 2009 -0200
+Date:  Mon Nov 23 15:32:16 2009 -0200
 
     Create overridden modules in two passes
 
@@ -34720,77 +16719,77 @@ Date:   Mon Nov 23 15:32:16 2009 -0200
     for the overridden modules to be able to access the auto-generated
     ones.
 
- gi/importer.py | 34 +++++++++++++++++++++-------------
+ gi/importer.py |   34 +++++++++++++++++++++-------------
  1 file changed, 21 insertions(+), 13 deletions(-)
 
 commit fad89e12a744b57e6348968f351d25d167de8248
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Nov 22 17:56:20 2009 +0100
+Date:  Sun Nov 22 17:56:20 2009 +0100
 
     Add support for Any arguments
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601253
 
- gi/pygi-argument.c | 20 ++++++++++++--------
- tests/libtestgi.c  |  5 +++++
- tests/libtestgi.h  |  5 +++++
- tests/test_gi.py   |  5 +++++
+ gi/pygi-argument.c |  20 ++++++++++++--------
+ tests/libtestgi.c  |   5 +++++
+ tests/libtestgi.h  |   5 +++++
+ tests/test_gi.py   |   5 +++++
  4 files changed, 27 insertions(+), 8 deletions(-)
 
 commit 1dc62a998dd8d2a0a397f8309011a8d79cb56034
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Nov 22 17:25:04 2009 +0100
+Date:  Sun Nov 22 17:25:04 2009 +0100
 
     Register interfaces
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601181
 
- gi/gimodule.c | 33 +++++++++++++++++++++++++++++++++
- gi/types.py   |  5 ++++-
+ gi/gimodule.c |   33 +++++++++++++++++++++++++++++++++
+ gi/types.py   |    5 ++++-
  2 files changed, 37 insertions(+), 1 deletion(-)
 
 commit d67d5afb5115c1d8294415b2e1a82af2c737ba17
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun Nov 22 18:23:02 2009 +0200
+Date:  Sun Nov 22 18:23:02 2009 +0200
 
     Ignore one more file.
 
- .gitignore | 1 +
+ .gitignore |   1 +
  1 file changed, 1 insertion(+)
 
 commit 408b2186aea58a41ec26b9d0ca29ecd42df5ef7e
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun Nov 22 18:22:23 2009 +0200
+Date:  Sun Nov 22 18:22:23 2009 +0200
 
     Fix wrong minimum checking in float properties
 
     Bug #587637.  Test the fix.
 
- gobject/propertyhelper.py | 5 +++--
- tests/test_properties.py  | 6 ++++++
+ gobject/propertyhelper.py |   5 +++--
+ tests/test_properties.py  |   6 ++++++
  2 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 6ccf58afcf58e118903ced0135f0fe69b00e09ad
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Mon Oct 26 18:06:06 2009 +0000
+Date:  Mon Oct 26 18:06:06 2009 +0000
 
     Treat GI_INFO_TYPE_INTERFACE same as GI_INFO_TYPE_OBJECT
 
- gi/pygi-argument.c | 3 +++
+ gi/pygi-argument.c |   3 +++
  1 file changed, 3 insertions(+)
 
 commit e6f730d6e1431e36bd5f6b503a1038617f8d1e7d
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 14 21:42:43 2009 +0100
+Date:  Sat Nov 14 21:42:43 2009 +0100
 
     Import pygtk properly to avoid failure on some setups
 
- tests/test_gi.py | 3 +++
+ tests/test_gi.py |    3 +++
  1 file changed, 3 insertions(+)
 
 commit e604a89e9dc1a79687ef5fb94af7a2182be07dfb
 Author: Alex Dedul <rotmer@gmail.com>
-Date:   Sat Nov 14 21:39:15 2009 +0100
+Date:  Sat Nov 14 21:39:15 2009 +0100
 
     Search for python-config-${VERSION} when python${VERSION}-config is
     not found
@@ -34801,49 +16800,49 @@ Date:   Sat Nov 14 21:39:15 2009 +0100
 
     Signed-off-by: Simon van der Linden <svdlinden@src.gnome.org>
 
- configure.ac | 7 +++++--
+ configure.ac |    7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 4a887cfabb326cb99dc65073d592c03f59e2f141
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 14 21:36:19 2009 +0100
+Date:  Sat Nov 14 21:36:19 2009 +0100
 
     Fix silent rules setup
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 602afea88c338a38327cd84e08703c5daa384ec6
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Tue Nov 10 22:32:33 2009 +0200
+Date:  Tue Nov 10 22:32:33 2009 +0200
 
     Move threads_init() function from 'gobject' to 'glib'
 
     Retain in original place for backward compatibility, but remove it
     from the docs.
 
- docs/reference/pygobject-functions.xml | 36
- +++++++---------------------------
- glib/glibmodule.c                      | 16 +++++++++++++++
+ docs/reference/pygobject-functions.xml |   36
+ +++++++-------------------------
+ glib/glibmodule.c                     |   16 ++++++++++++++
  2 files changed, 23 insertions(+), 29 deletions(-)
 
 commit 734755912fff11332dc0e96317b7d6b7c4014e6a
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Mon Nov 9 22:44:12 2009 +0100
+Date:  Mon Nov 9 22:44:12 2009 +0100
 
     Remove PyGObject patches since they've been merged to master
 
- ...pytype-aware-of-the-interface-enum-flags-.patch |  78 --------
- patches/0002-Fix-girpository-build-setup.patch     | 186
- -------------------
- ...capabilities-to-import-wrappers-from-pygi.patch | 200
- ---------------------
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ---
+ ...pytype-aware-of-the-interface-enum-flags-.patch |  78 --------
+ patches/0002-Fix-girpository-build-setup.patch     |  186
+ ------------------
+ ...capabilities-to-import-wrappers-from-pygi.patch |  200
+ --------------------
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ---
  4 files changed, 493 deletions(-)
 
 commit 6a69288941e65312fe82649ec72d2f21b2dc618f
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 7 23:42:07 2009 +0100
+Date:  Sat Nov 7 23:42:07 2009 +0100
 
     Create instances by calling tp_alloc rather than PyObject_NEW
 
@@ -34854,12 +16853,12 @@ Date:   Sat Nov 7 23:42:07 2009 +0100
     PyGBoxed subtypes, so the subtype's allocation function must be
     called instead.
 
- gobject/pygboxed.c | 3 ++-
+ gobject/pygboxed.c |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 000f7c36e667c6e078e3370769ea868e56a1b4ee
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 7 16:43:35 2009 +0100
+Date:  Sat Nov 7 16:43:35 2009 +0100
 
     Add capabilities to import wrappers from pygi
 
@@ -34873,186 +16872,185 @@ Date:   Sat Nov 7 16:43:35 2009 +0100
     function and
     API definition had to be copied in this tree.
 
- configure.ac            |  8 ++++++
- gobject/pygboxed.c      | 10 ++++++++
- gobject/pygi-external.h | 66
- +++++++++++++++++++++++++++++++++++++++++++++++++
- gobject/pygobject.c     | 10 ++++++++
- gobject/pygpointer.c    | 11 +++++++++
+ configure.ac           |    8 ++++++
+ gobject/pygboxed.c     |   10 +++++++
+ gobject/pygi-external.h |   66
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gobject/pygobject.c    |   10 +++++++
+ gobject/pygpointer.c   |   11 ++++++++
  5 files changed, 105 insertions(+)
 
 commit fdfbc90dbc9e305646b62d73de506b5e0e99cc91
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sun Nov 8 20:03:58 2009 +0100
+Date:  Sun Nov 8 20:03:58 2009 +0100
 
     Update PyGObject patches
 
     A file, pygi-external.h, was missing in patch #3.
 
- ...capabilities-to-import-wrappers-from-pygi.patch | 74
- ++++++++++++++++++++--
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  2 +-
+ ...capabilities-to-import-wrappers-from-pygi.patch |  74
+ ++++++++++++++++++--
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |   2 +-
  2 files changed, 69 insertions(+), 7 deletions(-)
 
 commit 8f53ca8a72f9958711765281dd5c5bdfb7042d7d
 Author: Tomeu Vizoso <tomeu@sugarlabs.org>
-Date:   Sun Nov 8 16:52:18 2009 +0100
+Date:  Sun Nov 8 16:52:18 2009 +0100
 
     Add myself to pygi.doap
 
- pygi.doap | 5 +++++
+ pygi.doap |   5 +++++
  1 file changed, 5 insertions(+)
 
 commit 6f50d5102aec9288e1851f12e9d232b9c141d524
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sun Nov 8 15:40:51 2009 +0100
+Date:  Sun Nov 8 15:40:51 2009 +0100
 
     Add a doap file
 
- pygi.doap | 17 +++++++++++++++++
+ pygi.doap |   17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit ce673b9027868e6add4eeb438bc707eb40bfd046
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sun Nov 8 13:06:54 2009 +0100
+Date:  Sun Nov 8 13:06:54 2009 +0100
 
     Add PyGObject patches
 
- ...pytype-aware-of-the-interface-enum-flags-.patch |  78 +++++++++
- patches/0002-Fix-girpository-build-setup.patch     | 186
- +++++++++++++++++++++
- ...capabilities-to-import-wrappers-from-pygi.patch | 138 +++++++++++++++
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ++++
+ ...pytype-aware-of-the-interface-enum-flags-.patch |  78 ++++++++
+ patches/0002-Fix-girpository-build-setup.patch     |  186
+ ++++++++++++++++++++
+ ...capabilities-to-import-wrappers-from-pygi.patch |  138 +++++++++++++++
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 +++
  4 files changed, 431 insertions(+)
 
 commit b24fd9633cabe1d95cde173a04e9a49833b06a26
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sun Nov 8 12:35:08 2009 +0100
+Date:  Sun Nov 8 12:35:08 2009 +0100
 
     Initial import
 
- .gitignore                |   33 +
- Makefile.am               |   10 +
- autogen.sh                |  159 +++
- configure.ac              |   53 +
- gi/Makefile.am            |   50 +
- gi/__init__.py            |   24 +
- gi/gimodule.c             |  144 ++
- gi/importer.py            |   89 ++
- gi/module.py              |  167 +++
- gi/overrides/Gdk.py       |   21 +
- gi/overrides/Gtk.py       |   13 +
+ .gitignore               |   33 +
+ Makefile.am              |   10 +
+ autogen.sh               |  159 +++
+ configure.ac             |   53 +
+ gi/Makefile.am                   |   50 +
+ gi/__init__.py                   |   24 +
+ gi/gimodule.c            |  144 ++
+ gi/importer.py                   |   89 ++
+ gi/module.py             |  167 +++
+ gi/overrides/Gdk.py      |   21 +
+ gi/overrides/Gtk.py      |   13 +
  gi/overrides/Makefile.am  |   10 +
- gi/overrides/__init__.py  |    0
- gi/pygi-argument.c        | 1976 ++++++++++++++++++++++++++
- gi/pygi-argument.h        |   65 +
- gi/pygi-info.c            | 2093 ++++++++++++++++++++++++++++
- gi/pygi-info.h            |   64 +
- gi/pygi-private.h         |   55 +
- gi/pygi-repository.c      |  238 ++++
- gi/pygi-repository.h      |   39 +
- gi/pygi-struct.c          |  175 +++
- gi/pygi-struct.h          |   40 +
- gi/pygi-type.c            |   96 ++
- gi/pygi-type.h            |   43 +
- gi/pygi.h                 |   99 ++
+ gi/pygi-argument.c       | 1976 ++++++++++++++++++++++++++
+ gi/pygi-argument.h       |   65 +
+ gi/pygi-info.c                   | 2093 ++++++++++++++++++++++++++++
+ gi/pygi-info.h                   |   64 +
+ gi/pygi-private.h        |   55 +
+ gi/pygi-repository.c     |  238 ++++
+ gi/pygi-repository.h     |   39 +
+ gi/pygi-struct.c         |  175 +++
+ gi/pygi-struct.h         |   40 +
+ gi/pygi-type.c                   |   96 ++
+ gi/pygi-type.h                   |   43 +
+ gi/pygi.h                |   99 ++
  gi/pygobject-external.h   |   83 ++
- gi/repository/Makefile.am |    8 +
+ gi/repository/Makefile.am |   8 +
  gi/repository/__init__.py |   30 +
- gi/types.py               |  163 +++
- tests/Makefile.am         |   48 +
- tests/libtestgi.c         | 3397
+ gi/types.py              |  163 +++
+ tests/Makefile.am        |   48 +
+ tests/libtestgi.c        | 3397
  +++++++++++++++++++++++++++++++++++++++++++++
- tests/libtestgi.h         |  643 +++++++++
- tests/runtests.py         |   22 +
- tests/test_gi.py          | 1416 +++++++++++++++++++
- 34 files changed, 11566 insertions(+)
+ tests/libtestgi.h        |  643 +++++++++
+ tests/runtests.py        |   22 +
+ tests/test_gi.py         | 1416 +++++++++++++++++++
+ 33 files changed, 11566 insertions(+)
 
 commit bfd3100a580b8bea9db25b8bb7443fb8c3dbe1cc
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Sat Nov 7 13:23:53 2009 +0100
+Date:  Sat Nov 7 13:23:53 2009 +0100
 
     Fix girpository build setup
 
- configure.ac             | 21 ++++++-----
- girepository/Makefile.am | 13 ++++---
- m4/introspection.m4      | 92
- ++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac            |   21 +++++++----
+ girepository/Makefile.am |   13 +++----
+ m4/introspection.m4     |   92
+ ++++++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 111 insertions(+), 15 deletions(-)
 
 commit 421c03b1c5b69f90c778663df901b45ca3ee8ba5
 Author: Simon van der Linden <svdlinden@src.gnome.org>
-Date:   Fri Nov 6 19:17:36 2009 +0100
+Date:  Fri Nov 6 19:17:36 2009 +0100
 
     Make GType.pytype aware of the interface, enum, flags, pointer and
     boxed wrappers
 
- gobject/pygtype.c | 39 +++++++++++++++++++++++++++++++++------
+ gobject/pygtype.c |   39 +++++++++++++++++++++++++++++++++------
  1 file changed, 33 insertions(+), 6 deletions(-)
 
 commit a9c168c58cc6a449b51653417bf3f58bdd41457c
 Author: Philippe Normad <phil@base-art.net>
-Date:   Wed Oct 21 18:01:16 2009 +0200
+Date:  Wed Oct 21 18:01:16 2009 +0200
 
     pygmainloop: fix use of PySignal_WakeUpFD API for nested loops
 
     Fixes bug #481569
 
- glib/pygmainloop.c | 95
- ++++++++++++++++++++++++++++--------------------------
+ glib/pygmainloop.c |  95
+ +++++++++++++++++++++++++++-------------------------
  1 file changed, 50 insertions(+), 45 deletions(-)
 
 commit c6a5750379354c12e2599b3c73b4f9a23fd39114
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Sep 25 20:12:21 2009 +0200
+Date:  Fri Sep 25 20:12:21 2009 +0200
 
     Post release version bump to 2.21.0
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 33920eb013628a5e22b7b32403fb965ae3210f47
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Sep 23 21:52:04 2009 +0200
+Date:  Wed Sep 23 21:52:04 2009 +0200
 
     Update NEWS and release 2.20.0
 
- NEWS | 6 ++++++
+ NEWS |    6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 66b12f7d2f54143ea80b4f8aec863b26800363d6
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed Sep 23 21:51:43 2009 +0200
+Date:  Wed Sep 23 21:51:43 2009 +0200
 
     Bump version to 2.20.0
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7bf87338a026ac82f908aa5fddf2bfea2daf6617
 Author: Brian Cameron <Brian.Cameron@sun.com>
-Date:   Wed Sep 23 12:11:50 2009 -0500
+Date:  Wed Sep 23 12:11:50 2009 -0500
 
     Updated uninstalled.pc file so that it contains the right paths for
     defsdir files and codegen files.  See bug #596023.
 
- pygobject-2.0-uninstalled.pc.in | 4 ++--
+ pygobject-2.0-uninstalled.pc.in |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d042402b7c649b2bed7f20038eb82518ec7cc9b3
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Tue Sep 22 22:02:27 2009 +0300
+Date:  Tue Sep 22 22:02:27 2009 +0300
 
     Plug reference leak of GSource in pyg_main_loop_init()
 
     Bug #579406, second change.
 
- glib/pygmainloop.c | 1 +
+ glib/pygmainloop.c |   1 +
  1 file changed, 1 insertion(+)
 
 commit 640be8109d066e85ed77c810830a5f73c750415b
 Author: Frédéric Péters <fpeters@0d.be>
-Date:   Sun Aug 30 16:46:02 2009 +0200
+Date:  Sun Aug 30 16:46:02 2009 +0200
 
     Specify programming language in .devhelp file
 
@@ -35060,549 +17058,546 @@ Date:   Sun Aug 30 16:46:02 2009 +0200
     .devhelp
     file that is produced when using ref-html-style.xsl.
 
- docs/xsl/devhelp.xsl | 2 +-
+ docs/xsl/devhelp.xsl |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c888b5ca722fcad6a03de585606c677c2969ebd6
 Author: Paolo Borelli <pborelli@gnome.org>
-Date:   Thu Aug 13 21:32:07 2009 +0200
+Date:  Thu Aug 13 21:32:07 2009 +0200
 
     Allow to use automake 1.11
 
- autogen.sh | 13 +++++++------
+ autogen.sh |  13 +++++++------
  1 file changed, 7 insertions(+), 6 deletions(-)
 
 commit 30deaba4bd1e199aab75cb346ee9237237807fbd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Aug 11 22:19:50 2009 +0200
+Date:  Tue Aug 11 22:19:50 2009 +0200
 
     Update README
 
- README | 10 ++++++++--
+ README |   10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit af165d350d0d1bb493be5140bf84376d3da1e4d8
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Aug 11 22:16:52 2009 +0200
+Date:  Tue Aug 11 22:16:52 2009 +0200
 
     Update AUTHORS
 
- AUTHORS | 8 +++++---
+ AUTHORS |    8 +++++---
  1 file changed, 5 insertions(+), 3 deletions(-)
 
 commit 5f9f87f276b97964b525a501d8584ea8b4d8bfd2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Aug 11 22:11:43 2009 +0200
+Date:  Tue Aug 11 22:11:43 2009 +0200
 
     Add myself and Paul as maintainers
 
- MAINTAINERS    |  8 ++++++++
- pygobject.doap | 14 ++++++++++++++
+ MAINTAINERS   |    8 ++++++++
+ pygobject.doap |   14 ++++++++++++++
  2 files changed, 22 insertions(+)
 
 commit 3bfae47fbcb5523d91fb2d1ed7ea347eeddd1775
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Aug 11 20:52:44 2009 +0200
+Date:  Tue Aug 11 20:52:44 2009 +0200
 
     Update NEWS release 2.19.0
 
- NEWS | 29 +++++++++++++++++++++++++++++
+ NEWS |   29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 commit e82a1841f31ad54dd50569d0d45290713409e0bf
 Author: John Finlay <finlay@moeraki.com>
-Date:   Tue Aug 11 00:04:31 2009 -0700
+Date:  Tue Aug 11 00:04:31 2009 -0700
 
     Add macros to help with Python list to/from GList/GSList conversions.
 
- gobject/pygobject.h | 242
- +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gobject/pygobject.h | 242
+ ++++++++++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 241 insertions(+), 1 deletion(-)
 
 commit f1fad96da2c531fbd3218923baa4fe806a2942d4
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Aug 8 21:37:54 2009 +0200
+Date:  Sat Aug 8 21:37:54 2009 +0200
 
     Bug 590063 â€“ GFileInfo.list_attributes should accept None/NULL
 
- gio/gfileinfo.override | 4 ++--
+ gio/gfileinfo.override |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit b7907cf6ff6ccf8d38b5206f09f5c864c205e5de
 Author: Johan Dahlin <johan@gnome.org>
-Date:   Fri Jul 24 14:30:37 2009 -0300
+Date:  Fri Jul 24 14:30:37 2009 -0300
 
     Remove myself as a maintainer
 
- MAINTAINERS    | 4 ----
- pygobject.doap | 7 -------
+ MAINTAINERS   |    4 ----
+ pygobject.doap |    7 -------
  2 files changed, 11 deletions(-)
 
 commit be6eb21320b4688bcfcd8cbea33f7be29a76f2a2
 Author: John Finlay <finlay@moeraki.com>
-Date:   Wed Jul 8 15:47:44 2009 -0700
+Date:  Wed Jul 8 15:47:44 2009 -0700
 
-            * codegen/defsgen.py (clean_patterns): Strip out Windows
-            DLL API macros.
+           * codegen/defsgen.py (clean_patterns): Strip out Windows
+           DLL API macros.
 
- codegen/defsgen.py | 6 +++---
+ codegen/defsgen.py |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 2214cad3529979e29342a7e1fdc2915b90ce9c10
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 23 21:18:23 2009 +0200
+Date:  Tue Jun 23 21:18:23 2009 +0200
 
     Fix the gio.unix namespace in docs
 
- docs/Makefile.am                          |  2 ++
- docs/reference/pygio-classes.xml          |  2 --
- docs/reference/pygio-unixinputstream.xml  | 26 +++++++++++++-------------
- docs/reference/pygio-unixoutputstream.xml | 26 +++++++++++++-------------
- docs/reference/pygiounix-classes.xml      | 13 +++++++++++++
- docs/reference/pygobject-ref.xml          |  1 +
+ docs/Makefile.am                         |    2 ++
+ docs/reference/pygio-classes.xml         |    2 --
+ docs/reference/pygio-unixinputstream.xml  |   26
+ +++++++++++++-------------
+ docs/reference/pygio-unixoutputstream.xml |   26
+ +++++++++++++-------------
+ docs/reference/pygiounix-classes.xml     |   13 +++++++++++++
+ docs/reference/pygobject-ref.xml         |    1 +
  6 files changed, 42 insertions(+), 28 deletions(-)
 
 commit c0acaedfe7f4e488a490e07e3184f0709e1fadc2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 22 23:13:36 2009 +0200
+Date:  Mon Jun 22 23:13:36 2009 +0200
 
     Add docs for gio functions (mostly for content types)
 
- docs/Makefile.am                   |   2 +
- docs/reference/pygio-classes.xml   |   1 +
- docs/reference/pygio-functions.xml | 395
- +++++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                     2 +
+ docs/reference/pygio-classes.xml   |   1 +
+ docs/reference/pygio-functions.xml |  395
+ ++++++++++++++++++++++++++++++++++++
  3 files changed, 398 insertions(+)
 
 commit ebddee47fb7f3e06f9e0a7a14b9532d5cf8a3881
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun Jun 21 18:35:56 2009 +0200
+Date:  Sun Jun 21 18:35:56 2009 +0200
 
     Add docs for gio.Unix[In|Out]putStream classes
 
- docs/Makefile.am                          |   4 +
- docs/reference/pygio-classes.xml          |   2 +
- docs/reference/pygio-unixinputstream.xml  | 202
- ++++++++++++++++++++++++++++++
- docs/reference/pygio-unixoutputstream.xml | 202
- ++++++++++++++++++++++++++++++
+ docs/Makefile.am                            4 +
+ docs/reference/pygio-classes.xml            2 +
+ docs/reference/pygio-unixinputstream.xml  |  202
+ +++++++++++++++++++++++++++++
+ docs/reference/pygio-unixoutputstream.xml |  202
+ +++++++++++++++++++++++++++++
  4 files changed, 410 insertions(+)
 
 commit 5b71e58117c85634d95d08449eb54079b246e5be
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun Jun 21 16:50:03 2009 +0300
+Date:  Sun Jun 21 16:50:03 2009 +0300
 
     Document that many functions got moved gobject -> glib
 
- docs/reference/pygobject-functions.xml | 7 +++++++
+ docs/reference/pygobject-functions.xml |    7 +++++++
  1 file changed, 7 insertions(+)
 
 commit b270dc43f2cef5260b0bbc71356fd8e6a2b7f754
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jun 20 19:23:25 2009 +0200
+Date:  Sat Jun 20 19:23:25 2009 +0200
 
     Add docs for class gio.DataOutputStream
 
- docs/Makefile.am                          |   2 +
- docs/reference/pygio-classes.xml          |   1 +
- docs/reference/pygio-dataoutputstream.xml | 504
- ++++++++++++++++++++++++++++++
+ docs/Makefile.am                            2 +
+ docs/reference/pygio-classes.xml            1 +
+ docs/reference/pygio-dataoutputstream.xml |  504
+ +++++++++++++++++++++++++++++
  3 files changed, 507 insertions(+)
 
 commit 549313fc4886fa3deb31761de6f5400708165d86
 Author: Murray Cumming <murrayc@murrayc.com>
-Date:   Thu Jun 18 18:48:37 2009 +0200
+Date:  Thu Jun 18 18:48:37 2009 +0200
 
     Allow h2def.py to work when there are tabs or multiple spaces after
     the struct keyword.
 
- codegen/h2def.py | 8 ++++----
+ codegen/h2def.py |    8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 5c36ef20dca8cd1793f2d3e88949675299097f40
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 15 23:02:34 2009 +0200
+Date:  Mon Jun 15 23:02:34 2009 +0200
 
     Add dpcs for class gio.DataInputStream
 
- docs/Makefile.am                         |   2 +
- docs/reference/pygio-classes.xml         |   1 +
- docs/reference/pygio-constants.xml       |  66 +++
- docs/reference/pygio-datainputstream.xml | 799
- +++++++++++++++++++++++++++++++
+ docs/Makefile.am                           2 +
+ docs/reference/pygio-classes.xml           1 +
+ docs/reference/pygio-constants.xml        66 +++
+ docs/reference/pygio-datainputstream.xml |  799
+ ++++++++++++++++++++++++++++++
  4 files changed, 868 insertions(+)
 
 commit a8b36c343c6850af929c1d5a930f923831b4e637
 Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
-Date:   Mon Jun 15 23:25:01 2009 +0300
+Date:  Mon Jun 15 23:25:01 2009 +0300
 
     Fix build when builddir is not the same as srcdir
 
     Bug #585817.
 
- girepository/Makefile.am | 2 +-
+ girepository/Makefile.am |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9d9ae97b8a49836ec1f3b8d6529bafe1cc06d4d7
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Mon Jun 15 23:19:47 2009 +0300
+Date:  Mon Jun 15 23:19:47 2009 +0300
 
     Make gio.Emblem constructor new-style
 
     Add optional 'origin' parameter.  Expand gio.Emblem documentation and
     mark gio.emblem_new_with_origin as sort-of-deprecated.
 
- docs/reference/pygio-emblem.xml | 51
- +++++++++++++++++++++++++++++++++++++++--
- gio/gio.defs                    |  5 ++--
+ docs/reference/pygio-emblem.xml |   51
+ +++++++++++++++++++++++++++++++++++++--
+ gio/gio.defs                   |    5 ++--
  2 files changed, 52 insertions(+), 4 deletions(-)
 
 commit 268e1681fd5b46e6412d3a8db84f3f1cb02fdbde
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jun 13 14:44:47 2009 +0200
+Date:  Sat Jun 13 14:44:47 2009 +0200
 
     Add docs for gio.BufferedOutputStream class
 
- docs/Makefile.am                              |  96 ++++-----
- docs/reference/pygio-bufferedoutputstream.xml | 275
- ++++++++++++++++++++++++++
- docs/reference/pygio-classes.xml              |   1 +
+ docs/Makefile.am                               96 ++++-----
+ docs/reference/pygio-bufferedoutputstream.xml |  275
+ +++++++++++++++++++++++++
+ docs/reference/pygio-classes.xml                1 +
  3 files changed, 325 insertions(+), 47 deletions(-)
 
 commit a6e25aaa7c8f27d62f2917b06728d7ccfcd46416
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jun 13 14:38:34 2009 +0200
+Date:  Sat Jun 13 14:38:34 2009 +0200
 
     Fix gio.BufferedInputStream docs
 
     Added the constructor reference and fixed a typo in properties header
 
- docs/reference/pygio-bufferedinputstream.xml | 34
- ++++++++++++++++++++++++++--
+ docs/reference/pygio-bufferedinputstream.xml |   34
+ ++++++++++++++++++++++++--
  1 file changed, 32 insertions(+), 2 deletions(-)
 
 commit a9b13b60a5aad726d7d7dd7fdc5153b1561fb591
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat Jun 13 01:25:06 2009 +0200
+Date:  Sat Jun 13 01:25:06 2009 +0200
 
     Add docs for gio.BufferedInputStream
 
- docs/Makefile.am                             |   2 +
- docs/reference/pygio-bufferedinputstream.xml | 431
- +++++++++++++++++++++++++++
- docs/reference/pygio-classes.xml             |   1 +
+ docs/Makefile.am                               2 +
+ docs/reference/pygio-bufferedinputstream.xml |  431
+ ++++++++++++++++++++++++++
+ docs/reference/pygio-classes.xml               1 +
  3 files changed, 434 insertions(+)
 
 commit 7766daa59b0e2b85413cee368bf2ebd2afe198e1
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun May 31 18:25:47 2009 +0300
+Date:  Sun May 31 18:25:47 2009 +0300
 
     Cleanup GIO overrides to use Python function/method names
 
     Also move several gio.Mount overrides over from 'gio.override' to
     existing 'gmount.override'.  Part of bug #584289.
 
- gio/gfile.override           |  20 ++---
- gio/gfileenumerator.override |   6 +-
- gio/ginputstream.override    |   2 +-
- gio/gio.override             | 204
- -------------------------------------------
- gio/gmount.override          | 204
- +++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override            20 ++---
+ gio/gfileenumerator.override |    6 +-
+ gio/ginputstream.override    |    2 +-
+ gio/gio.override             204
+ ------------------------------------------
+ gio/gmount.override          204
+ ++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 218 insertions(+), 218 deletions(-)
 
 commit 07e9c18dc092f6546230168b6b69c1b3454e120a
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun May 31 18:56:55 2009 +0300
+Date:  Sun May 31 18:56:55 2009 +0300
 
     Make codegen report errors using Python function/method names
 
     Part of bug #584289.
 
- codegen/codegen.py     |  9 +++++----
- codegen/definitions.py | 10 +++++++++-
+ codegen/codegen.py    |    9 +++++----
+ codegen/definitions.py |   10 +++++++++-
  2 files changed, 14 insertions(+), 5 deletions(-)
 
 commit 235fde85d015382f2ba38b21968e82b3ac0b6612
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri Jun 12 00:12:17 2009 +0200
+Date:  Fri Jun 12 00:12:17 2009 +0200
 
     Fix object type in gio.BufferedInputStream_fill_async
 
- gio/gbufferedinputstream.override | 2 +-
+ gio/gbufferedinputstream.override |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 407b0e909056f15960e6a4e549896d786ce0a0b2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 9 00:08:21 2009 +0200
+Date:  Tue Jun 9 00:08:21 2009 +0200
 
     Wrap gio.BufferedInputStream.fill_async
 
     Wrap the method gio.BufferedInputStream.fill_async and add a test
 
- gio/Makefile.am                   |  1 +
- gio/gbufferedinputstream.override | 70
- +++++++++++++++++++++++++++++++++++++++
- gio/gio.override                  |  1 +
- tests/test_gio.py                 | 25 ++++++++++++++
+ gio/Makefile.am                  |    1 +
+ gio/gbufferedinputstream.override |   70
+ +++++++++++++++++++++++++++++++++++++
+ gio/gio.override                 |    1 +
+ tests/test_gio.py                |   25 +++++++++++++
  4 files changed, 97 insertions(+)
 
 commit b7c96b41b287685fe57504e0add3a6f16e649975
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 8 15:42:40 2009 +0200
+Date:  Mon Jun 8 15:42:40 2009 +0200
 
     Add gio.BufferedOutputStream which was forgotten in the types
     definition
 
- gio/gio-types.defs | 7 +++++++
+ gio/gio-types.defs |   7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 3666f75af4ef2c8e038116aee5afada59d59f689
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 8 14:20:02 2009 +0200
+Date:  Mon Jun 8 14:20:02 2009 +0200
 
     Add docs for gio.MemoryOutputStream
 
- docs/Makefile.am                            |   2 +
- docs/reference/pygio-classes.xml            |   1 +
- docs/reference/pygio-memoryoutputstream.xml | 175
- ++++++++++++++++++++++++++++
+ docs/Makefile.am                              2 +
+ docs/reference/pygio-classes.xml              1 +
+ docs/reference/pygio-memoryoutputstream.xml | 175
+ +++++++++++++++++++++++++++
  3 files changed, 178 insertions(+)
 
 commit 6eb5e3988cbddb4afb3d5747364d6eb80370bb78
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 8 13:30:15 2009 +0200
+Date:  Mon Jun 8 13:30:15 2009 +0200
 
     Split overrides for gio.MemoryOutputStream
 
- gio/Makefile.am                  |  1 +
- gio/gio.override                 |  1 +
- gio/gmemoryoutputstream.override | 45
- ++++++++++++++++++++++++++++++++++++++++
- gio/goutputstream.override       | 24 ---------------------
+ gio/Makefile.am                 |    1 +
+ gio/gio.override                |    1 +
+ gio/gmemoryoutputstream.override |   45
+ ++++++++++++++++++++++++++++++++++++++
+ gio/goutputstream.override      |   24 --------------------
  4 files changed, 47 insertions(+), 24 deletions(-)
 
 commit dfbdf23633a772e78b47b0e7b0c3e3b87855d9ff
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 8 11:45:11 2009 +0200
+Date:  Mon Jun 8 11:45:11 2009 +0200
 
     Wrap gio.memory_input_stream_new_from_data
 
     Add the wrapper for gio.memory_input_stream_new_from_data including
     docs and a test.
 
- docs/Makefile.am                           |   4 +-
- docs/reference/pygio-classes.xml           |   1 +
- docs/reference/pygio-memoryinputstream.xml | 151
- +++++++++++++++++++++++++++++
- gio/Makefile.am                            |   1 +
- gio/ginputstream.override                  |  34 -------
- gio/gio.override                           |   1 +
- gio/gmemoryinputstream.override            |  91 +++++++++++++++++
- tests/test_gio.py                          |   4 +
+ docs/Makefile.am                             4 +-
+ docs/reference/pygio-classes.xml             1 +
+ docs/reference/pygio-memoryinputstream.xml |  151
+ ++++++++++++++++++++++++++++
+ gio/Makefile.am                              1 +
+ gio/ginputstream.override                   34 -------
+ gio/gio.override                             1 +
+ gio/gmemoryinputstream.override             91 +++++++++++++++++
+ tests/test_gio.py                            4 +
  8 files changed, 252 insertions(+), 35 deletions(-)
 
 commit fcc3cb0e167789746a1a9db0cba54ea7a97c7259
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Mon Jun 8 19:15:24 2009 +0200
+Date:  Mon Jun 8 19:15:24 2009 +0200
 
     Fixes whitespaces style issues with girepository.
 
- girepository/Makefile.am       |  2 +-
- girepository/bank-repository.c | 67
- +++++++++++++++++++++---------------------
- girepository/bank.h            |  2 +-
- girepository/btypes.py         |  6 ++--
- girepository/module.py         |  2 +-
+ girepository/Makefile.am      |    2 +-
+ girepository/bank-repository.c |   67
+ ++++++++++++++++++++--------------------
+ girepository/bank.h           |    2 +-
+ girepository/btypes.py                |    6 ++--
+ girepository/module.py                |    2 +-
  5 files changed, 39 insertions(+), 40 deletions(-)
 
 commit fb4b2c8cdad2853e6bfe9526529e3a3ab052c5e0
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Fri Jun 5 19:03:59 2009 +0200
+Date:  Fri Jun 5 19:03:59 2009 +0200
 
     Removes the header but the modeline in test_girepository.py.
 
- tests/test_girepository.py | 26 +-------------------------
+ tests/test_girepository.py |  26 +-------------------------
  1 file changed, 1 insertion(+), 25 deletions(-)
 
 commit abe4828f52c7eb3a08f5b592e7ced1e97a58ef5c
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Wed Jun 3 10:47:58 2009 +0200
+Date:  Wed Jun 3 10:47:58 2009 +0200
 
     Adds overrides modules from PyBank.
 
- girepository/Makefile.am           |  3 +++
- girepository/importer.py           |  3 +--
- girepository/overrides/Gdk.py      | 14 ++++++++++++++
- girepository/overrides/Gtk.py      |  8 ++++++++
- girepository/overrides/__init__.py |  0
- 5 files changed, 26 insertions(+), 2 deletions(-)
+ girepository/Makefile.am      |    3 +++
+ girepository/importer.py      |    3 +--
+ girepository/overrides/Gdk.py |   14 ++++++++++++++
+ girepository/overrides/Gtk.py |    8 ++++++++
+ 4 files changed, 26 insertions(+), 2 deletions(-)
 
 commit c12964e6a3354d8063355225c94e6d21d621e08b
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Tue Jun 2 23:40:41 2009 +0200
+Date:  Tue Jun 2 23:40:41 2009 +0200
 
     Disables the tests that fail in tests/test_girepository.py.
 
- tests/test_girepository.py | 242
- ++++++++++++++++++++++++++++++++++-----------
+ tests/test_girepository.py |  242
+ +++++++++++++++++++++++++++++++++-----------
  1 file changed, 182 insertions(+), 60 deletions(-)
 
 commit a4469a3f7d32a25156bae5e7aef9ec4ae5f6e140
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Tue Jun 2 23:03:26 2009 +0200
+Date:  Tue Jun 2 23:03:26 2009 +0200
 
     Imports test_girepository.py from former PyBank's
     everything_unittest.py.
 
- tests/test_girepository.py | 288
- +++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_girepository.py |  288
+ ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 288 insertions(+)
 
 commit e4f2a5ef8734cf40cf8345d442612db1f6c62d5a
 Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
-Date:   Thu May 28 17:45:11 2009 +0200
+Date:  Thu May 28 17:45:11 2009 +0200
 
     Introduces the girepository module from the former PyBank.
 
- INSTALL                        |   69 +--
- Makefile.am                    |    2 +-
- configure.ac                   |   12 +
- girepository/Makefile.am       |   52 ++
- girepository/__init__.py       |   24 +
- girepository/bank-argument.c   |  379 +++++++++++++
- girepository/bank-info.c       | 1194
+ INSTALL                       |   69 +--
+ Makefile.am                   |    2 +-
+ configure.ac                  |   12 +
+ girepository/Makefile.am      |   52 ++
+ girepository/__init__.py      |   24 +
+ girepository/bank-argument.c  |  379 +++++++++++++
+ girepository/bank-info.c      | 1194
  ++++++++++++++++++++++++++++++++++++++++
  girepository/bank-repository.c |  237 ++++++++
- girepository/bank.c            |  155 ++++++
- girepository/bank.h            |   80 +++
- girepository/btypes.py         |  300 ++++++++++
- girepository/importer.py       |   52 ++
- girepository/module.py         |  224 ++++++++
- girepository/repository.py     |   51 ++
+ girepository/bank.c           |  155 ++++++
+ girepository/bank.h           |   80 +++
+ girepository/btypes.py                |  300 ++++++++++
+ girepository/importer.py      |   52 ++
+ girepository/module.py                |  224 ++++++++
+ girepository/repository.py    |   51 ++
  14 files changed, 2799 insertions(+), 32 deletions(-)
 
 commit f5ab5046fe9b67ec5e8fc64679e1a3d01787af7e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 18:28:22 2009 +0200
+Date:  Tue Jun 2 18:28:22 2009 +0200
 
     Fix the docs for gio.FilterOutputStream
 
- docs/reference/pygio-filteroutputstream.xml | 6 +++---
+ docs/reference/pygio-filteroutputstream.xml |   6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit fded60d8376fc45d19bf6cd8be6b927cc3f2e8c6
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 18:27:00 2009 +0200
+Date:  Tue Jun 2 18:27:00 2009 +0200
 
     Add gio.FilterOutputStream docs
 
- docs/Makefile.am                            |   2 +
- docs/reference/pygio-classes.xml            |   1 +
- docs/reference/pygio-filteroutputstream.xml | 152
- ++++++++++++++++++++++++++++
+ docs/Makefile.am                              2 +
+ docs/reference/pygio-classes.xml              1 +
+ docs/reference/pygio-filteroutputstream.xml | 152
+ +++++++++++++++++++++++++++
  3 files changed, 155 insertions(+)
 
 commit e2c31f916967229b6547e68013628ce0082cf875
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 13:29:59 2009 +0200
+Date:  Tue Jun 2 13:29:59 2009 +0200
 
     Add gio.FilterInputStream docs
 
- docs/Makefile.am                           |   2 +
- docs/reference/pygio-classes.xml           |   1 +
- docs/reference/pygio-filterinputstream.xml | 152
- +++++++++++++++++++++++++++++
+ docs/Makefile.am                             2 +
+ docs/reference/pygio-classes.xml             1 +
+ docs/reference/pygio-filterinputstream.xml |  152
+ ++++++++++++++++++++++++++++
  3 files changed, 155 insertions(+)
 
 commit 49a467eee445bc75554db0374006722ac075194b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 11:33:20 2009 +0200
+Date:  Tue Jun 2 11:33:20 2009 +0200
 
     Add API appeared in 2.20 but not marked as such in gio docs
 
- gio/gio.defs | 30 ++++++++++++++++++++++++++++++
+ gio/gio.defs |   30 ++++++++++++++++++++++++++++++
  1 file changed, 30 insertions(+)
 
 commit 180c157f2a20b7d2dd9af05bfb5f515fd23870a0
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 10:41:26 2009 +0200
+Date:  Tue Jun 2 10:41:26 2009 +0200
 
     Wrap gio.FileOutputStream.query_info_async
 
     Add the wrapper for gio.FileOutputStream.query_info_async
     including docs and a test.
 
- docs/Makefile.am                          |   2 +
- docs/reference/pygio-classes.xml          |   1 +
- docs/reference/pygio-fileoutputstream.xml | 257
- ++++++++++++++++++++++++++++++
- gio/Makefile.am                           |   3 +-
- gio/gfileoutputstream.override            |  68 ++++++++
- gio/gio.override                          |   1 +
- tests/test_gio.py                         |  27 ++++
+ docs/Makefile.am                            2 +
+ docs/reference/pygio-classes.xml            1 +
+ docs/reference/pygio-fileoutputstream.xml |  257
+ +++++++++++++++++++++++++++++
+ gio/Makefile.am                             3 +-
+ gio/gfileoutputstream.override                   |   68 ++++++++
+ gio/gio.override                            1 +
+ tests/test_gio.py                        |   27 +++
  7 files changed, 358 insertions(+), 1 deletion(-)
 
 commit 4673577d1f6c3d54423808dd575987092fb05ad2
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue Jun 2 10:17:41 2009 +0200
+Date:  Tue Jun 2 10:17:41 2009 +0200
 
     Fix gio.FileInputStream docs
 
     Add implemented interface section and remove a method description
 
- docs/reference/pygio-fileinputstream.xml | 25 +++++++++----------------
+ docs/reference/pygio-fileinputstream.xml |   25 +++++++++----------------
  1 file changed, 9 insertions(+), 16 deletions(-)
 
 commit 1e1cad02879d514745b5233658654cbe944530a5
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 1 22:54:26 2009 +0200
+Date:  Mon Jun 1 22:54:26 2009 +0200
 
     Fix the method name
 
- gio/gfileinputstream.override | 14 +++++++-------
+ gio/gfileinputstream.override |   14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit f605811afe8c91f121e89b6f9ec28c70b62f4110
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon Jun 1 22:40:56 2009 +0200
+Date:  Mon Jun 1 22:40:56 2009 +0200
 
     Wrap gio.FileInputStream.query_async
 
     Add the wrapper for gio.FileInputStream.query_async including docs and
     a test.
 
- docs/Makefile.am                         |   2 +
- docs/reference/pygio-classes.xml         |   1 +
- docs/reference/pygio-fileinputstream.xml | 221
- +++++++++++++++++++++++++++++++
- gio/Makefile.am                          |   1 +
- gio/gfileinputstream.override            |  68 ++++++++++
- gio/gio.override                         |   1 +
- tests/test_gio.py                        |  27 ++++
+ docs/Makefile.am                           2 +
+ docs/reference/pygio-classes.xml           1 +
+ docs/reference/pygio-fileinputstream.xml |  221
+ ++++++++++++++++++++++++++++++
+ gio/Makefile.am                            1 +
+ gio/gfileinputstream.override           |   68 +++++++++
+ gio/gio.override                           1 +
+ tests/test_gio.py                         27 ++++
  7 files changed, 321 insertions(+)
 
 commit 08623e54a426377c1504b5c364aabae5a17f8ad8
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sun May 31 17:43:16 2009 +0300
+Date:  Sun May 31 17:43:16 2009 +0300
 
     Install executable codegen parts with executing permissions
 
     Also add shebang where it was missing.  Bug #583979.
 
- codegen/Makefile.am      | 23 ++++++++++++-----------
- codegen/code-coverage.py |  2 ++
- codegen/codegen.py       |  2 ++
- codegen/createdefs.py    |  0
- codegen/defsconvert.py   |  2 ++
- codegen/defsgen.py       |  0
- codegen/docgen.py        |  0
- codegen/scmexpr.py       |  0
- 8 files changed, 18 insertions(+), 11 deletions(-)
+ codegen/Makefile.am     |   23 ++++++++++++-----------
+ codegen/code-coverage.py |    2 ++
+ codegen/codegen.py      |    2 ++
+ codegen/defsconvert.py   |    2 ++
+ 4 files changed, 18 insertions(+), 11 deletions(-)
 
 commit 833d4da202bcfcb01a414f8aec4b751ec8e1ccb2
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sat May 30 16:57:49 2009 +0300
+Date:  Sat May 30 16:57:49 2009 +0300
 
     Wrap gio.DataInputStream.read_line_async and read_until_async
 
@@ -35611,82 +17606,82 @@ Date:   Sat May 30 16:57:49 2009 +0300
     functions there.  Add unit tests.  Re-enable synchronous read_line
     unit test and adjust it for new official GIO behavior.  Bug #584285.
 
- gio/Makefile.am               |   1 +
- gio/gdatainputstream.override | 250
- ++++++++++++++++++++++++++++++++++++++++++
- gio/ginputstream.override     |  65 -----------
- gio/gio.defs                  |   4 +-
- gio/gio.override              |   1 +
- tests/test_gio.py             |  51 ++++++++-
+ gio/Makefile.am                 1 +
+ gio/gdatainputstream.override |  250
+ +++++++++++++++++++++++++++++++++++++++++
+ gio/ginputstream.override     |   65 -----------
+ gio/gio.defs                    4 +-
+ gio/gio.override                1 +
+ tests/test_gio.py              51 ++++++++-
  6 files changed, 300 insertions(+), 72 deletions(-)
 
 commit 2cb569c0ced49f9ed5ca83292d5f15c837066688
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sat May 30 17:24:15 2009 +0300
+Date:  Sat May 30 17:24:15 2009 +0300
 
     Fix gio.OutputStream.splice_async
 
     Bug #584290.
 
- gio/goutputstream.override | 8 ++++----
+ gio/goutputstream.override |   8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit e43fa429f6b4019a432acb481bbc07c8201cc46d
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Wed May 27 21:19:27 2009 +0300
+Date:  Wed May 27 21:19:27 2009 +0300
 
     Code maintenance: ignore one more file created by unit tests
 
- tests/.gitignore | 1 +
+ tests/.gitignore |    1 +
  1 file changed, 1 insertion(+)
 
 commit 76e9dc74ac706a9207f9d31f887d6e38df2a678f
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon May 25 20:20:38 2009 +0200
+Date:  Mon May 25 20:20:38 2009 +0200
 
     Update the docs with new 2.20 API
 
- docs/reference/pygio-appinfo.xml | 115 +++++++++++++++++++++++++++++
- docs/reference/pygio-icon.xml    |  99 ++++++++++++++++++++++++-
- docs/reference/pygio-mount.xml   | 156
- +++++++++++++++++++++++++++++++++++++++
+ docs/reference/pygio-appinfo.xml |  115 ++++++++++++++++++++++++++++
+ docs/reference/pygio-icon.xml   |   99 +++++++++++++++++++++++-
+ docs/reference/pygio-mount.xml   |  156
+ ++++++++++++++++++++++++++++++++++++++
  3 files changed, 367 insertions(+), 3 deletions(-)
 
 commit 8e40d71ac23deb7d91789486ee8cad440a6be1dd
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon May 25 01:33:08 2009 +0200
+Date:  Mon May 25 01:33:08 2009 +0200
 
     Add gio 2.20 API
 
     add the new API added in gio 2.20, some needs to be wrapped manually
 
- gio/gio.defs  | 106
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gio/unix.defs |  48 +++++++++++++++++++++-----
+ gio/gio.defs  |  106
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/unix.defs |   48 +++++++++++++++++++++-----
  2 files changed, 146 insertions(+), 8 deletions(-)
 
 commit 0d08df42514fba6abc896814abfee0d2d083c29e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon May 25 00:14:21 2009 +0200
+Date:  Mon May 25 00:14:21 2009 +0200
 
     Post release version bump 2.19.0
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit edfb09e3de7baf294b3beba84b4ecb94e1f16764
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 24 23:56:29 2009 +0200
+Date:  Sun May 24 23:56:29 2009 +0200
 
     Update NEWS, release 2.18.0
 
- NEWS         | 14 ++++++++++++++
- configure.ac |  4 ++--
+ NEWS        |   14 ++++++++++++++
+ configure.ac |    4 ++--
  2 files changed, 16 insertions(+), 2 deletions(-)
 
 commit e0648ea435e0b309cdd5bb0ebe56d4534efd26e4
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 24 22:18:40 2009 +0200
+Date:  Sun May 24 22:18:40 2009 +0200
 
     Add documentation for the gio.OutputStream class
 
@@ -35696,56 +17691,56 @@ Date:   Sun May 24 22:18:40 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                      |   2 +
- docs/reference/pygio-classes.xml      |   3 +-
- docs/reference/pygio-outputstream.xml | 140
- ++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                        2 +
+ docs/reference/pygio-classes.xml      |    3 +-
+ docs/reference/pygio-outputstream.xml |  140
+ +++++++++++++++++++++++++++++++++
  3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit 11524cdf6472d9115a812ce431f6767aec5627bc
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 24 22:12:04 2009 +0200
+Date:  Sun May 24 22:12:04 2009 +0200
 
     Wrap gio.OutputStream.splice_async()
 
     wrap gio.OutputStream.splice_async() and add a test.
 
- gio/goutputstream.override | 58
- +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py          | 20 ++++++++++++++++
+ gio/goutputstream.override |  58
+ +++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py         |   20 +++++++++++++++
  2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 82ad6b8c8ea4d6694126f5e0e67b826717e38f19
 Author: Emilio Pozuelo Monfort <pochu@ubuntu.com>
-Date:   Sun May 24 22:55:16 2009 +0300
+Date:  Sun May 24 22:55:16 2009 +0300
 
     Add Python version into installed libpyglib name
 
     Do this now, while no-one (as far as we know) links to the library
     besides PyGObject itself.  Bug #550235.
 
- configure.ac        |  2 ++
- gio/Makefile.am     |  2 +-
- glib/Makefile.am    | 10 +++++-----
- gobject/Makefile.am |  2 +-
+ configure.ac       |    2 ++
+ gio/Makefile.am     |   2 +-
+ glib/Makefile.am    |  10 +++++-----
+ gobject/Makefile.am |   2 +-
  4 files changed, 9 insertions(+), 7 deletions(-)
 
 commit 59da8cd24ea390b6c983995833ec6b0e5d028b35
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 24 11:44:24 2009 +0200
+Date:  Sun May 24 11:44:24 2009 +0200
 
     Wrap gio.OutputStream.flush_async()
 
     wrap gio.OutputStream.flush_async() and add a test.
 
- gio/goutputstream.override | 47
- +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py          | 11 +++++++++++
+ gio/goutputstream.override |  47
+ +++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py         |   11 +++++++++++
  2 files changed, 57 insertions(+), 1 deletion(-)
 
 commit 84ab6178ed0033f69932df5bc73c86bdff80c953
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 17 17:29:37 2009 +0200
+Date:  Sun May 17 17:29:37 2009 +0200
 
     Add documentation for the gio.FileMonitor class
 
@@ -35755,27 +17750,27 @@ Date:   Sun May 17 17:29:37 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                     |   2 +
- docs/reference/pygio-classes.xml     |   1 +
- docs/reference/pygio-filemonitor.xml | 128
- +++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                       2 +
+ docs/reference/pygio-classes.xml     |    1 +
+ docs/reference/pygio-filemonitor.xml |  128
+ ++++++++++++++++++++++++++++++++++
  3 files changed, 131 insertions(+)
 
 commit 629496a5617d30e4dfa494b05a62c85a6af77b9a
 Author: Josselin Mouette <joss@malsain.org>
-Date:   Sun May 17 18:03:44 2009 +0300
+Date:  Sun May 17 18:03:44 2009 +0300
 
     Use 'Requires.private' for libffi in '.pc' files
 
     Correction for patch in bug #550231.
 
- pygobject-2.0-uninstalled.pc.in | 3 ++-
- pygobject-2.0.pc.in             | 3 ++-
+ pygobject-2.0-uninstalled.pc.in |    3 ++-
+ pygobject-2.0.pc.in            |    3 ++-
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 90cd8b7c4a25cd2ecb751f8337b401c98538272b
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Wed May 13 21:54:39 2009 +0200
+Date:  Wed May 13 21:54:39 2009 +0200
 
     Add wrapper for gio.FileAttributeMatcher
 
@@ -35783,27 +17778,27 @@ Date:   Wed May 13 21:54:39 2009 +0200
     forgotten while
     wrapping the gio API. This should probably be done in gio itself.
 
- gio/gfileinfo.override | 24 ++++++++++++++++++++++--
- gio/gio-types.defs     |  7 +++++++
- gio/gio.override       |  2 ++
+ gio/gfileinfo.override |   24 ++++++++++++++++++++++--
+ gio/gio-types.defs    |    7 +++++++
+ gio/gio.override      |    2 ++
  3 files changed, 31 insertions(+), 2 deletions(-)
 
 commit e707447d9313f2f2ecba395cfe3682d5a5e859f4
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Wed May 13 22:06:25 2009 +0300
+Date:  Wed May 13 22:06:25 2009 +0300
 
     Mark relevant glib.IOChannel methods as METH_NOARGS
 
     Additionally fix glib.IOChannel.set_close_on_unref: was marked
     METH_NOARGS but actually accepted arguments.  Fixes bug #582427.
 
- glib/pygiochannel.c | 83
- +++++++++++++----------------------------------------
+ glib/pygiochannel.c |  83
+ +++++++++++++--------------------------------------
  1 file changed, 20 insertions(+), 63 deletions(-)
 
 commit 002915e5f458fec5a89766a54e8119a70a80caa7
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Tue May 12 20:37:24 2009 +0200
+Date:  Tue May 12 20:37:24 2009 +0200
 
     Add documentation for the gio.FileInfo class
 
@@ -35813,158 +17808,161 @@ Date:   Tue May 12 20:37:24 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                  |   2 +
- docs/reference/pygio-classes.xml  |   1 +
- docs/reference/pygio-fileinfo.xml | 346
- ++++++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                    2 +
+ docs/reference/pygio-classes.xml  |   1 +
+ docs/reference/pygio-fileinfo.xml |  346
+ +++++++++++++++++++++++++++++++++++++
  3 files changed, 349 insertions(+)
 
 commit 8cd25c871609580425c6c4c9e5bc6ec8d40862a1
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sat May 9 16:46:04 2009 +0300
+Date:  Sat May 9 16:46:04 2009 +0300
 
     Retire hand-written ChangeLog; autocreate from Git history
 
     Basically copied over from GLib source tree.
 
- ChangeLog => ChangeLog.pre-2.18 |  2 ++
- Makefile.am                     | 32 ++++++++++++++++++++++++++++++++
- 2 files changed, 34 insertions(+)
+ ChangeLog         | 3606
+ ---------------------------------------------------
+ ChangeLog.pre-2.18 | 3608
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Makefile.am       |   32 +
+ 3 files changed, 3640 insertions(+), 3606 deletions(-)
 
 commit 23556bdbcf9cf06db866901fb822dd78a9043648
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat May 9 00:03:05 2009 +0200
+Date:  Sat May 9 00:03:05 2009 +0200
 
     Fix a bug in InputStream.skip_async
 
     use the count argument instead of buffer_size which is always zero
 
- gio/ginputstream.override | 3 ++-
+ gio/ginputstream.override |   3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit ed6b06315c17441b41c001d38537c904b8fe18de
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat May 9 00:02:33 2009 +0200
+Date:  Sat May 9 00:02:33 2009 +0200
 
     Add docs for the gio.InputStream class
 
- docs/Makefile.am                     |   2 +
- docs/reference/pygio-classes.xml     |   1 +
- docs/reference/pygio-inputstream.xml | 730
- +++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                       2 +
+ docs/reference/pygio-classes.xml     |    1 +
+ docs/reference/pygio-inputstream.xml |  730
+ ++++++++++++++++++++++++++++++++++
  3 files changed, 733 insertions(+)
 
 commit d58322b84d47da7905f95b43e9e0daf9f7c4b507
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Mon May 4 23:40:28 2009 +0200
+Date:  Mon May 4 23:40:28 2009 +0200
 
     Wrap gio.InputStream.skip_async()
 
     wrap gio.InputStream.skip_async() and add a test.
 
- gio/ginputstream.override | 50
- ++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py         | 20 +++++++++++++++++++
+ gio/ginputstream.override |   50
+ ++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py        |   20 ++++++++++++++++++
  2 files changed, 69 insertions(+), 1 deletion(-)
 
 commit 2311187824d1b48a996ee2620fd3c9a63e3edd66
 Author: Siavash Safi <siavash@siavashs.org>
-Date:   Mon May 4 15:46:49 2009 +0430
+Date:  Mon May 4 15:46:49 2009 +0430
 
     Add -n --namespace option and the code to remove
     dll API in headers, Added documentation
 
     Patch from bug #579275
 
- ChangeLog        |   8 ++++
- codegen/h2def.py | 133
- +++++++++++++++++++++++++++++++++++++++++++++----------
+ ChangeLog          8 ++++
+ codegen/h2def.py |  133
+ ++++++++++++++++++++++++++++++++++++++++++++----------
  2 files changed, 117 insertions(+), 24 deletions(-)
 
 commit 442ec5bb997bb7dab55baeea6e54e79d3ce0d3c1
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Sat May 2 23:54:52 2009 +0300
+Date:  Sat May 2 23:54:52 2009 +0300
 
     Properly mark glib.get_user_special_dir() as a keywords method
 
     Fixes bug #581082.
 
- glib/glibmodule.c | 2 +-
+ glib/glibmodule.c |   2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f466dca880cc6ea68b9fe236943eea7a07d33520
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 3 11:03:25 2009 +0200
+Date:  Sun May 3 11:03:25 2009 +0200
 
     Add docs for the gio.LoadableIcon class
 
- docs/Makefile.am                      |   2 +
- docs/reference/pygio-classes.xml      |   1 +
- docs/reference/pygio-loadableicon.xml | 198
- ++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                        2 +
+ docs/reference/pygio-classes.xml      |    1 +
+ docs/reference/pygio-loadableicon.xml |  198
+ +++++++++++++++++++++++++++++++++
  3 files changed, 201 insertions(+)
 
 commit eab4ebf7f6c82580b61205f34e1cfe535aeada60
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sun May 3 01:21:55 2009 +0200
+Date:  Sun May 3 01:21:55 2009 +0200
 
     Add docs for the gio.ThemedIcon class
 
- docs/Makefile.am                    |   2 +
- docs/reference/pygio-classes.xml    |   1 +
- docs/reference/pygio-themedicon.xml | 204
- ++++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                      2 +
+ docs/reference/pygio-classes.xml    |   1 +
+ docs/reference/pygio-themedicon.xml | 204
+ +++++++++++++++++++++++++++++++++++
  3 files changed, 207 insertions(+)
 
 commit 22d7de8b620055f14b30f9c3c99160c8b4ebe672
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Sat May 2 12:25:19 2009 +0200
+Date:  Sat May 2 12:25:19 2009 +0200
 
     post release version bump to 2.17.1
 
- configure.ac | 2 +-
+ configure.ac |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 282ac3c76e1e3513bd76f819f320ec56aba15d9e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri May 1 23:40:31 2009 +0200
+Date:  Fri May 1 23:40:31 2009 +0200
 
     Fix the class title
 
- docs/reference/pygio-mountoperation.xml | 2 +-
+ docs/reference/pygio-mountoperation.xml |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d8b70dec1e5c09b73ae277f4f5b246315841fb8e
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Fri May 1 22:24:33 2009 +0200
+Date:  Fri May 1 22:24:33 2009 +0200
 
     Add docs for the gio.MountOperation class
 
- docs/Makefile.am                        |   2 +
- docs/reference/pygio-classes.xml        |   1 +
- docs/reference/pygio-constants.xml      | 107 +++++
- docs/reference/pygio-mountoperation.xml | 726
- ++++++++++++++++++++++++++++++++
+ docs/Makefile.am                          2 +
+ docs/reference/pygio-classes.xml          1 +
+ docs/reference/pygio-constants.xml      107 +++++
+ docs/reference/pygio-mountoperation.xml |  726
+ +++++++++++++++++++++++++++++++
  4 files changed, 836 insertions(+)
 
 commit fceea8e843e880f0469e454df23141e7dd2bc0cf
 Author: Gian Mario Tagliaretti <gianmt@gnome.org>
-Date:   Thu Apr 30 22:13:06 2009 +0200
+Date:  Thu Apr 30 22:13:06 2009 +0200
 
     Update NEWS, release 2.17.0
 
- NEWS | 93
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS |   93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 93 insertions(+)
 
 commit 47389217d1a65a8e3f404d486c508cf5d3164756
 Author: Paul Pogonyshev <pogonyshev@gmx.net>
-Date:   Thu Apr 30 22:47:19 2009 +0300
+Date:  Thu Apr 30 22:47:19 2009 +0300
 
     Fix memory leak in gio.File.query_info_async()
 
     After the recent patch it would leak exception data if old argument
     order was used.  Properly decref the objects.
 
- gio/gfile.override | 4 ++++
+ gio/gfile.override |   4 ++++
  1 file changed, 4 insertions(+)
diff --git a/ChangeLog.pre-2.18 b/ChangeLog.pre-2.18
new file mode 100644 (file)
index 0000000..2fb8ef4
--- /dev/null
@@ -0,0 +1,3608 @@
+=== ChangeLog discontinued ===
+
+2009-05-04  Siavash Safi  <siavash@siavashs.org>
+
+       Bug 579275 â€“ Patch which removes dll api in headers and adds
+       a namespace option
+
+       * codegen/h2def.py: Add -n --namespace option and the code to remove
+       dll API in headers, Added documentation
+
+2009-04-17  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 568499 â€“ CellRendererPixbuf stock-size property has wrong type
+
+       * gobject/pygtype.c (pyg_enum_get_value): Also accept long
+       integers.
+
+2009-04-15  Götz Waschk  <waschk@mandriva.org>
+
+       Bug 550231 â€“ missing dep on libffi in pygobject-2.0.pc
+
+       * configure.ac: Define `LIBFFI_PC' subst.
+
+       * pygobject-2.0.pc.in:
+       * pygobject-2.0-uninstalled.pc.in: Use it.
+
+2009-04-15  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 555613 â€“ gio.VolumeMonitor segfaults
+
+       * gio/gvolumemonitor.override (_wrap_g_volume_monitor_tp_new): New
+       function, return the singleton object.
+
+2009-04-14  James Westby  <jw+debian@jameswestby.net>
+
+       Bug 573753 â€“ DeprecationWarning under python 2.6
+
+       * codegen/definitions.py (ReturnType.__init__): Don't pass
+       'type_name' argument to super __init__.
+
+2009-04-14  Krzesimir Nowak  <krnowak@svn.gnome.org>
+
+       Bug 576566 â€“ several scripts from codegen directory are not
+       distributed
+
+       * codegen/Makefile.am (codegen_PYTHON): List several missing
+       scripts.
+
+2009-04-14  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: (_wrap_g_file_copy_async) change argument order
+       to keep it consistent with the other methods.
+
+2009-04-13  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 578870 â€“ memory leak in gio.File.copy_async
+
+       * gio/gio.override (PyGIONotify): Add 'slaves' field.
+       (pygio_notify_new_slave): New function.
+       (pygio_notify_reference_callback): Recurse for slaves, if any.
+       (pygio_notify_free): Likewise.
+
+       * gio/gfile.override (file_progress_callback_marshal): Use new
+       chaining functionality to avoid leaking the second PyGIONotify
+       structure.  Rename 'callback' as 'progress_callback' for clarity.
+
+2009-04-12  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs: (g_file_monitor) should accept None
+       for cancellable and set the default flag to G_FILE_MONITOR_NONE.
+
+2009-04-09  Jonathan Matthew  <jonathan@d14n.org>
+
+       Bug 575781 â€“ pyg_notify_free needs to ensure it has GIL before calling
+       Py_XDECREF
+
+       * gio/gio.override:  Ensure we're holding the GIL before potentially
+       destroying the callback and data.
+
+2009-04-05  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_set_display_name_async) Wrap new GFile method.
+       
+       * tests/test_gio.py: Test the above methods.
+
+2009-04-05  Tristan Hill  <stan@saticed.me.uk>
+
+       reviewed by: Gustavo J. A. M. Carneiro.
+
+       * glib/pygoptioncontext.c (pyg_option_get_context): Add a
+       semi-private method to return the option context C object from an
+       option context wrapper.  Used in gnome-python for fixing Bug
+       #507174.
+
+2009-04-05  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygtype.c (pyg_value_from_pyobject): Bug 577999 â€“
+       converting a negative long Python value to a GUINT64 GValue
+       doesn't error out as it should.
+
+2009-04-04  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_set_attributes_async)
+       (_wrap_g_file_set_attributes_finish) Wrap new GFile methods.
+       
+       * tests/test_gio.py: Test the above methods.
+
+2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_query_filesystem_info_async) Fix a typo.
+
+2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_query_filesystem_info_async) Wrap new GFile method.
+
+2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs: Add missing g_file_query_filesystem_info_async and
+       g_file_query_filesystem_info_finish
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: (_wrap_g_file_mount_mountable)
+       Swap kwargs names to reflect the code.
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: (_wrap_g_file_mount_enclosing_volume)
+       Swap kwargs names to reflect the code.
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_find_enclosing_mount_async) Wrap new GFile method.
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override:
+       (_wrap_g_file_eject_mountable) Wrap new GFile method.
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: (_wrap_g_file_copy) revert previous commit.
+
+2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: (_wrap_g_file_copy) callback cannot be optional.
+
+2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gvolume.override: (_wrap_g_volume_mount) should accept None
+       for mount_operation.
+
+2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gvolume.override: Swap kwargs names to reflect the code.
+
+2009-03-29  Tobias Mueller  <tobiasmue@gnome.org>
+
+       * ltihooks.py:
+       * pygtk.py:
+       * COPYING:
+       * gobject/pygparamspec.h:
+       * gobject/pygpointer.c:
+       * gobject/ffi-marshaller.h:
+       * gobject/pygtype.c:
+       * gobject/__init__.py:
+       * gobject/pygpointer.h:
+       * gobject/pygtype.h:
+       * gobject/pygflags.c:
+       * gobject/pyginterface.c:
+       * gobject/pygflags.h:
+       * gobject/pygboxed.c:
+       * gobject/gobjectmodule.c:
+       * gobject/pygenum.c:
+       * gobject/pyginterface.h:
+       * gobject/pygboxed.h:
+       * gobject/pygobject.c:
+       * gobject/constants.py.in:
+       * gobject/pygenum.h:
+       * gobject/propertyhelper.py:
+       * gobject/pygparamspec.c:
+       * gobject/ffi-marshaller.c:
+       * glib/pygmainloop.c:
+       * glib/pygoptioncontext.h:
+       * glib/pygmainloop.h:
+       * glib/pyglib-private.h:
+       * glib/__init__.py:
+       * glib/pygoptiongroup.c:
+       * glib/pygspawn.c:
+       * glib/pygmaincontext.c:
+       * glib/pygoptiongroup.h:
+       * glib/pygspawn.h:
+       * glib/pygmaincontext.h:
+       * glib/option.py:
+       * glib/pygsource.c:
+       * glib/glibmodule.c:
+       * glib/pygiochannel.h:
+       * glib/pygsource.h:
+       * glib/pyglib.c:
+       * glib/pyglib.h:
+       * glib/pyglib-python-compat.h:
+       * glib/pygoptioncontext.c:
+       * gio/gfileinfo.override:
+       * gio/gappinfo.override:
+       * gio/__init__.py:
+       * gio/gfileattribute.override:
+       * gio/gvolume.override:
+       * gio/gio.override:
+       * gio/ginputstream.override:
+       * gio/goutputstream.override:
+       * gio/unix.override:
+       * gio/gfile.override:
+       * gio/gvolumemonitor.override:
+       * gio/gapplaunchcontext.override:
+       * gio/giomodule.c:
+       * gio/gfileenumerator.override:
+       * gio/pygio-utils.c:
+       * gio/unixmodule.c:
+       * gio/pygio-utils.h:
+       * gio/gicon.override:
+       Update the address of the FSF, by replacing old bits of the address 
+       with new ones.
+       Fixes bug 577134
+
+2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs: Add g_volume_should_automount
+
+2009-03-28  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/pygio-utils.[hc]: (strv_to_pylist) (pylist_to_strv) add a couple
+       of convinence functions to convert from/to a python list and an array
+       of strings.
+
+       * gio/Makefile.am
+       * gio/gdrive.override:
+       * gio/gio.override: Strip GDrive overrides and
+       wrap g_drive_enumerate_identifiers
+       
+       * tests/test_gio.py:
+       * gio/gvolume.override: wrap g_volume_enumerate_identifiers
+
+       * gio/gio.defs: add missing g_drive_get_identifier and
+       g_drive_enumerate_identifiers
+
+2009-03-22  Mark Lee  <marklee@svn.gnome.org>
+
+       Bug 559001 â€“ Allow setting pytype wrapper class
+
+       initial patch by: John Ehresman  <jpe@wingware.com>
+
+       * gobject/pygtype.c (_wrap_g_type_wrapper__set_pytype): New function.
+
+       * tests/test_gtype.py (GTypeTest.assertPyType),
+       (GTypeTest.setInvalidPyType), (GTypeTest.testPyType),
+       (GTypeTest.testInvalidPyType): Two new testcases to test the above,
+       with accompanying helper methods.
+
+2009-03-22  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs: Add g_file_enumerator_get_container, new in 2.18
+
+2009-03-22  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfileenumerator.override (_wrap_g_file_enumerator_close_async)
+       wrap new method.
+
+       * tests/test_gio.py (TestGFileEnumerator.testCloseFilesAsync):
+       Test the above.
+
+2009-03-09  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * docs/reference/Changelog: Create a dedicated Changelog for the docs
+       and move the latest entries in there.
+
+2009-02-20  James Henstridge  <james@jamesh.id.au>
+
+       * ltihooks.py: pull in changes from pygtk (updating license header
+       from GPL to LGPL).
+
+2009-02-18  Andre Klapper  <a9016009@gmx.de>
+
+       * gobject/pygobject.h:
+       Change comment to avoid false positives when grep'ing for 
+       deprecated gtk functions
+
+2009-02-17  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * gio/gfile.override, gio/gio.defs, gio/gio.override: Bug 556250
+       again.  I screwed up and gave misinformation about how to fix it.
+       It must be pyg_begin/end_allow_threads, pyg_block/unblock_threads
+       is only to be used for async callbacks.
+
+2009-02-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 556250 â€“ non-async functions don't release python locks before
+       calling blocking C functions
+
+       * gio/gio.override:
+       * gio/gfile.override:
+       * gio/gio.defs: release the thread lock.
+
+2009-02-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs:
+       * gio/gio-types.defs:
+       * gio/unix.defs: Add 2.18 gio API.
+
+2009-02-08  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 568427 â€“ "gio.Error: Too many open files" without too many
+       open files
+       
+       * gobject/pygtype.c (_wrap_g_type_wrapper__get_name):
+       * gobject/gobjectmodule.c (get_type_name_for_class):
+       * gobject/pygobject.c (build_parameter_list), (PyGProps_length):
+       * gio/gfileinfo.override (_wrap_g_file_info_list_attributes):
+       * gio/gio.override (_wrap_g_content_type_guess):
+       * gio/gfile.override (_wrap__file_init), (_wrap_g_file_load_contents)
+       (_wrap_g_file_load_contents_finish): Remove some memory leaks.
+       
+       * gio/gio.defs: add (caller-owns-return #t) all over the place to
+       prevent memory leaks.
+       
+       patch contributed by Paul Pogonyshev, Paolo Borelli and
+       Gian Mario Tagliaretti.
+
+2009-02-06  Murray Cumming  <murrayc@murrayc.com>
+
+       * codegen/h2def.py DefsWriter::write_enum_defs(): Prevent an exception 
+       when the prefix is empty.
+
+2009-01-29  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 569350 â€“ Inconsistent use of tabs and spaces in pygtk.py
+
+       * pygtk.py: Replace all tabs with spaces.
+
+2009-01-29  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 567792 â€“ gio.InputStream.read_async can cause memory
+       corruption
+
+       * gio/gio.override (py_decref_callback): Remove (unused now).
+       (pygio_notify_allocate_buffer, pygio_notify_attach_to_result)
+       (pygio_notify_get_attached): New functions.
+       (async_result_callback_marshal): Attach to the result object if
+       asked and then don't free self.  Fix reference leak (spotted by
+       Gustavo).
+
+       * gio/ginputstream.override (async_result_callback_marshal_read):
+       Remove.  Use new attachment functionality in
+       async_result_callback_marshal() instead.
+       (_wrap_g_input_stream_read_async): Use the new functions (also
+       those mentioned in the cleanup log below).
+       (_wrap_g_input_stream_read_finish): Use the new functions.
+
+2009-01-27  Daniel Elstner  <danielk@openismus.com>
+
+       * codegen/docextract_to_xml.py (escape_text): Do not escape the
+       ampersand "&" in entity references (bug #568485).  Replace some
+       unusual entity references in the output with their literal values.
+
+2009-01-14  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 566571 â€“ gtk.Buildable interface method override is not
+       recognized
+
+       * gobject/gobjectmodule.c (pyg_type_add_interfaces): New function,
+       break out code repetition out of pyg_type_register().
+
+       * tests/test_subtype.py
+       (TestSubType.test_gtk_buildable_virtual_method): New test
+       case (inactive).
+
+2009-01-14  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 566706 â€“ cleanup GIO overrides
+
+       * gio/gio.override (pygio_notify_new)
+       (pygio_notify_using_optional_callback)
+       (pygio_notify_callback_is_valid_full)
+       (pygio_notify_callback_is_valid)
+       (pygio_notify_reference_callback): New functions.
+       (pygio_notify_free): Rename from pygio_free_notify() and extend.
+       (async_result_callback_marshal): Warn if new `referenced' field is
+       not set (programming error).
+       (_wrap_g_drive_eject, _wrap_g_drive_poll_for_media)
+       (_wrap_g_mount_unmount, _wrap_g_mount_eject)
+       (_wrap_g_mount_remount): Lots of cleanup: use new functions
+       instead of repeating code, unify and fix error handling.
+
+       * gio/gfile.override (_wrap_g_file_read_async)
+       (_wrap_g_file_load_contents_async)
+       (_wrap_g_file_enumerate_children_async)
+       (_wrap_g_file_mount_mountable, _wrap_g_file_unmount_mountable)
+       (_wrap_g_file_mount_enclosing_volume, _wrap_g_file_copy)
+       (_wrap_g_file_copy_async, _wrap_g_file_move)
+       (_wrap_g_file_append_to_async, _wrap_g_file_create_async)
+       (_wrap_g_file_replace_async, _wrap_g_file_query_info_async)
+       (_wrap_g_file_replace_contents_async): Similar cleanup.
+
+       * gio/gfileenumerator.override
+       (_wrap_g_file_enumerator_next_files_async): Similar cleanup.
+
+       * gio/gicon.override (_wrap_g_loadable_icon_load_async): Similar
+       cleanup.
+
+       * gio/ginputstream.override (_wrap_g_input_stream_close_async):
+       Similar cleanup.
+
+       * gio/goutputstream.override (_wrap_g_output_stream_write_async)
+       (_wrap_g_output_stream_close_async): Similar cleanup.
+
+       * gio/gvolume.override (_wrap_g_volume_mount)
+       (_wrap_g_volume_eject): Similar cleanup.
+
+       * tests/test_gio.py (TestFile.test_copy_async): Fix the test.
+
+2009-01-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_type_register): Add a comment
+       explaining why the two for loops for registering interfaces.
+
+2009-01-07  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 566744 â€“ _wrap_g_input_stream_read_async() argument parsing
+       has incorrect keyword args
+
+       * gio/ginputstream.override (_wrap_g_input_stream_read_async): Fix
+       keyword list to be in sync with positional arguments.
+
+2009-01-06  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 566737 â€“ Bad -I ordering can break build
+
+       * Makefile.am:
+       * gobject/Makefile.am:
+       * gio/Makefile.am:
+       * tests/Makefile.am:
+       Commit a patch from [dmacks at netspace dot org]
+
+2009-01-04  Mads Chr. Olesen  <gnome-bugzilla@shiyee.dk>
+
+       * gio/gio.defs (gio.File.copy_async, gio.File.copy_finish): Define
+       methods.
+
+       * gio/gfile.override (_wrap_g_file_copy_async): New function.
+
+       * tests/test_gio.py (TestFile.test_copy_async): Test the methods.
+
+2009-01-04  PrzemysÅ‚aw Grzegorczyk  <pgrzegorczyk@gmail.com>
+
+       Bug 563714 â€“ GNOME Goal: Clean up GLib and GTK+ includes
+
+       * gobject/generate-constants.c:
+       * glib/pygspawn.c: Only include toplevel <glib.h>.
+
+2009-01-04  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 564018 â€“ pygobject libtool-2.2 patch
+
+       * configure.ac: Apply the patch provided by Cygwin Ports
+       maintainer.
+
+2009-01-04  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * configure.ac: Branch, bump version to 2.17.0.
+
+=== 2.16.0 ===
+2008-12-24  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547119 â€“ gobject.timeout_add_seconds() not found in docs
+
+       * docs/reference/pyglib-functions.xml (glib.timeout_add_seconds):
+       Describe.
+
+2008-12-21  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 564102 â€“ _wrap_g_output_stream_write_async not adding a
+       reference to the buffer passed
+
+       * gio/gio.override (pygio_notify_copy_buffer): New function.
+       (pygio_free_notify): Free new `buffer' field if it is set.
+
+       * gio/goutputstream.override (_wrap_g_output_stream_write_async):
+       Copy the buffer with new pygio_notify_copy_buffer() and use the
+       copy for g_output_stream_write_async() call.
+
+       * gio/gfile.override (_wrap_g_file_replace_contents_async): Same
+       as for _wrap_g_output_stream_write_async().
+
+2008-12-03  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * glib/pyglib.c (pyglib_error_check): Test if `domain' is not-null
+       before using it (avoids segfaults, see bug #561826).
+
+2008-10-31  John Finlay  <finlay@moeraki.com>
+
+       * codegen/__init__.py (__all__): Add defsgen to __all__ list.
+
+       * codegen/h2def.py (find_enum_defs): Strip out # directives from
+       enum defintions.
+       (clean_func): Change ' * G_CONST_RETURN * ' to '** '
+
+       * codegen/Makefile.am (codegen_PYTHON): Add defsgen.py
+
+       * codegen/defsgen.py (typecode): Use the passed in prefix as a
+       hint when creating a typecode.
+       (split_prefix,write_enum_defs,_write_obj_helper): Add function to
+       use passed in prefix as a hint when splitting an object name into
+       module and name.
+
+       * codegen/h2def.py (DefsWriter.write_enum_defs): Make sure the
+       prefix ends with a _ i.e. really handle the GDK_FONT_FONT,
+       GDK_FONT_FONTSET case.
+
+2008-09-12  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/goutputstream.override
+       (g_output_stream_write_all): use gsize instead of gssize.
+
+2008-09-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 530935 â€“ pygobject_set_properties doesnt release the GIL
+
+       * gobject/pygobject.c (pygobject_set_properties): Reuse
+       set_property_from_pspec() which release GIL for us.  Also make
+       sure that g_object_thaw_notify() is called even after error.
+
+2008-09-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 549517 â€“ add __repr__ to gio.Drive, gio.Mount and gio.Volume
+
+       * gio/gio.override (_wrap_g_drive_tp_repr, _wrap_g_mount_tp_repr):
+       New functions.
+
+       * gio/gvolume.override (_wrap_g_volume_tp_repr): New function.
+
+2008-09-09  Loïc Minier  <lool@dooz.org>
+
+       Bug 551227 â€“ Missing AC_CONFIG_MACRO_DIR([m4])
+
+       * configure.ac: Add AC_CONFIG_MACRO_DIR.
+
+2008-09-08  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 551056 â€“ make codegen not import when corresponding argument
+       types are not registered
+
+       * codegen/override.py (import_pat): Add support for optional 'for'
+       clause.
+       (Overrides.__parse_override): Handle it.
+
+       * codegen/codegen.py (SourceWriter.write_imports)
+       (SourceWriter.write_object_imports): Adapt for changes in
+       get_imports() return value.
+       (is_registered_object): New function.
+
+2008-09-07  Frederic Peters  <fpeters@0d.be>
+
+       * gio/gfile.override (_wrap_g_file_load_contents)
+       (_wrap_g_file_load_contents_finish): Fix typos breaking
+       compilation (bug #551212).
+
+2008-09-07  Jonathan Matthew  <jonathan@d14n.org>
+
+       Bug 551059 â€“ GFile load_contents methods chop data at first \0
+
+       * gio/gfile.override:
+       Use 's#' (length specified) rather than 's' when constructing
+       result values in load_contents and load_contents_finish.
+
+2008-09-03  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       Post release version bump
+
+=== 2.15.4 ===
+2008-09-03  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2008-09-03  Loïc Minier  <lool@dooz.org>
+
+       * gobject/pygpointer.c: (pyg_register_pointer):
+       Fix typo (s/&type/type) introduced in r886 causing weird crashes on
+       x86-64; bug #550463.
+
+2008-09-01  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * codegen/argtypes.py: add G_TYPE_CLOSURE boxed type in codegen.
+
+2008-08-31  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       Post release version bump
+
+=== 2.15.3 ===
+2008-08-31  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2008-08-30  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * glib/pyglib.h: * gobject/pygobject.c: Fix memory problems
+       reported by valgrind due to invalid tp_basicsize in
+       PyGPropsDescr_Type.  Closes #549945.
+
+2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 549191 â€“ Constructor of gtk.TreeView raises TypeError when
+       model is None
+
+       * gobject/pygtype.c (pyg_value_from_pyobject): Handle None in
+       G_TYPE_INTERFACE branch.
+
+2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 549351 â€“ an unitialized variable in PyGLib
+
+       * glib/pygmainloop.c (pyg_main_loop_init): Initialize
+       `is_running'.
+
+2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547633 â€“ cannot create new threads when pygtk is used
+
+       * glib/pyglib.c (_pyglib_notify_on_enabling_threads): New
+       function.
+       (pyglib_enable_threads): Invoke all callbacks added with new
+       _pyglib_notify_on_enabling_threads().
+
+       * gobject/gobjectmodule.c (pyg_note_threads_enabled): New
+       function (callback for new _pyglib_notify_on_enabling_threads()).
+       (PYGLIB_MODULE_START): Initialize
+       'pygobject_api_functions.threads_enabled' and also watch for
+       thread being enabled later on.
+
+2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547088 â€“ wrap g_content_types_get_registered()
+
+       * gio/gio.override (_wrap_g_drive_get_volumes): Fix refleak.
+       (_wrap_g_content_types_get_registered): New function.
+
+       * gio/gfileenumerator.override (_wrap_g_file_enumerator_next_files_finish):
+       Fix refleak.
+
+       * gio/gvolumemonitor.override (_wrap_g_volume_monitor_get_connected_drives):
+       Fix refleak.
+       (_wrap_g_volume_monitor_get_volumes): Likewise.
+       (_wrap_g_volume_monitor_get_mounts): Likewise.
+
+2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547494 â€“ gio.InputStream.read() looks broken
+
+       * gio/gio.defs (gio.InputStream.read_part): Rename from read(),
+       document.
+       (gio.InputStream.read): Rename from read_all(), document.
+       (gio.OutputStream.write_part): Rename from write(), document.
+       (gio.OutputStream.write): Rename from write_all(), document.
+
+       * gio/ginputstream.override (_wrap_g_input_stream_read): Fix
+       several bugs.
+       (_wrap_g_input_stream_read_all): New function.
+
+       * gio/goutputstream.override (_wrap_g_output_stream_write_all):
+       New function.
+
+       * tests/test_gio.py (TestInputStream.testRead): Add more tests.
+       (TestInputStream.test_read_part): New test.
+       (TestInputStream._read_in_loop): New helper method.
+       (TestOutputStream.test_write_part): New test.
+
+2008-08-16  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gio/gfile.override (_wrap_g_file_enumerate_children_async): Fix
+       keywords getting out of sync with actual argument order.
+
+2008-08-13  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547495 â€“ wrap four important asynchronous methods in gio.Drive
+       and gio.Mount
+
+       * gio/gio.defs (gio.Drive.eject, gio.Drive.poll_for_media)
+       (gio.Mount.remount): Document.
+
+       * gio/gio.override (_wrap_g_drive_eject)
+       (_wrap_g_drive_poll_for_media, _wrap_g_mount_eject)
+       (_wrap_g_mount_remount): New functions.
+
+2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547484 â€“ wrap gio.DataInputStream.read_line and ...read_until
+
+       * tests/test_gio.py (TestDataInputStream): New test case.
+
+       * gio/gio.defs (gio.DataInputStream.read_line)
+       (gio.DataInputStream.read_until): Document.
+
+       * gio/ginputstream.override (_wrap_g_data_input_stream_read_line)
+       (_wrap_g_data_input_stream_read_until): New functions.
+
+2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547354 â€“ wrap a few memory stream methods
+
+       * gio/ginputstream.override (_wrap_g_memory_input_stream_add_data):
+       New function.
+
+       * gio/gio.defs (gio.MemoryOutputStream.get_contents): Rename from
+       get_data() to avoid name clash.
+
+       * gio/goutputstream.override (_wrap_g_memory_output_stream_new)
+       (_wrap_g_memory_output_stream_get_data): New functions.
+
+       * tests/test_gio.py (TestMemoryInputStream)
+       (TestMemoryOutputStream): New test cases.
+
+2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gio/gio.override: Ignore `g_io_module*' and `g_io_scheduler_*'.
+
+2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 540376 â€“ No TypeError raised when type is None
+
+       * gobject/gobjectmodule.c (pyg_signal_new): Add check on second
+       argument type.
+
+       * tests/test_signal.py (TestSignalCreation): New test case.
+
+2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547104 â€“ improve type wrapper creation
+
+       * gio/gappinfo.override (_wrap_g_app_info_tp_richcompare)
+       (_wrap_g_app_info_tp_repr): New functions.
+
+       * tests/test_gio.py (TestAppInfo.test_eq): New test.
+
+2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547104 â€“ improve type wrapper creation
+
+       * gobject/pygobject.c (pygobject_register_class): Use new
+       pygobject_inherit_slots() to propagate custom slots in normal
+       types too.
+       (pygobject_inherit_slots): New function, break out of
+       pygobject_new_with_interfaces() and rewrite a bit.
+       (pygobject_find_slot_for): Add new argument that can forbid
+       overriding non-NULL slots.
+
+       * gio/gicon.override (pygio_do_icon_richcompare): Remove, the code
+       is now directly in _wrap_g_icon_tp_richcompare().
+       (_wrap_g_file_icon_tp_richcompare, _wrap_g_file_icon_tp_hash)
+       (_wrap_g_themed_icon_tp_richcompare, _wrap_g_themed_icon_tp_hash):
+       Remove, duplicating code in this way is not needed anymore.
+
+2008-08-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 546120 â€“ make gio.File more Pythonic
+
+       * gio/gfile.override (_wrap_g_file_tp_richcompare)
+       (_wrap_g_file_tp_hash, _wrap_g_file_tp_repr): New functions.
+
+       * tests/test_gio.py (TestFile.test_eq, TestFile.test_hash): New
+       tests.
+
+2008-08-10  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 547104 â€“ improve runtime type wrapper creation
+
+       * gobject/pygobject.c (pygobject_new_with_interfaces): Use new
+       pygobject_find_slot_for() for `tp_richcompare', `tp_compare`,
+       `tp_hash', `tp_iter', `tp_repr', `tp_str' and `tp_print'.
+       (pygobject_find_slot_for): New static function.
+
+2008-08-10  Jonathan Matthew  <jonathan@d14n.org>
+
+       Bug 547134 â€“ fix docstring line length
+
+       * gio/gio.defs:
+       Fix docstring line lengths so they don't wrap across lines in an 80
+       column terminal.
+
+2008-08-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs:
+       Add GFile.query_default_handler which was missing from the defs.
+
+2008-08-10  Jonathan Matthew  <jonathan@d14n.org>
+
+       Bug 547067 â€“ add File.replace_contents, replace_contents_async,
+       replace_contents_finish.
+
+       * gio/gfile.override:
+       * gio/gio.defs:
+       * tests/test_gio.py:
+       Add overrides, docs, and tests for File.replace_contents,
+       replace_contents_async, and replace_contents_finish.
+
+2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * tests/test_gicon.py (TestThemedIcon.test_constructor): Fix to
+       not use `use_default_fallbacks' property (it's new).
+
+2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 546135 â€“ GIcon and implementations improvements
+
+       * gio/gio.defs (g_file_icon_new): Change from method of gio.File
+       to constructor of gio.FileIcon.
+
+       * tests/test_gicon.py (TestIcon.test_eq, Test_Eq.test_hash)
+       (TestLoadableIcon.setUp): Adapt accordingly.
+       (TestFileIcon): New test case.
+
+2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 546591 â€“ File.copy progress_callback does not work
+
+       * gio/gfile.override (file_progress_callback_marshal): Use
+       PyObject_CallFunction() instead of PyEval_CallFunction().  Use "K"
+       instead of "k" (the latter is not correct for 32-bit platforms).
+       Don't free 'notify' here.
+       (_wrap_g_file_copy): Free 'notify'.
+       (_wrap_g_file_move): Likewise.
+
+       * gio/gio.override (pygio_free_notify): New function.
+       (async_result_callback_marshal): Use it.
+
+       * tests/test_gio.py (TestFile.test_copy_progress.progress): New
+       test.
+
+2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 546135 â€“ GIcon and implementations improvements
+
+       * gio/gio.defs (gio.LoadableIcon.load)
+       (gio.LoadableIcon.load_async, gio.LoadableIcon.load_finish):
+       Document.
+
+       * gio/Makefile.am:
+       * gio/gicon.override: New file: parts of 'gio.override', three
+       methods of gio.LoadableIcon and gio.ThemedIcon constructor.
+
+       * gio/gio.override: Move over all icon-related overrides to
+       'gicon.override'.
+
+       * tests/Makefile.am:
+       * tests/test_gicon.py: New file: parts of 'test_gio.py' and
+       several new gio.Icon tests.
+
+       * tests/test_gio.py (TestThemedIcon): Move over to
+       'test_gicon.py'.
+
+2008-08-07  Jonathan Matthew  <jonathan@d14n.org>
+
+       Bug 546734 â€“ Missing Py_INCREFs for some file async methods
+
+       * gio/gfile.override:
+       Increment refcounts on callbacks and callback data for
+       append_to_async, create_async, replace_async, query_info_async and
+       load_contents_async as for all other async methods.
+
+2008-08-06  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gfile.override:
+       * gio/gio.defs:
+       Move the progress callback for move/copy so it's consistent with
+       the documentation and positional arguments. Update documentation as well
+
+2008-08-06  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib.c (pyglib_enable_threads):
+       * gobject/gobjectmodule.c (pyg_threads_init),
+       (pygobject_enable_threads):
+       Add a pygobject_enable_threads wrapper around pyglib_threads_enable
+       and return 0/-1 which existing gobject based applications expect.
+
+2008-08-06  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib.c (pyglib_init):
+       return in case of error instead of trying to access the internal
+       types.
+
+2008-08-06  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gio/gio.override: Add 'pygio_do_icon_richcompare' prototype to
+       header.
+       (_wrap_g_file_icon_tp_repr, _wrap_g_themed_icon_tp_repr): Fix
+       return value type in signature.
+
+2008-08-05  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       Bug 546135 â€“ GIcon and implementations improvements
+
+       * gio/gio-types.defs (FileIcon): New 'define-object'.
+
+       * gio/gio.override (pygio_do_icon_richcompare)
+       (_wrap_g_icon_tp_richcompare, _wrap_g_icon_tp_hash)
+       (_wrap_g_file_icon_tp_richcompare, _wrap_g_file_icon_tp_hash)
+       (_wrap_g_file_icon_tp_repr, _wrap_g_themed_icon_tp_richcompare)
+       (_wrap_g_themed_icon_tp_hash, _wrap_g_themed_icon_tp_repr): New
+       functions.
+
+2008-08-03  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 546046 â€“ Wrap GFile.replace_async and query_info_async
+
+       * tests/test_gio.py:
+       * gio/gfile.override:
+       * gio/gio.defs:
+       Wrap GFile.replace_async and query_info_async with docs and test.
+
+2008-08-03  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * glib/pyglib.h:
+       * glib/pyglib.c (pyglib_enable_threads): Change return value from
+       'gboolean' to 'int' and changed semantics to Pythonic: restores
+       backwards compatibility.
+
+       * gobject/gobjectmodule.c (pyg_threads_init): Treat return value
+       accordingly (bug #544946).
+
+2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 546020 â€“ Wrap GFile.create_async
+
+       * tests/test_gio.py:
+       * gio/gfile.override:
+       * gio/gio.defs:
+       Wrap GFile.create_async with docs and test
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * codegen/docgen.py:
+       Remove SGML support, require python 2.4, modernize,
+       PEP-8ify. Make it run on gio.
+
+       * codegen/definitions.py:
+       Make property iterable
+
+       * gio/gio.defs:
+       Include the gio-types.defs file.
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_set_prgname):
+       * glib/pygoptioncontext.c (pyg_option_context_init),
+       (pyg_option_context_set_help_enabled),
+       (pyg_option_context_set_ignore_unknown_options),
+       (pyg_option_context_set_main_group),
+       (pyg_option_context_add_group):
+       * glib/pygoptiongroup.c (arg_func), (pyg_option_group_add_entries),
+       (pyg_option_group_set_translation_domain),
+       (pyg_option_group_compare), (pyglib_option_group_register_types):
+       Fix compilation warnings, clean up style and indentation.
+
+2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 545959 â€“ Wrap GFile.append_to_async
+
+       * tests/test_gio.py:
+       * gio/gfile.override:
+       * gio/gio.defs:
+       Wrap GFile.append_to_async with docs and test
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gfileinfo.override:
+       * gio/gio.override:
+       * glib/glibmodule.c (pyglib_get_current_time):
+       * glib/pyglib.c (pyglib_float_from_timeval):
+       * glib/pyglib.h:
+       Add pyglib_float_from_timeval and use it
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * docs/Makefile.am:
+       * docs/reference/pyglib-constants.xml:
+       * docs/reference/pyglib-functions.xml:
+       * docs/reference/pyglib-maincontext.xml:
+       * docs/reference/pyglib-mainloop.xml:
+       * docs/reference/pygobject-classes.xml:
+       * docs/reference/pygobject-constants.xml:
+       * docs/reference/pygobject-functions.xml:
+       * docs/reference/pygobject-maincontext.xml:
+       * docs/reference/pygobject-mainloop.xml:
+       Separate the glib and gobject bindings in the manual.
+
+2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       Bug 545920 â€“ Wrap GFile.query_writable_namespaces
+
+       * tests/test_gio.py:
+       * gio/gfile.override:
+       * gio/gio.defs:
+       Wrap GFile.query_writable_namespaces with docs and test
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.defs:
+       * gio/gfile.override:
+       * tests/test_gio.py:
+       Wrap gio.File.move
+
+2008-08-02  Johan Dahlin  <johan@gnome.org>
+
+       * gio/Makefile.am:
+       * gio/gfile.override:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * gio/gvolume.override:
+       Wrap gio.Volume.mount and gio.Volume.eject
+
+2008-08-01  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gio.defs:
+       Add docstring for gio.FileInfo.list_attributes
+
+2008-08-01  Johan Dahlin  <johan@gnome.org>
+
+       Bug 545861 â€“ g_file_info_get_modification_time is missing
+       * gio/gfileinfo.override:
+       * gio/gio.defs:
+       * tests/test_gio.py:
+       Wrap, add test and documentation
+
+2008-08-01  Johan Dahlin  <johan@gnome.org>
+
+       Bug 545846 â€“ g_vfs_get_supported_uri_schemes is missing
+
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Wrap, add test and documentation
+
+2008-08-01  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_set_application_name):
+       Use %r instead of %s, this is not python!
+
+2008-07-31  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_set_prgname)
+       (pyglib_set_application_name): Use METH_O instead of METH_VARARGS.
+       (_glib_functions): Add doc strings for idle_add, timeout_add,
+       timeout_add_seconds, io_add_watch, child_watch_add, source_remove,
+       main_depth and main_context_default.
+
+2008-07-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * tests/test_gio.py:
+       * gio/gfileattribute.override:
+       * gio/gio.override:
+       * gio/gio.defs:
+       * gio/gfile.override:
+       * gio/Makefile.am: Wrap new object gio.FileAttributeInfo,
+       g_file_set_attribute and g_file_query_settable_attributes methods.
+
+2008-07-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/unix-types.defs: Wrap gio.unix.DesktopAppInfo
+
+       * gio/gappinfo.override:
+       * gio/gio.override:
+       * gio/gio.defs:
+       * gio/gapplaunchcontext.override:
+       * gio/Makefile.am: Wrap g_app_info_launch_uris,
+       g_app_info_launch, g_app_launch_context_get_display and
+       g_app_launch_context_get_startup_notify_id
+
+       * gio/pygio-utils.c:
+       * gio/pygio-utils.h: Add a couple of useful function to reduce the
+       code in wrapped methods.
+
+2008-07-29  Johan Dahlin  <johan@gnome.org>
+
+       * examples/gio/downloader.py:
+       * gio/giomodule.c (init_gio):
+       Add gio.FILE_ATTRIBUTE_* constants and update the examples to use them.
+
+2008-07-29  Johan Dahlin  <johan@gnome.org>
+
+       * examples/gio/downloader.py:
+       Add a new example
+
+       * gio/ginputstream.override:
+       Use a string internally instead of a PyStringObject when
+       in read_async. Create a new python string in finish and
+       honor the number of bytes read.
+
+2008-07-28  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib-python-compat.h:
+       * gobject/pygobject-private.h:
+       Move all compatibility into the same place, fixes build
+       on python 2.4.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * glib/option.py:
+       Remove tabs. Use sys.exc_info()[1] to fetch the exception value
+
+       * gobject/__init__.py:
+       * gobject/propertyhelper.py:
+       Import gobject._gobject instead of just gobject.
+
+       * gobject/Makefile.am:
+       * gobject/constants.py.in:
+       * gobject/generate-constants.c (main):
+       Don't add long suffix if python >= 3.0
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib-python-compat.h:
+       * gobject/gobjectmodule.c (pyg_object_new),
+       (pyg__install_metaclass):
+       * gobject/pygboxed.c (pyg_boxed_dealloc), (pyg_boxed_init),
+       (pyg_register_boxed):
+       * gobject/pygenum.c (pyg_enum_reduce):
+       * gobject/pyginterface.c (pyg_interface_init),
+       (pyg_register_interface):
+       * gobject/pygobject.c (pygobject_get_inst_data),
+       (pygobject_register_class), (pygobject_new_with_interfaces),
+       (pygobject_dealloc), (pygobject_repr), (pygobject_emit),
+       (pygobject_chain_from_overridden), (pygobject_weak_ref_notify):
+       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
+       * gobject/pygpointer.c (pyg_pointer_dealloc), (pyg_pointer_init),
+       (pyg_register_pointer):
+       * gobject/pygtype.c (pyg_type_from_object),
+       (pyg_value_array_from_pyobject), (pyg_value_from_pyobject),
+       (pyg_object_descr_doc_get):
+       Use the Py_TYPE macro everywhere.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib-python-compat.h:
+       Add a Py_TYPE macro for accessing ob_type.
+       * glib/glibmodule.c (pyglib_register_constants):
+       * gobject/gobjectmodule.c (pygobject__g_instance_init),
+       (pyg_integer_richcompare):
+       * gobject/pygenum.c (pyg_enum_repr), (pyg_enum_from_gtype),
+       (pyg_enum_add), (pyg_enum_get_value_name),
+       (pyg_enum_get_value_nick):
+       * gobject/pygflags.c (pyg_flags_repr), (pyg_flags_from_gtype),
+       (pyg_flags_add), (pyg_flags_and), (pyg_flags_or), (pyg_flags_xor),
+       (pyg_flags_get_first_value_name), (pyg_flags_get_first_value_nick),
+       (pyg_flags_get_value_names), (pyg_flags_get_value_nicks):
+       Use Py_TYPE and PyLong macros to access struct fields
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_param_spec_from_object),
+       (add_properties), (pyg_signal_new), (pyg_signal_list_ids),
+       (pyg_signal_lookup), (pyg_signal_query):
+       * gobject/pygenum.c (pyg_enum_richcompare), (pyg_enum_new),
+       (pyg_enum_from_gtype), (pyg_enum_add), (pyg_enum_reduce),
+       (pygobject_enum_register_types):
+       * gobject/pygflags.c (pyg_flags_richcompare), (pyg_flags_new),
+       (pyg_flags_from_gtype), (pyg_flags_add), (pyg_flags_and),
+       (pyg_flags_or), (pyg_flags_xor), (pygobject_flags_register_types):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c (pygobject_disconnect_by_func),
+       (pygobject_handler_block_by_func),
+       (pygobject_handler_unblock_by_func), (pygobject_get_refcount):
+       * gobject/pygparamspec.c (pyg_param_spec_getattr):
+       * gobject/pygtype.c (_wrap_g_type_wrapper__get_depth),
+       (pyg_type_from_object), (pyg_enum_get_value),
+       (pyg_flags_get_value), (pyg_value_from_pyobject),
+       (pyg_value_as_pyobject):
+       Use _PyLong macros.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/pygboxed.c (pygobject_boxed_register_types):
+       * gobject/pygenum.c (pygobject_enum_register_types):
+       * gobject/pygflags.c (pygobject_flags_register_types):
+       * gobject/pygobject.c (pygobject_object_register_types):
+       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
+       * gobject/pygpointer.c (pygobject_pointer_register_types):
+       * gobject/pygtype.c (pygobject_type_register_types):
+       Use PYGLIB_DEFINE_TYPE macro and move struct field initialization
+       to the registration methods.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib-python-compat.h:
+       Add _PyUnicode_Type macro
+
+       * gobject/gobjectmodule.c (pyg_type_name), (pyg_type_from_name),
+       (_pyg_signal_accumulator), (add_signals), (add_properties),
+       (get_type_name_for_class), (pyg_signal_list_names),
+       (pyg_signal_name), (pyg_signal_query), (pyg_object_new),
+       (pyg_add_emission_hook), (pyg_remove_emission_hook):
+       * gobject/pygboxed.c (pyg_boxed_repr):
+       * gobject/pygenum.c (pyg_enum_repr), (pyg_enum_add),
+       (pyg_enum_get_value_name), (pyg_enum_get_value_nick):
+       * gobject/pygflags.c (pyg_flags_repr), (pyg_flags_add),
+       (pyg_flags_get_first_value_name), (pyg_flags_get_first_value_nick),
+       (pyg_flags_get_value_names), (pyg_flags_get_value_nicks):
+       * gobject/pygobject.c (build_parameter_list), (PyGProps_getattro),
+       (PyGProps_setattro), (pygobject_register_class), (pygobject_repr),
+       (pygobject_init), (pygobject_get_properties),
+       (pygobject_set_properties), (pygobject_connect),
+       (pygobject_connect_after), (pygobject_connect_object),
+       (pygobject_connect_object_after), (pygobject_emit),
+       (pygobject_stop_emission), (pygobject_disconnect_by_func),
+       (pygobject_handler_block_by_func),
+       (pygobject_handler_unblock_by_func),
+       (pygobject_object_register_types):
+       * gobject/pygparamspec.c (pyg_param_spec_repr),
+       (pyg_param_spec_getattr):
+       * gobject/pygpointer.c (pyg_pointer_repr):
+       * gobject/pygtype.c (pyg_type_wrapper_repr),
+       (_wrap_g_type_wrapper__get_name), (pyg_type_from_object),
+       (pyg_enum_get_value), (pyg_flags_get_value),
+       (pyg_value_from_pyobject), (pyg_value_as_pyobject),
+       (object_doc_descr_get), (_pyg_strv_from_gvalue),
+       (_pyg_strv_to_gvalue):
+
+       Use _PyUnicode_* macros in the gobject module
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c (PYGLIB_MODULE_START):
+       * gobject/pygobject-private.h:
+       Use glib macros to define the module, update export regexp.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/pygboxed.c (pygobject_boxed_register_types):
+       * gobject/pygboxed.h:
+       * gobject/pygenum.c (pygobject_enum_register_types):
+       * gobject/pygenum.h:
+       * gobject/pygflags.c (pygobject_flags_register_types):
+       * gobject/pygflags.h:
+       * gobject/pygpointer.c (pygobject_pointer_register_types):
+       * gobject/pygpointer.h:
+       Split out quark and type registration to the respective
+       implementation source files, add headers.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c (pygobject_register_api),
+       (pygobject_register_constants), (pygobject_register_features),
+       (pygobject_register_version_tuples), (pygobject_register_warnings),
+       (init_gobject):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c (pyobject_copy), (pyobject_free),
+       (pygobject_object_register_types):
+       * gobject/pygtype.c (_pyg_strv_from_gvalue), (_pyg_strv_to_gvalue),
+       (pygobject_type_register_types):
+       * gobject/pygtype.h:
+       Move off a bit more to separate functions, cleaning up the init_glib
+       a bit more.
+
+2008-07-27  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c:
+       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
+       * gobject/pygparamspec.h:
+       * gobject/pygtype.c:
+       Move paramspec registration to a separate file, add a header
+       for the internal API.
+
+2008-07-27  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/pygtype.c (pyg_enum_get_value): Issue warning if 'obj'
+       is a PyGEnum of wrong type, i.e. not matching 'enum_type' (bug
+       #503771).
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       reviewed by: <delete if not using a buddy>
+
+       * glib/pyglib-python-compat.h:
+       * glib/pyglib.h:
+       Make a few macros public
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/pyginterface.c (pyg_interface_init),
+       (pyg_interface_free), (pyg_register_interface),
+       (pyg_register_interface_info), (pyg_lookup_interface_info),
+       (pygobject_interface_register_types):
+       * gobject/pyginterface.h:
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c:
+       Move GInterface wrapper into its own file
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       Also export PyInit_glib
+       * glib/__init__.py:
+       import glib._glib instead of just _glib
+       * glib/pyglib-python-compat.h:
+       * glib/pygoptioncontext.c (pyg_option_context_parse):
+       * glib/pygsource.c (source_repr), (pyg_source_attach),
+       (pyg_source_get_priority), (pyg_source_set_priority),
+       (pyg_source_get_id), (pyg_source_prepare), (pyg_poll_fd_repr):
+       * glib/pygspawn.c (pyg_pid_close), (pyg_pid_free), (pyg_pid_new),
+       (pyglib_spawn_async), (pyglib_spawn_register_types):
+       Go over the rest and replace missing symbols on python3.
+       the glib module successfully compiles and runs now.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pygiochannel.c (py_io_channel_shutdown),
+       (py_io_channel_set_buffer_size), (py_io_channel_get_buffer_size),
+       (py_io_channel_set_buffered), (py_io_channel_get_buffered),
+       (py_io_channel_set_encoding), (py_io_channel_get_encoding),
+       (py_io_channel_read_chars), (py_io_channel_write_chars),
+       (py_io_channel_write_lines), (py_io_channel_flush),
+       (py_io_channel_set_flags), (py_io_channel_get_flags),
+       (py_io_channel_get_buffer_condition),
+       (py_io_channel_set_close_on_unref), (py_io_channel_add_watch),
+       (py_io_channel_win32_poll), (py_io_channel_win32_make_pollfd),
+       (py_io_channel_read_line), (py_io_channel_read_lines),
+       (py_io_channel_seek), (py_io_channel_init):
+       * glib/pyglib.c (pyglib_gerror_exception_check):
+       * glib/pygoptioncontext.c (pyg_option_context_init):
+       * glib/pygoptiongroup.c (check_if_owned):
+       * glib/pygsource.c (pyg_idle_init), (pyg_timeout_init),
+       (pyg_poll_fd_init):
+       gobject -> glib
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pygmaincontext.c (pyglib_maincontext_register_types):
+       * glib/pygmainloop.c (pyg_main_loop_init),
+       (pyglib_mainloop_register_types):
+       * glib/pygoptioncontext.c (pyg_option_context_set_main_group),
+       (pyglib_option_context_register_types):
+       * glib/pygoptiongroup.c (pyglib_option_group_register_types):
+       * glib/pygspawn.c (pyglib_spawn_register_types):
+       Convert the pid/mainloop/maincontext/optiongroup/optioncontext.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pygsource.c (pyglib_source_register_types):
+       Convert the source objects to use macros, saves ~150 lines of code!
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (get_handler_priority), (pyglib_idle_add),
+       (pyglib_timeout_add), (pyglib_timeout_add_seconds),
+       (pyglib_io_add_watch), (pyglib_child_watch_add),
+       (pyglib_markup_escape_text), (pyglib_main_depth),
+       (pyglib_filename_from_utf8), (pyglib_get_application_name),
+       (pyglib_get_prgname), (PYGLIB_MODULE_START):
+       * glib/pygiochannel.c (py_io_channel_next),
+       (py_io_channel_shutdown), (py_io_channel_get_buffer_size),
+       (py_io_channel_get_buffered), (py_io_channel_get_encoding),
+       (py_io_channel_read_chars), (py_io_channel_write_chars),
+       (py_io_channel_write_lines), (py_io_channel_flush),
+       (py_io_channel_set_flags), (py_io_channel_get_flags),
+       (py_io_channel_get_buffer_condition), (py_io_channel_win32_poll),
+       (py_io_channel_read_line), (py_io_channel_read_lines),
+       (py_io_channel_seek), (pyglib_iochannel_register_types):
+       * glib/pyglib-private.h:
+       * glib/pyglib-python-compat.h:
+       * glib/pyglib.c (pyglib_init), (pyglib_error_check),
+       (pyglib_gerror_exception_check),
+       (pyglib_register_exception_for_domain):
+       Add macros for supporting additional python versions.
+       Start using them for the glib module. Tested on python 2.5 and 3.0.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       * m4/python.m4:
+       Add macros which are compatible with python > 2.6.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       Post release version bump
+
+=== 2.15.2 ===
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am (_gobject_la_SOURCES): Build fix, remove
+       extra \
+
+       * examples/gio/directory-async.py:
+       * gio/Makefile.am:
+       * gio/giomodule.c (init_gio):
+       * glib/pyglib.c (pyglib_error_check),
+       (pyglib_register_exception_for_domain):
+       * glib/pyglib.h:
+       * tests/test_gio.py:
+       Add a new API for registering exceptions for a GError domain.
+       Register a new exception for G_IO_ERROR, update tests
+       and examples to use the new exception.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pygoptioncontext.c (pyg_option_context_set_main_group),
+       (pyg_option_context_add_group):
+       Send in a PyObject instead of a PyGOptionGroup object.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       * glib/glibmodule.c (pyglib_register_constants), (init_glib):
+       * glib/option.py:
+       * glib/pyglib.c (pyglib_init),
+       (pyglib_option_group_transfer_group), (pyglib_option_group_new),
+       (pyglib_option_context_new):
+       * glib/pyglib.h:
+       * glib/pygoptioncontext.c (pyg_option_context_parse),
+       (pyg_option_context_set_main_group),
+       (pyg_option_context_add_group),
+       (pyglib_option_context_register_types):
+       * glib/pygoptioncontext.h:
+       * glib/pygoptiongroup.c (arg_func),
+       (pyglib_option_group_register_types):
+       * glib/pygoptiongroup.h:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/option.py:
+       * gobject/pygobject-private.h:
+       * gobject/pygoptioncontext.c:
+       * gobject/pygoptiongroup.c:
+       Move option over from gobject to glib.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * tests/common.py:
+       * tests/test_conversion.py:
+       * tests/test_enum.py:
+       * tests/test_interface.py:
+       * tests/test_option.py:
+       * tests/test_source.py:
+       * tests/test_subprocess.py:
+       * tests/test_subtype.py:
+       * tests/test_thread.py:
+       * tests/test_unknown.py:
+       Run pyflakes on the testsuite, remove unused imports
+       and reorganize others.
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_register_constants), (init_glib):
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (init_gobject):
+       Move over glib constants to gobject
+       * tests/test_gio.py:
+       * tests/test_mainloop.py:
+       * tests/test_source.py:
+       * tests/test_subprocess.py:
+       * tests/test_thread.py:
+       Update tests to refer to glib when appropriate
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * README:
+       * configure.ac:
+       Bump required glib version to 2.10
+
+2008-07-26  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (child_watch_dnotify),
+       (pyglib_child_watch_add):
+       * glib/pygiochannel.c (pyg_iowatch_data_free),
+       (py_io_channel_add_watch):
+       * glib/pygspawn.c (_pyg_spawn_async_callback),
+       (pyglib_spawn_async):
+       Use g_slice_new instead of g_new
+
+2008-07-25  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/Makefile.am:
+       * tests/Makefile.am:
+       Make distcheck pass
+
+2008-07-25  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/pygobject-private.h:
+       Remove private structures which moved to pyglib.
+
+2008-07-24  Johan Dahlin  <johan@gnome.org>
+
+       Bug 544600 â€“ pygobject building failed since 839 revision,
+       error : "Py_ssize_t" undeclared
+
+       * glib/pyglib-private.h: Add backward compatibility macros for
+       python 2.4.
+
+       * gio/gfile.override:
+       * gio/gfileenumerator.override:
+       * gio/ginputstream.override:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * gio/goutputstream.override:
+       * tests/test_gio.py:
+       Wrap gio.File.copy, add tests and documentation.
+       Rename PyGAsyncRequestNotify to PyGIONotify and reuse it.
+
+2008-07-23  Johan Dahlin  <johan@gnome.org>
+
+       * glib/pyglib.c (_pyglib_destroy_notify):
+       Rename the function too, not just the prototype!
+
+2008-07-21  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_idle_add), (pyglib_timeout_add),
+       (pyglib_timeout_add_seconds), (pyglib_io_add_watch):
+       * glib/pyglib-private.h:
+       * glib/pyglib.c (pyglib_destroy_notify), (_pyglib_handler_marshal):
+       * glib/pyglib.h:
+       * glib/pygsource.c (pyg_source_set_callback):
+       Make pyglib_destroy_notify and pyglib_handler_marshal private.
+       Add a few public prototypes.
+
+2008-07-21  Johan Dahlin  <johan@gnome.org>
+
+       * glib/glibmodule.c (pyglib_idle_add), (pyglib_timeout_add),
+       (pyglib_timeout_add_seconds), (pyglib_io_add_watch),
+       (pyglib_source_remove), (pyglib_child_watch_add),
+       (pyglib_markup_escape_text), (pyglib_get_current_time),
+       (pyglib_main_depth), (pyglib_filename_display_name),
+       (pyglib_filename_display_basename), (pyglib_filename_from_utf8),
+       (pyglib_get_application_name), (pyglib_set_application_name),
+       (pyglib_get_prgname), (pyglib_set_prgname), (pyglib_register_api),
+       (pyglib_register_error):
+       Mark as static, rename from pyg_* -> pyglib_*. Fill in api struct,
+       rename struct and remove function suffix.
+
+2008-07-21  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       * glib/glibmodule.c (pyg_idle_add), (pyg_timeout_add),
+       (pyg_timeout_add_seconds), (pyg_io_add_watch),
+       (pyglib_register_api), (pyglib_register_error),
+       (pyglib_register_version_tuples), (init_glib):
+       * glib/pygiochannel.c (py_io_channel_next),
+       (py_io_channel_shutdown), (py_io_channel_set_encoding),
+       (py_io_channel_read_chars), (py_io_channel_write_chars),
+       (py_io_channel_write_lines), (py_io_channel_flush),
+       (py_io_channel_set_flags), (py_io_channel_read_line),
+       (py_io_channel_read_lines), (py_io_channel_seek),
+       (py_io_channel_init), (pyglib_iochannel_register_types):
+       * glib/pygiochannel.h:
+       * glib/pyglib-private.h:
+       * glib/pyglib.c (pyglib_threads_enabled),
+       (pyglib_gil_state_ensure), (pyglib_gil_state_release),
+       (pyglib_enable_threads), (pyglib_block_threads),
+       (pyglib_unblock_threads), (pyglib_set_thread_block_funcs),
+       (pyglib_handler_marshal), (pyglib_destroy_notify):
+       * glib/pyglib.h:
+       * glib/pygsource.c (pyg_source_set_callback),
+       (pyglib_source_register_types):
+       * glib/pygsource.h:
+       * glib/pygspawn.c (pyglib_spawn_register_types):
+       * glib/pygspawn.h:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (pyg_set_thread_block_funcs),
+       (init_gobject):
+       * gobject/pygiochannel.c:
+       * gobject/pygobject-private.h:
+       * gobject/pygsource.c:
+       Move over Source, IOChannel, Idle, Timeout and PollFD to glib from
+       gobject.
+       Clean up and add a bit of new api for glib.
+
+2008-07-21  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       Use yes/no instead of true/false. Avoid bashism.
+       Fix another logic bug, and let's hope I didn't break anything
+
+2008-07-20  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * configure.ac (pygobject_CODEGEN_DEFINES): Fix libffi check
+       logic.
+
+2008-07-20  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       * glib/glibmodule.c (pyglib_main_context_default), (init_glib):
+       * glib/pyglib.c (pyglib_init), (pyglib_threads_enabled),
+       (pyglib_main_context_new):
+       * glib/pyglib.h:
+       * glib/pygmaincontext.c (_wrap_g_main_context_iteration),
+       (pyglib_maincontext_register_types):
+       * glib/pygmaincontext.h:
+       * glib/pygmainloop.c (pyg_signal_watch_prepare),
+       (pyg_signal_watch_check), (pyg_main_loop_new),
+       (_wrap_g_main_loop_get_context), (_wrap_g_main_loop_run),
+       (pyglib_mainloop_register_types):
+       * glib/pygmainloop.h:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (pyg_destroy_notify), (pyobject_free),
+       (pyg_object_set_property), (pyg_object_get_property),
+       (_pyg_signal_accumulator), (pygobject__g_instance_init),
+       (pyg_handler_marshal), (pygobject_gil_state_ensure),
+       (pygobject_gil_state_release), (marshal_emission_hook),
+       (_log_func), (init_gobject):
+       * gobject/pygboxed.c (pyg_boxed_dealloc), (pyg_boxed_new):
+       * gobject/pygenum.c (pyg_enum_add):
+       * gobject/pygflags.c (pyg_flags_add):
+       * gobject/pygiochannel.c (pyg_iowatch_marshal):
+       * gobject/pygmaincontext.c:
+       * gobject/pygmainloop.c:
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c (pygobject_data_free), (pyg_toggle_notify),
+       (pygobject_new_with_interfaces), (pygobject_weak_ref_notify):
+       * gobject/pygobject.h:
+       * gobject/pygoptiongroup.c (destroy_g_group), (arg_func):
+       * gobject/pygpointer.c (pyg_pointer_new):
+       * gobject/pygsource.c (pyg_source_get_context),
+       (pyg_source_prepare), (pyg_source_check), (pyg_source_dispatch),
+       (pyg_source_finalize):
+       * gobject/pygtype.c (pyg_closure_invalidate),
+       (pyg_closure_marshal), (pyg_signal_class_closure_marshal):
+       * tests/common.py:
+
+       Move maincontext and mainloop over to glib.
+       Update the threadstate api to use the variant in glib.
+
+2008-07-20  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (pyg_threads_init), (pyg_error_check),
+       (pyg_gerror_exception_check), (init_gobject):
+       * gobject/option.py:
+       Install the glib module, the helper library and the headers.
+       Use it from gobject and remove the old glib specific code from there.
+
+2008-07-20  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       * gobject/Makefile.am:
+       Use pkg-config to check for libffi again.
+
+2008-07-20  Johan Dahlin  <johan@gnome.org>
+
+       * glib/Makefile.am:
+       * glib/glibmodule.c (pyg_main_context_default):
+       * glib/pyglib.c (pyglib_gerror_exception_check):
+       * glib/pyglib.h:
+       Rename helper library to libpyglib-2.0.
+       Move over pyg_gerror_exception_check as well.
+
+2008-07-20  Johan Dahlin  <johan@gnome.org>
+
+       * Makefile.am:
+       * configure.ac:
+       * glib/Makefile.am:
+       * glib/__init__.py:
+       * glib/glibmodule.c (pyg_destroy_notify), (get_handler_priority),
+       (pyg_handler_marshal), (pyg_idle_add), (pyg_timeout_add),
+       (pyg_timeout_add_seconds), (iowatch_marshal), (pyg_io_add_watch),
+       (pyg_source_remove), (pyg_main_context_default),
+       (child_watch_func), (child_watch_dnotify), (pyg_child_watch_add),
+       (pyg_markup_escape_text), (pyg_get_current_time), (pyg_main_depth),
+       (pyg_filename_display_name), (pyg_filename_display_basename),
+       (pyg_filename_from_utf8), (pyg_get_application_name),
+       (pyg_set_application_name), (pyg_get_prgname), (pyg_set_prgname),
+       (pyg_register_api), (pyg_register_error),
+       (pyg_register_version_tuples), (init_glib):
+       * glib/pyglib-private.h:
+       * glib/pyglib.c (pyglib_init), (pyglib_init_internal),
+       (pyglib_gil_state_ensure), (pyglib_gil_state_release),
+       (pyglib_enable_threads), (pyglib_gil_state_ensure_py23),
+       (pyglib_gil_state_release_py23), (pyglib_error_check):
+       * glib/pyglib.h:
+       * glib/pygspawn.c (pyg_pid_close), (pyg_pid_free),
+       (pyg_pid_tp_init), (pyg_pid_new), (_pyg_spawn_async_callback),
+       (pyglib_spawn_async), (pyg_spawn_register_types):
+       * glib/pygspawn.h:
+       Add glib bindings, currently not installed or used.
+       Add some internal API and move over a couple of functions
+       from the gobject module. Still very much a work in progress.
+
+2008-07-19  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.override:
+       Ignore a bunch of functions which are not relevant.
+
+2008-07-19  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gfile.override:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Bind gio.Mount.unmount, gio.File.mount_mountable,
+       gio.File.unmount_mountable and gio.File.mount_enclosing_volume.
+       Add documents and tests.
+
+2008-07-19  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.override: Set module name back to
+       gio, as setting it to gio._gio breaks pydoc.
+
+       * gio/gio.defs:
+       Use property based constructors when possible.
+
+2008-07-19  Johan Dahlin  <johan@gnome.org>
+
+       * examples/gio/directory-async.py:
+       * gio/gfileenumerator.override:
+       * gio/gio.defs:
+       * tests/test_gio.py:
+       Wrap gio.FileEnumerator.next_files_async/next_files_done.
+       Update the example to use them instead of the synchronous versions,
+       add documentation and tests.
+
+2008-07-19  Johan Dahlin  <johan@gnome.org>
+
+       * examples/gio/directory-async.py:
+       Only fetch name, saves a couple of syscalls.
+       * gio/gio.override:
+       Set name to gio._gio so pychecker/pydoc works.
+
+2008-07-18  Johan Dahlin  <johan@gnome.org>
+
+       * examples/gio/directory-async.py:
+       * gio/gfile.override:
+       * gio/gfileenumerator.override:
+       * gio/gio.defs:
+       * tests/test_gio.py:
+       Wrap gio.File.enumerate_children_async, add tests, docstring
+       and an example.
+       Also document gio.File.enumerate while we're at it.
+
+2008-07-18  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gfile.override:
+       Use %zd instead of %d since it's a Py_ssize_t and not an int.
+
+2008-07-18  Johan Dahlin  <johan@gnome.org>
+
+       * gio/pygio-utils.h:
+       define NO_IMPORT_PYGOBJECT before including pygobject.h
+
+2008-07-18  Johan Dahlin  <johan@gnome.org>
+
+       * gio/giomodule.c (init_gio):
+       Require pygobject 2.15.2
+
+2008-07-17  Johan Dahlin  <johan@gnome.org>
+
+       * gio/giomodule.c (init_gio):
+       Add a pygio_version module attribute
+       (DL_EXPORT): The module is called gio._gio, not just _gio.
+
+2008-07-17  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio-types.defs:
+       Rename gio.IOErrorEnum to gio.ErrorEnum
+
+2008-07-17  Johan Dahlin  <johan@gnome.org>
+
+       * gio/giomodule.c (init_gio):
+       Add gio.ERROR which maps to the G_IO_ERROR quark.
+
+2008-07-17  Johan Dahlin  <johan@gnome.org>
+
+       * gio/giomodule.c (init_gio):
+       Use the prefix G_IO_ for stripping constants instead of just G_
+       * gobject/gobjectmodule.c (pyg_constant_strip_prefix):
+       Check so the fist part of name and strip_prefix are the same,
+       if they don't, just strip of the part of strip_prefix which
+       matches.
+
+       This removes the initial IO_* prefix for some constants in gio.
+       Eg, gio.IO_ERROR_* -> gio.ERROR_*
+
+2008-07-16  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac: Post release version bump
+
+=== 2.15.1 ===
+2008-07-16  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2008-07-15  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * codegen/pygobject-codegen-2.0.in: Rename from
+       'pygtk-codegen-2.0.in'.
+
+       * configure.ac:
+       * codegen/Makefile.am: Update accordingly.
+
+2008-07-15  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac: Post release version bump
+
+=== 2.15.0 ===
+2008-07-15  Johan Dahlin  <johan@gnome.org>
+
+       New version
+
+       * NEWS: Update
+
+       * tests/Makefile.am:
+       Make sure we can distcheck the gio module properly
+
+2008-07-15  Johan Dahlin  <johan@gnome.org>
+
+       Bug 450659 â€“ h2def.py - export 'typedef struct' object definitions not
+       working
+
+       * codegen/h2def.py:
+       Patch by Lauro Moura
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 471559 â€“ add AM_PROG_CC_C_O to configure.ac for recent automake
+
+       * configure.ac:
+       Patch by Tim Mooney
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 448173 â€“ use python-config to get python includes
+
+       * configure.ac:
+       Really close the by, patch by Matthias Klose
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 378704 â€“ OptionParser.parse_args() returns unexpected results
+
+       * gobject/option.py:
+       Patch by Johannes Hölzl
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 491773 â€“ autoconf failure: .m4 files cannot be found
+
+       * Makefile.am:
+       Patch by macks@netspace.org
+
+2008-07-14  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: wrap File.load_contents_async and
+       File.load_contents_finish
+
+       * gio/gio.defs: Add docstring for the above methods.
+
+       * tests/test_gio.py: Add a test for the above methods.
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 487523 â€“ Add xslfiles variable to .pc.in files
+
+       * pygobject-2.0-uninstalled.pc.in:
+       Add xslfiles variable, patch by Damien Carbery
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.defs:
+       Remove g_file_input_stream_seek and g_file_output_stream_seek,
+       they already implement the seekable interface.
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       Bug 504337 - crash bug in gobject.Timeout and gobject.Idle
+
+       * gobject/pygsource.c:
+       * tests/test_source.py:
+       Fix crash in Timeout and Idle, patch by Bryan Silverthorn.
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       * codegen/argtypes.py:
+       Map GSeekType to an int
+
+       * gio/gfileinfo.override:
+       * gio/ginputstream.override:
+       * gio/goutputstream.override:
+       Add comments for missing API
+
+2008-07-14  Johan Dahlin  <johan@gnome.org>
+
+       * gio/Makefile.am:
+       * gio/gfile.override:
+       * gio/ginputstream.override:
+       * gio/gio.override:
+       * gio/goutputstream.override:
+       * gio/pygio-utils.c (pygio_check_cancellable):
+       * gio/pygio-utils.h:
+       Refactor cancellable check to a utility function, avoids
+       plenty of code duplication.
+
+2008-07-14  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * codegen/definitions.py (ReturnType): New class.
+       (MethodDefBase.__init__): Make 'self.ret' a 'ReturnType' instance,
+       not string.  Accept 'optional' flag.
+
+       * codegen/argtypes.py (ArgMatcher.get_reverse_ret): Test if
+       'ptype' has true 'optional' attribute and copy it to 'props' then.
+
+       * codegen/reversewrapper.py (ReturnType.support_optional): New
+       class field, False by default.
+       (GObjectReturn.support_optional, GObjectReturn.write_decl)
+       (GObjectReturn.write_conversion): Support optional return.
+
+       * pygobject-2.0.pc.in: Add 'codegendir' variable.
+       * codegen/pygtk-codegen-2.0.in: Make 'codegendir' refer to
+       PyGObject's codegen, not PyGTK's one --- the latter will be
+       removed (first part of bug #542821).
+
+2008-07-08  Murray Cumming  <murrayc@murrayc.com>
+
+       * codegen/h2def.py: clean_func(): Strip GSEAL out, to avoid us
+       thinking that there are many functions called GSEAL (merge from
+       PyGTK).
+
+2008-01-29  Olivier Crete  <tester@tester.ca>
+
+       * codegen/h2def.py (DefsWriter.__init__): Fix copy-paste
+       typos (merge from PyGTK).
+
+2008-07-11  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gio/gfile.override: wrap File.load_contents, fix a typo.
+
+       * gio/gio.defs: Add docstring for File.load_contents.
+
+       * tests/test_gio.py: Add a test for the above method.
+
+2008-07-09  Juha Sahakangas  <voas0113@saunalahti.fi>
+
+       * gobject/gobjectmodule.c (pyg_io_add_watch): Fix error message
+       referencing wrong argument.
+
+2008-06-29  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_markup_escape_text): text_size
+       should be Py_ssize_t instead of int.
+       Bug 540696 â€“ gobject.markup_escape_text() causes python to segfault.
+
+2008-06-28  Johan Dahlin  <jdahlin@async.com.br>
+
+       * docs/reference/pygobject.xml:
+       Document GObject.handler_block_by_func/handler_unblock_by_func
+
+2008-06-17  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gio-types.defs:
+       * tests/test_gio.py:
+       Sort out confusion between interfaces and objects, add test.
+       Fixes #538601
+
+2008-06-09  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/pygobject.c (pygobject_copy, pygobject_deepcopy): New
+       functions, unconditionally raise TypeError.
+       (pygobject_methods): Hook them up. (bug #482370)
+
+2008-05-31  Johan Dahlin  <johan@gnome.org>
+
+    * setup.py: set FFI_LIBS to '', since this is mostly used on win32.
+
+2008-05-30  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (init_gobject): Call PyType_Ready for
+       PyGParamSpec_Type, and add it to the module dict.
+
+2008-05-23  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gio.defs:
+       Add default values for all GSeekType variables.
+
+2008-05-21  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_spawn_async): Accept None for the
+       child_setup parameter of gobject.spawn_async().  Also check that
+       it is callable.
+
+2008-04-27  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/pygenum.c (pyg_enum_richcompare): Fix: raise warning as
+       exception if asked by PyErr_Warn().
+
+       * gobject/pygflags.c (pyg_flags_richcompare):  Don't return NULL
+       after warning; more useful warning message.
+
+       (#480424, borrowing code by Mark Doffman)
+
+2008-04-21  Johan Dahlin  <johan@gnome.org>
+
+       * codegen/h2def.py: Update link to defs format discussion
+
+2008-04-15  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/gobjectmodule.c (init_gobject): Set
+       gobject.GObject.__module__ to gobject._gobject, this
+       helps pylint to check public methods of GObject subclasses
+
+       * tests/Makefile.am (tests):
+       * tests/test_gobject.py (TestGObjectAPI.testGObjectModule):
+       Add a test for this
+
+       (#523821, Simon Schampijer)
+
+2008-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gio.defs (write_async): document.
+       Add default values to all flags parameters.
+
+2008-04-11  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.defs (read_async, read): document.
+       Set io_priority default to G_PRIORITY_DEFAULT.
+
+2008-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gfile.override:
+       * gio/ginputstream.override:
+       * gio/goutputstream.override:
+       * tests/test_gio.py:
+       Move around the order of the callback argument to async methods,
+       so it comes before priority and cancellable, which can have default
+       values.
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/Makefile.am:
+       * gio/__init__.py:
+       * gio/gappinfo.override:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Implement GAppInfo constructor, add tests.
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/Makefile.am:
+       * gio/gfileinfo.override:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Wrap GFileInfo.list_attributes(), add tests and
+       set the default of GFileQueryInfoFlags args to G_FILE_QUERY_INFO_NONE.
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/option.py: Fix a typo
+       * tests/test_option.py:
+       Update the tests after the latest "refactoring".
+       The testsuite should run fine now again, finally.
+
+2008-04-08  Johan Dahlin  <johan@gnome.org>
+
+       * tests/test_gio.py (TestOutputStream.testWriteAsyncError):
+       (TestInputStream._testCloseAsync.callback):
+       Disable these tests until we can figure why they freeze during
+       make check.
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Add bindings for content_type_guess.
+       Based on patch by Thomas Leonard (#525113)
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/gio-types.defs:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Add basic support for GThemedIcon, based on patch by
+       Thomas Leonard (#521883)
+
+2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygsource.c:
+       * tests/test_source.py:
+       Unbreak Source.prepare (#523075, Bryan Silverthorn)
+
+2008-04-08  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gfile.override (_wrap__install_file_meta): Fix a couple of
+       silly typos and use gio.File instead of GFile in exceptions.
+
+2008-04-07  Johan Dahlin  <johan@gnome.org>
+
+       * gio/__init__.py:
+       * gio/gfile.override:
+       * gio/gio-types.defs:
+       * gio/gio.override:
+       * tests/test_gio.py:
+       Make gio.File() (calling on an interface) a factory for creating
+       files. Add tests and a docstring.
+
+2008-04-07  Johan Dahlin  <johan@gnome.org>
+
+       * gio/Makefile.am (pygiodir): Install gio in the right location
+
+2008-04-06  Johan Dahlin  <johan@gnome.org>
+
+       * tests/test_gio.py: Add tests for recently added features.
+
+       * gio/goutputstream.override:
+       (_wrap_g_output_stream_write_asyn,_wrap_g_output_stream_close_async):
+       * gio/ginputstream.override (async_result_callback_marshal_read):
+       Add wrappers.
+
+       * gio/gio.override: Ignore vararg functions and remove a couple
+       of left overs in the generic marshaller.
+
+       * gio/gio.defs: Remove g_file_output_stream_truncate,
+       g_file_output_stream_tell and g_file_input_stream_tell
+
+       * Makefile.am:
+       * gio/gfileenumerator.override (_wrap_g_file_enumerator_tp_iter):
+       Implement the python iteration protocol on GFileEnumerator
+
+       * codegen/argtypes.py (arg): Add goffset to the int64 arg type
+
+2008-04-02  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/pygenum.c: bug #428732
+       (pyg_enum_new): Fix two wrong assertions about '__enum_values__'
+       size and contents.
+       (pyg_enum_reduce): New function (based on patch by Phil Dumont).
+       (pyg_enum_methods): Hook it up.
+
+2008-03-24  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/pygenum.c (pyg_enum_richcompare): Don't return NULL
+       after warning; more useful warning message (bug #519631).
+
+2008-03-22  Johan Dahlin  <johan@gnome.org>
+
+       * gio/ginputstream.override:
+       * gio/gio.override:
+       * tests/test_gio.py:
+
+       Make read_finish() return the string, remove the get_buffer method.
+       This is more pythonic, as it mimics the normal read() behavior of
+       python.
+       Update the tests and use a separate marshaller for read.
+
+2008-03-21  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/__init__.py:
+       * tests/test_properties.py:
+       Allow gobject.property work with subclasses. Add tests.
+
+       (#523352, Tomeu Vizoso)
+
+2008-03-10  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac: Require gio and giounix 2.15.7.
+
+2008-03-09  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio-types.defs:
+       * gio/gio.defs:
+       * tests/test_gio.py:
+       Update to SVN of gio:
+       g_file_contains_file -> g_file_has_prefix
+       can_seek and can_truncate are now only on the GSeekable interface
+       Add tests
+
+       (#521207, Thomas Leonard)
+
+2008-03-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gio/ginputstream.override:
+       Pass in l instead of i to PyArg_ParseTupleAndKeywords when
+       parsing a long. Fixes the build on 64-bit systems.
+       (#521165, Thomas Leonard)
+
+2008-03-02  Johan Dahlin  <johan@gnome.org>
+
+       * Makefile.am: Dist .m4 files.
+       (#496011, Ed Catmur)
+
+2008-03-02  Paul Pogonyshev  <pogonyshev@gmx.net>
+
+       * gobject/gobjectmodule.c (REGISTER_TYPE): Never override customly
+       set 'tp_new' and 'tp_alloc'.
+
+2008-02-01  Dan Winship  <danw@gnome.org>
+
+       * pygobject-2.0.pc.in (defsdir): Add this so other bindings can
+       find gio.defs
+
+2008-01-21  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.override (async_result_callback_marshal):
+       Don't assume the buffer is set, use Py_XINCREF instead of Py_INCREF.
+
+       * gio/Makefile.am:
+       * gio/ginputstream.override:
+       * gio/goutputstream.override:
+       * gio/gvolumemonitor.override:
+       * gio/gfile.override:
+       * tests/test_gio.py:
+       Implement and test GFile.read_async. Use try/finally to always quit
+       the mainloop, even if the test fail.
+       Update source comment headers.
+
+2008-01-20  Johan Dahlin  <johan@gnome.org>
+
+       * tests/test_gio.py (TestVolumeMonitor): New test
+
+       * gio/Makefile.am:
+       * gio/ginputstream.override:
+       * gio/gio.override:
+       * gio/giomodule.c:
+       * gio/goutputstream.override:
+       * gio/gvolumemonitor.override:
+       * gio/unix.override:
+       * gio/unixmodule.c:
+
+       Split out overrides into more files. Fix up module description in
+       comments
+
+2008-01-20  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.override (_wrap_g_simple_async_result_get_buffer): Add
+       a new method, to fetch the buffer
+       (_wrap_g_input_stream_read_async): Save a reference to the buffer.
+       * tests/test_gio.py (TestInputStream.testReadAsync.callback):
+       Check the content
+
+       * tests/test_gio.py (TestInputStream.testReadAsyncError):
+       New function to test error condition of async read.
+
+       * gio/gio.override (async_result_callback_marshal): Grab a reference
+       to callback/data.
+
+2008-01-19  Johan Dahlin  <johan@gnome.org>
+
+       * gio/gio.override (_wrap_g_output_stream_write): Impl.
+       * gio/gio.override:
+       * gio/unix.defs:
+       Add GUnixInputStream type and methods
+
+       * tests/common.py:
+       * tests/test_gio.py:
+       Add GIO tests.
+
+       * gio/gio.override (_wrap_g_app_info_get_all_for_type),
+       (_wrap_g_app_info_get_all),
+       (_wrap_g_drive_get_volumes): Implement.
+
+       * gio/gio.override (async_result_callback_marshal): New marshaller
+       for async results
+       (_wrap_g_input_stream_read_async): Impl.
+       * gio/gio-types.defs: Add SimpleAsyncRequest
+       * gio/giomodule.c: Register enums/constants
+
+       * gio/gio.override: Fix a silly bug so it possible to read files
+       larger than 8192 bytes.
+
+       * gio/gio.defs: Set null-ok for all cancelable as well.
+
+       * gio/__init__.py: set gio.unix to None if it's not available
+
+       * gio/gio.override: Implement InputStream.read efficiently without
+       copying the strings, based on the standard libararys file.read()
+       implementation.
+
+       * gio/gio-types.defs (Cancellable): Add wrapper.
+
+       * gio/gio.defs (replace): Do not require cancellable argument
+       to be specified, default to NULL if not.
+
+       * Makefile.am:
+       * codegen/Makefile.am:
+       * codegen/README.defs:
+       * codegen/__init__.py:
+       * codegen/argtypes.py:
+       * codegen/code-coverage.py:
+       * codegen/codegen.py:
+       * codegen/createdefs.py:
+       * codegen/definitions.py:
+       * codegen/defsconvert.py:
+       * codegen/defsgen.py:
+       * codegen/defsparser.py:
+       * codegen/docextract.py:
+       * codegen/docextract_to_xml.py:
+       * codegen/docgen.py:
+       * codegen/h2def.py:
+       * codegen/mergedefs.py:
+       * codegen/missingdefs.py:
+       * codegen/mkskel.py:
+       * codegen/override.py:
+       * codegen/pygtk-codegen-2.0.in:
+       * codegen/reversewrapper.py:
+       * codegen/scanvirtuals.py:
+       * codegen/scmexpr.py:
+
+       * configure.ac:
+       * gio/Makefile.am:
+       * gio/__init__.py:
+       * gio/gio-types.defs:
+       * gio/gio.defs:
+       * gio/gio.override:
+       * gio/giomodule.c: (init_gio):
+       * gio/unix-types.defs:
+       * gio/unix.defs:
+       * gio/unix.override:
+       * gio/unixmodule.c: (initunix):
+
+       Import codegen from pygtk.
+       Add initial gio and gio.unix bindings.
+
+2008-01-11  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac: Don't link against libffi if we cannot find libffi
+       on the system. (#496006, Ed Catmur)
+
+2008-01-03  Johan Dahlin  <johan@gnome.org>
+
+       Reviewed by: Gustavo
+
+       * configure.ac:
+       * gobject/pygmainloop.c (pyg_signal_watch_prepare): Optinally
+       use PySignal_SetWakeupFd to avoid having to do a timeout to find
+       out if there are any pending signals from python.
+       Fixes #481569
+
+       * configure.ac (CPPFLAGS):
+       Include -Wall and -Werror when checking for PySignal_SetWakeupFd
+
+2008-01-02  Sebastian Rittau  <srittau@jroger.in-berlin.de>
+
+       * gobject/gobjectmodule.c
+       * gobject/gobjectmodule.c (pyg_get_application_name)
+       (pyg_get_prgname): Add wrappers for g_get_application_name and
+       g_get_prgname.
+
+2007-11-30  Rafael Villar Burke  <pachi@rvburke.com>
+
+       * docs/reference/pygobject.xml: Add props attribute
+
+2007-11-24  Paolo Borelli  <pborelli@katamail.com>
+
+       * gobject/gobjectmodule.c (pyg_type_register): check for NULL before
+       dereferencing.
+
+2007-11-24  Paolo Borelli  <pborelli@katamail.com>
+
+       * gobject/gobjectmodule.c (pyg_type_register): do not use a
+       potentially uninitialized variable. Bug #499334.
+
+2007-11-12  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/option.py (OptionParser.parse_args):
+       Set the default value of old_args to 0, so we don't end
+       up slicing with None. Fixes #496278 (Vincent Untz)
+
+2007-11-06  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/option.py (OptionParser.parse_args): Merge in values
+       from all groups to the global option group. Slice up args
+       so it doesn't return too much.
+
+       * tests/test_option.py: Refactor to be unittesty,
+       Add new tests to test what options returns.
+
+2007-11-05  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/pygobject.h:
+       * gobject/gobjectmodule.c:
+       Add pyg_option_group_new to the public API
+
+       * configure.ac: Branch, bump version to 2.15.0.
+
+2007-10-16  Damien Carbery   <damien.carbery@sun.com>
+
+       reviewed by: Johan Dahlin.
+
+       * pygobject-2.0-uninstalled.pc.in: uninstalled.pc file missing
+       'datadir' value. Fixes #486876.
+
+2007-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.ac: Post-relase version bump.
+
+=== 2.14.0 ===
+2007-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.ac: Bump version to 2.14.0.
+
+       * NEWS: Update NEWS for next release.
+
+2007-09-06  John Finlay  <finlay@moeraki.com>
+
+       * docs/xsl/fixxref.py.in: Remove DATADIR substitution since it now
+       gets substituted as ${prefix}/share which doesn't work in a Python
+       script.
+
+2007-08-27  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/propertyhelper.py (property.__metaclass__.__repr__): Avoid
+       exporting the metaclass, just define it where it will be used.
+
+       * gobject/__init__.py (GObjectMeta._install_properties):
+       Refactor a bit to make sure that it is possible to use in subclasses,
+       fixes #470718 (Marco Giusti)
+
+2007-08-27   Marco Giusti  <marco.giusti@gmail.com>
+
+       reviewed by: Gustavo J. A. M. Carneiro
+
+       * gobject/propertyhelper.py:
+       * tests/test_properties.py:
+       Bug 470230 â€“ check for default value in boolean type is wrong.
+
+2007-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/Makefile.am,
+       * gobject/Makefile.am: Remove -D_XOPEN_SOURCE=600
+       -D__EXTENSIONS__, no longer needed.
+
+       * configure.ac: Don't add -std=c9x CFLAG on Solaris.  Fixes
+       #339924 again.
+
+       * gobject/pygtype.c (pyg_type_wrapper_repr): Typecast self->type
+       to (unsigned long int) to fix a compilation warning.
+
+2007-08-14   Ed Catmur   <ed@catmur.co.uk>
+
+       reviewed by: Gustavo J. A. M. Carneiro
+
+       * gobject/pygobject.c (pygobject_new_full, pygobject_clear),
+       (pygobject_get_dict): Bug 466082 â€“ pygobject_new_full not fully
+       initialising PyGObject, chaos results.
+
+2007-08-13  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/test_subtype.py (TestSubType.testGetDict): Add unit test
+       exercising a bug when GObject.__dict__ is accessed directly.
+
+2007-07-08  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pygobject_functions)
+       (pyg_timeout_add_seconds): Wrap g_timeout_add_seconds,
+       conditionally compiled if glib version >= 2.13.5.
+
+2007-07-08   Johannes Hölzl   <johannes.hoelzl@gmx.de>
+
+       reviewed by: Gustavo Carneiro
+
+       * gobject/gobjectmodule.c (build_gerror, init_gobject): Work
+       around the deprecation warning of BaseException.message in Python
+       2.6+ affecting GError exceptions.  Fixes #342948.
+
+2007-07-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.ac: Post-release version bump.
+
+=== 2.13.2 ===
+2007-07-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * NEWS: Update.
+
+2007-07-07  Damien Carbery   <damien.carbery@sun.com>
+
+       reviewed by: Gustavo Carneiro.
+
+       * configure.ac: Bug 339924 â€“ pygobject doesn't compile on opensolaris.
+
+2007-04-30  Johannes Hölzl  <johannes.hoelzl@gmx.de>
+
+       * gobject/gobjectmodule.c (init_gobjectmodule),
+       * gobject/pygoptiongroup.c (arg_func),
+       * gobject/option.py (OptionParser._parse_args, OptionGroup._to_goptiongroup),
+       * tests/test_option.py: OptParse-Exceptions in GOption-callbacks
+       are now convertet into an GError.  GError from the
+       GOptionGroup.run is convertet into an OptParse-Exception.
+       Fixes #342948.
+
+2007-07-06  Ed Catmur  <ed@catmur.co.uk>
+
+       * gobject/pygtype.c (pyg_param_gvalue_from_pyobject),
+       (pyg_param_gvalue_as_pyobject): Applied patch from Ed Catmur to
+       support G_TYPE_VALUE boxed args/signals, and add a test, Fixes
+       #351072
+
+2007-07-06  Carlos Martin  <inean@users.sf.net>
+
+       * tests/test_gtype.py:
+       * tests/testhelpermodule.c: add test for #351072
+
+2007-07-04  Murray Cumming  <murrayc@murrayc.com>
+
+       * gobject/pygobject.c: (pygobject_switch_to_toggle_ref):
+       * gobject/pygobject.h: Rename the private struct field to
+       private_flags, because private is a C++ keyword, so this broke
+       builds of some C++ applications, such as Glom.
+
+2007-07-02  Sebastian Granjoux  <seb.sfo@free.fr>
+
+       reviewed by: Johan Dahlin
+
+       * gobject/gobjectmodule.c: (pyg_gerror_exception_check):
+       * tests/test_gtype.py:
+       * tests/testhelpermodule.c: (_wrap_test_gerror_exception):
+
+       Fix a bug in pyg_error_exception_check, add a test, Fixes #449879
+
+2007-06-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygobject.h: Add a flags field to PyGObject; uses
+       structure space formerly occupied by the now stale "GSList
+       *closures" field.
+
+       * gobject/pygobject.c (pygobject_switch_to_toggle_ref): Do nothing
+       if the wrapper is already in toggle reference mode.  Closes #447271.
+
+       * tests/test_subtype.py: Test case for #447271.
+
+2007-06-17  Sebastien Bacher  <seb128@ubuntu.com>
+
+       * m4/python.m4: use python-config to get python includes
+          (Closes #448173)
+
+2007-06-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/propertyhelper.py,
+       * tests/test_properties.py: Support type=GObject or
+       type=TYPE_OBJECT in the new properties API.
+
+2007-06-06  Yevgen Muntyan  <muntyan@tamu.edu>
+
+       OK'd by Johan
+
+       * gobject/generate-constants.c: Return 0 from main().
+
+       * gobject/Makefile.am: use generate-constants$(EXEEXT) instead
+       of generate-constants in the constants.py target rule.
+
+2007-05-30  Yevgen Muntyan  <muntyan@tamu.edu>
+
+       reviewed by: Gustavo Carneiro
+
+       * autogen.sh: Allow running autogen.sh from outside $srcdir.
+
+2007-05-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/Makefile.am (INCLUDES): Idem.
+
+       * gobject/Makefile.am (INCLUDES): Add -D_XOPEN_SOURCE=600 and
+       -D__EXTENSIONS__ to make it compile with c99 and Sun C compiler.
+
+       Fixes #339924: gnome-python doesn't compile on opensolaris.
+
+2007-05-02  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac: Post-release version bump.
+
+=== 2.13.1 ===
+2007-05-02  Johan Dahlin  <jdahlin@async.com.br>
+
+       * pygobject-2.0-uninstalled.pc.in: Add libdir.
+       Fixes #435132 (Luca Ferretti)
+
+2007-05-01  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/propertyhelper.py:
+       * tests/test_properties.py:
+
+       Store property values in the descriptor per instance, add a test.
+
+       * examples/properties.py:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/constants.py.in:
+       * gobject/generate-constants.c: (main):
+       * gobject/propertyhelper.py:
+       * tests/Makefile.am:
+       * tests/test_enum.py:
+       * tests/test_interface.py:
+       * tests/test_properties.py:
+
+       Add a property helper, fixes #338098
+
+2007-04-30  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * tests/common.py (importModules): Import testhelper first so that
+       g_thread_init is called before init_pygobject.
+
+       * tests/testhelpermodule.c (inittesthelper): Call g_thread_init
+       before init_pygobject.
+
+       * tests/test_subtype.py (TestSubType.testDescriptor): Unit test
+       for the bug below.
+
+       * gobject/pygobject.c (pygobject_setattro): Account for the case
+       when attribute setting doesn't actually create an instance
+       dictionary, in which case pygobject_switch_to_toggle_ref would be
+       called twice, thereby causing gobject error.
+       Fixes #434659
+
+2007-04-29  James Livingstone  <doclivingstone@gmail.com>
+
+       reviewed by: Johan Dahlin  <johan@gnome.org>
+
+       * gobject/pygtype.c: (pyg_value_from_pyobject):
+       * tests/test_signal.py:
+
+       Add a missing else to avoid throwing a TypeError.
+       Includes a test written by Ed Catmur.
+       Fixes #374653
+
+2007-04-29  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/pygtype.c: (pyg_value_array_from_pyobject):
+       * tests/test_gtype.py:
+       * tests/testhelpermodule.c: (_wrap_test_value_array):
+
+       Treat None in a GValueArray as pointer/NULL, patch by
+       Ed Catmur, fixes #352209.
+
+2007-04-29  Loïc Minier  <lool+gnome@via.ecp.fr>
+
+       reviewed by: Johan Dahlin  <johan@gnome.org>
+
+       * autogen.sh:
+
+       Use dirname $0 instead of pwd to compute srcdir in autogen,
+       fixes #409234
+
+2007-04-29  Damien Carbery <damien.carbery@sun.com>
+
+       reviewed by: Johan Dahlin  <johan@gnome.org>
+
+       * tests/test-unknown.c: (test_interface_iface_method):
+
+       Do not return in a void function, fixes #385127
+
+2007-04-29  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/pygflags.c: (pyg_flags_from_gtype):
+       Fix leak, patch by Daniel Berrange. Fixes #428726 (Phil Dumont)
+
+2007-04-29  Damien Carbery <damien.carbery@sun.com>
+
+       reviewed by: Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac:
+       * pygobject-2.0-uninstalled.pc.in:
+
+       Add an uninstalled pkg-config file, fixes #385129
+
+2007-04-29  Johan Dahlin  <johan@gnome.org>
+
+       * README:
+       * configure.ac:
+       * gobject/Makefile.am:
+       * gobject/ffi-marshaller.c: (g_value_to_ffi_type),
+       (g_value_from_ffi_type), (g_cclosure_marshal_generic_ffi):
+       * gobject/ffi-marshaller.h:
+       * gobject/gobjectmodule.c: (create_signal), (init_gobject):
+       * pygobject-2.0.pc.in:
+       * tests/test_signal.py:
+       * tests/testhelpermodule.c: (test1_callback),
+       (test1_callback_swapped), (test2_callback), (test3_callback),
+       (test4_callback), (test_float_callback), (test_double_callback),
+       (test_string_callback), (test_object_callback), (connectcallbacks),
+       (_wrap_connectcallbacks), (inittesthelper):
+
+       Add a generic CClosure marshaller based on ffi.
+       This makes it possible to connect to signals on PyGObjects from C.
+       libffi is now an optional dependency
+       Fixes #353816 (Edward Hervey)
+
+2007-04-23  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * configure.ac: Post-release version bump.
+
+=== 2.13.0 ===
+2007-04-23  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * configure.ac: Bump version to 2.13.0.
+
+       * tests/test_properties.py (TestProperties.testMulti): Unit test
+       for get/set_properties.
+
+2007-04-23  Gian Mario Tagliaretti  <gianmt@gnome.org>
+
+       * gobject/pygobject.c: Implemented pygobject_set_properties and
+       pygobject_get_properties in order to set multiple properties using
+       keyword arguments. Fixes 403212
+
+       * docs/reference/pygobject.xml: Docs for the above new methods.
+
+2007-04-14  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c, gobject/pygobject.h: Add a new
+       pyg_gerror_exception_check API.  Fixes #425242.
+
+       * gobject/gobjectmodule.c (pyg_set_application_name)
+       (pyg_set_prgname): Add wrappers for g_set_application_name and
+       g_set_prgname.  Patch by Havoc Pennington.  Fixes #415853.
+
+       * gobject/pygobject.h: Bug #419379: Modernize init_pygobject: use
+       static inline functions instead of macros.
+
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c (pygobject_data_free, pygobject_data_new),
+       (pygobject_get_inst_data, pyg_toggle_notify),
+       (pygobject_switch_to_toggle_ref),
+       (pygobject_register_wrapper_full, pygobject_register_wrapper),
+       (pygobject_new_full, pygobject_unwatch_closure),
+       (pygobject_watch_closure, pygobject_dealloc, pygobject_repr),
+       (pygobject_traverse, pygobject_clear, pygobject_weak_ref),
+       (pygobject_setattro, pygobject_weak_ref_traverse),
+       (pygobject_weak_ref_notify, pygobject_weak_ref_clear),
+       (pygobject_weak_ref_dealloc, pygobject_weak_ref_new),
+       (pygobject_weak_ref_unref, pygobject_weak_ref_call):
+       * gobject/pygobject.h:
+       * gobject/pygtype.c (gclosure_from_pyfunc):
+       * tests/test_subtype.py:
+       Bug #320428: Break PyGObject<->GObject reference cycle (patch
+       v7.1; thanks John Ehresman for the help with this patch).
+
+2007-03-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygobject.c (pygobject_emit): Fix %ld vs int warning.
+       (pygobject_chain_from_overridden): Idem.
+
+2007-03-06  Richard Hult  <richard@imendio.com>
+
+       * configure.ac: Fix the docs option so that it's possible to disable
+       building the docs.
+
+2007-03-03  Edward Hervey  <edward@fluendo.com>
+
+       * gobject/pygobject.c: (set_property_from_pspec):
+       Release the GIL when calling g_object_set_property, since setting a
+       property might trigger some code that might come back in python land.
+       Fixes #395048
+
+2007-01-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.ac:  Turn the option --disable-docs into --enable-docs.
+       * docs/Makefile.am:  Tread --enable-docs like --enable-gtk-doc in
+       gtk+, i.e. do not ever build docs unless requested, but always
+       install them if they are found already built.
+
+2006-12-14  Kjartan Maraas  <kmaraas@gnome.org>
+
+       * autogen.sh: Make this work with automake 1.10 too.
+
+2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac: Post release version bump
+
+=== 2.12.3 ===
+2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS: Update
+
+       * gobject/pygoptiongroup.c (pyg_option_group_dealloc):
+       * tests/test_option.py (TestOption.testBadConstructor):
+       Make sure an exception is raised when we pass in invalid arguments
+       to the optiongroup constructor, add a test. #364576 (Laszlo Pandy)
+
+       * gobject/pygobject.c (pygobject_register_class): set __module__ on
+       gobject derived types, fixes #376099 (Osmo Salomaa)
+
+2006-11-18  Yevgen Muntyan  <muntyan@tamu.edu>
+
+       reviewed by: Johan Dahlin  <johan@gnome.org>
+
+       * gobject/gobjectmodule.c: (create_property):
+       * gobject/pygparamspec.c: (pyg_param_spec_getattr):
+       * tests/test_properties.py:
+
+       Avoid truncating in pyg_param_spec_getattr, add test for all non-float
+       numeric types. Fixes #353943
+
+2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygtype.c (gclosure_from_pyfunc): Use PyObject_Cmp instead
+       of comparing function closure addresses, which makes it possible
+       to use any callable and not just functions.
+       Fixes #375589 (Dima)
+
+2006-10-13  John Finlay  <finlay@moeraki.com>
+
+       * docs/Makefile.am (HTML_FILES): Remove
+       html/pygobject-reference-copyright.html.
+       Fixes #361906 (Marc-Andre Lureau)
+
+2006-10-11  John Finlay  <finlay@moeraki.com>
+
+       * docs/reference/pygobject-introduction.xml: Remove Copyright and
+       License section.
+
+       * docs/reference/pygobject-ref.xml: Remove author info
+
+2006-10-05  Cedric Gustin  <cedric.gustin@gmail.com>
+
+       * dsextras.py (Template) (TemplateExtension): Add
+       py_ssize_t_clean flag to be passed to codegen.SourceWriter.
+
+2006-10-04  Cedric Gustin  <cedric.gustin@gmail.com>
+
+       * Makefile.am: Add pygobject_postinstall.py to EXTRA_DIST.
+
+2006-10-03  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac: Post release version bump
+
+=== 2.12.2 ===
+2006-10-03  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS:
+       * configure.ac: 2.12.2
+
+2006-10-03  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c: (add_signals), (add_properties),
+       (pyg_signal_new), (pyg_object_new), (get_handler_priority),
+       (pyg_io_add_watch), (pyg_spawn_async), (pyg_add_emission_hook),
+       (pyg_remove_emission_hook), (pyg_filename_from_utf8),
+       (_pyg_strv_to_gvalue):
+       * gobject/pygiochannel.c: (py_io_channel_write_chars),
+       (py_io_channel_write_lines):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c: (PyGProps_length), (pygobject_init),
+       (pygobject_connect), (pygobject_connect_after),
+       (pygobject_connect_object), (pygobject_connect_object_after),
+       (pygobject_disconnect), (pygobject_handler_is_connected),
+       (pygobject_handler_block), (pygobject_handler_unblock),
+       (pygobject_emit), (pygobject_chain_from_overridden):
+       * gobject/pygoptioncontext.c: (pyg_option_context_parse):
+       * gobject/pygtype.c: (pyg_value_from_pyobject):
+
+       Python 2.5 and 64 bits fixes (Py_ssize_t), closes bug #338487.
+
+       * gobject/pygenum.c (pyg_enum_repr): Const warning fix.
+
+2006-09-29  Johan Dahlin  <jdahlin@async.com.br>
+
+       * pygtk.py: LGPL, not GPL header
+
+2006-09-24  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygobject.h (init_pygobject_check): Add parentheses
+       "around && within ||" to please gcc.
+
+2006-09-21  Cedric Gustin  <cedric.gustin@gmail.com>
+
+       * dsextras.py: Catch ImportError exception when codegen is not
+       available: disable Template and TemplateExtension, redirect the
+       user to the pygtk installer and raise a NameError
+       exception. check_date has also been rewritten and now uses
+       distutils.dep_util.newer_group(). defs files can also be built
+       using createdefs by passing tuples as keyword argument to Template
+       (see for example the gdk and gtk templates in setup.py).
+       * setup.py: Changed the way the VERSION macro is defined on win32.
+       Also install the html reference documentation, the xsl files and
+       fixxref.
+       * pygobject_postinstall.py: Set the value of DATADIR in
+       fixxref.py. Add functions to install shortcuts in the Start menu
+       to the reference manual (currently disabled: see bug #353849).
+
+2006-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/test_signal.py (TestEmissionHook.testCallbackReturnFalse)
+       (TestEmissionHook.testCallbackReturnTrue)
+       (TestEmissionHook.testCallbackReturnTrueButRemove): Add a few more
+       emission hook tests.
+
+       * gobject/gobjectmodule.c (pyg_add_emission_hook): One too many
+       DECREF on 'extra_args'.
+
+2006-09-12  John Ehresman  <jpe@wingware.com>
+
+       * gobject/pygobject.h (init_pygobject_check): Declare variables
+       at start of code block
+
+2006-09-06  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygmainloop.c (pyg_signal_watch_prepare): Increase the timeout
+       to 1000ms instead of 100.
+
+=== 2.12.1 ===
+2006-09-04  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygobject.h (_PYGOBJECT_H_): Corrected version check,
+       (Sebastian Dröge, #354364)
+
+       * configure.ac: Post release version bump
+
+=== 2.12.0 ===
+2006-09-04  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS:
+       * configure.ac: 2.12.0
+
+2006-08-28  Johan Dahlin  <jdahlin@async.com.br>
+
+       * docs/Makefile.am: Install html files regardless even when passing
+       in --disable-docs, fixes #353159 (Matthias Clasen)
+
+2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.ac: Post-release version bump.
+
+=== 2.11.4 ===
+2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * NEWS: Update.
+
+       * gobject/gobjectmodule.c (pyg_type_register): Correct a bug in
+       the code that checks if parent already implements an interface or not.
+
+       * tests/test-unknown.c (test_interface_base_init),
+       (test_interface_get_type): Add a property to the interface, for
+       better testing.
+       (test_unknown_get_property),
+       (test_unknown_set_property, test_unknown_class_init): Add a
+       property to the class as required by the interface.
+
+       * tests/test_interface.py: More thorough interface testing, with
+       properties and test both the case of implementing an interface
+       from scratch, and re-implementing and interface that a parent
+       already implements.
+
+2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pygobject__g_instance_init): If
+       necessary, attach the GObject to the PyGObject here.
+       (pygobject_constructv): Cope with the fact that wrapper->obj may
+       have already been set due to the change above.
+
+       * tests/test_signal.py: Add test case fixed by the changes above,
+       basically calling self.emit() inside do_set_property called
+       implicitly by the constructor due to a CONSTRUCT property.
+
+       Fixes bug 353039: "Failure in signal emission during
+       do_set_property invoked from constructor".
+
+2006-08-26  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_type_register): Fix type
+       registration once more to account for all corner cases.  This time
+       we register interfaces in two stages: first, before properties and
+       signals are registered, we register the interfaces that are
+       already implemented in the parent type and are being overridden;
+       second, after registration of properties and signals, we register
+       the remaining interfaces.
+
+2006-08-21  Johan Dahlin  <jdahlin@async.com.br>
+
+       * docs/Makefile.am (EXTRA_DIST): Remove build_stamp, include generated .html
+       in the distributed tarball. Remove builddate.xml, reference directory and fixxref.py
+       dependencies to avoid regenerating the tarball when it's not needed.
+
+       * configure.ac: Post release version bump
+
+=== 2.11.3 ===
+2006-08-21  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS: Update
+
+       * Makefile.am:
+       * docs/Makefile.am:
+       Always install the xsl files & css files, regardless if the
+       documentation was actually built or not. Also clean it up considerably.
+
+2006-08-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_type_register): Move the interface
+       registration code up, to run before properties and signals
+       registration, because glib doesn't allow us to add interfaces
+       after the first call to g_class_ref.
+
+2006-08-16  John Finlay  <finlay@moeraki.com>
+
+       * docs/reference/pygobject-functions.xml: Update docs for
+       gobject functions.
+
+2006-08-15  Murray Cumming  <murrayc@murrayc.com>
+
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.h:
+       Replace uses of typename with type_name, because that is a
+       reserved C++ keyword. This was breaking compilation of Glom
+       due its use in the new type_register_custom function pointer in
+       pygobject.h.
+
+2006-08-12  John Finlay  <finlay@moeraki.com>
+
+       * pygobject-2.0.pc.in: Add reference to installed pygobject docs
+       * docs/Makefile.am: Add install of style.css
+       * docs/xsl/html.xsl: Define stylesheet as style.css
+       * docs/style.css: Add.
+
+2006-08-10  John Finlay  <finlay@moeraki.com>
+
+       * docs/reference/entities.docbook.in:
+       * docs/reference/pygobject-ref.xml:
+       * docs/Makefile.am:
+       * configure.ac:
+       Use builddate.xml for the builddate entity and have builddate.xml be
+       updated when the docs are built not during configure time.
+
+2006-08-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac:  Post release version bump.
+
+=== 2.11.2 ===
+2006-08-08  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS: Update
+
+2006-08-07  Johan Dahlin  <jdahlin@async.com.br>
+
+       * docs/Makefile.am ($(HTML_DATA)): Fix parallel build
+       (#350225, Ed Catmur)
+
+2006-08-06  Johan Dahlin  <johan@gnome.org>
+
+       * m4/as-expand.m4: New file to workaround automake silliness
+
+       * docs/xsl/fixxref.py.in: New script
+
+       * docs/Makefile.am (XSLFILES): Add fixxref.py script, moved in from
+       PyGTK.
+
+       * docs/xsl/html.xsl: Do not use shade.verbatim, set the background
+       color and border as a normal html tag to avoid an external
+       stylesheet.
+
+2006-08-04  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac: Post release version bump
+
+=== 2.11.1 ===
+2006-08-04  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS: Update
+
+       * README: Update, some s/PyGTK/PyGObject/
+
+       * configure.ac:
+       * docs/Makefile.am:
+       * docs/reference/.cvsignore:
+       * docs/reference/entities.docbook.in:
+       * docs/reference/pygobject-ref.xml:
+       Clean up the build date/version mess I created.
+       Now it's created during configure time and properly included in
+       the docbook files. Also make sure distcheck passes
+
+2006-08-04  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * configure.in: Add hack to disable libtool checking for g++ and
+       g77 (copied from libglade).
+
+2006-07-29  John Finlay  <finlay@moeraki.com>
+
+       * gobject/pygobject.h (pyg_param_gvalue_from_pyobject): Fix define
+       to point to the correct function pointer field.
+
+2006-07-29  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygflags.c (pyg_flags_add): idem.
+
+       * gobject/pygenum.c (pyg_enum_add): Give a more explicit error
+       message when the gtype is not an enum.
+
+2006-07-25  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygobject.h (init_pygobject_check): Add a macro to easily
+       check the installed pygobject version.
+
+       * gobject/pygflags.c (pyg_flags_add)
+       * gobject/pygenum.c (pyg_enum_add): Duplicate the string before
+       sending it to python. Fixes GCC warnings.
+
+2006-07-24  John Finlay  <finlay@moeraki.com>
+
+       * gobject/pygflags.c (pyg_flags_get_first_value_name)
+       (pyg_flags_get_first_value_nick): Avoid segfault when
+       g_flags_get_first_value returns NULL.
+
+2006-07-20  John Finlay  <finlay@moeraki.com>
+
+       * docs/Makefile.am: Make version.xml dependent on config.h
+       Make builddate.xml dependent on REFERENCE_DEPS. Add builddate.xml to
+       build_stamp and pdf dependencies. Add pdf files to cleanup.
+
+2006-07-20  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac:
+       * docs/Makefile.am:
+       * docs/reference/.cvsignore:
+       * docs/reference/version.xml.in:
+       Generate builddate.xml and version.xml at build time instead on
+       configure time, add proper dependencies.
+
+2006-07-19  John Finlay  <finlay@moeraki.com>
+
+       * docs/Makefile.am: Use more portable date generator.
+
+       * docs/xsl/ref-html-style.xsl: Add book to list of indexed items.
+
+       * docs/xsl/html.xsl: Output xref links for unknown links.
+
+       * docs/xsl/ref-html-style.xsl: Include refsect1 and refsect2 in
+       indexed items but only if they have ids.
+
+       * configure.ac (AC_CONFIG_FILES) : Add docs/reference/version.xml
+
+       * docs/reference/pygobject-ref.xml: Add pygobject-introduction.xml
+       and version and builddate entities. Remove commented out items.
+
+       * docs/Makefile.am: Add reference/pygobject-introduction.xml and
+        reference/version.xml.in
+
+2006-07-18  Johan Dahlin  <johan@gnome.org>
+
+       * docs/Makefile.am (HTMLdir): Install book in $datadir/gtk-doc/html
+
+2006-07-13  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/gobjectmodule.c: (pyg_type_from_name),
+       (get_type_name_for_class):
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c: (pygobject_new_with_interfaces),
+       (pygobject_lookup_class), (pygobject_emit):
+       * gobject/pygobject.h:
+       * gobject/pygtype.c: (_wrap_g_type_from_name),
+       (pyg_type_from_object), (pyg_type_register_custom_callback),
+       (pyg_type_get_custom), (_pyg_type_from_name):
+       Add infrastructure for lazy type registration, fixes #346947
+
+2006-07-13  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * m4/python.m4: Properly quote AM_CHECK_PYMOD definition.
+
+       * gobject/pygoptioncontext.c (pyg_option_context_parse): Fix mem
+       leak.
+
+2006-07-12  Johan Dahlin  <jdahlin@async.com.br>
+
+       * Makefile.am:
+       * configure.ac:
+       * docs/.cvsignore:
+       * docs/Makefile.am:
+       * docs/common.xsl:
+       * docs/devhelp.xsl:
+       * docs/html.xsl:
+       * docs/pdf-style.xsl:
+       * docs/pdf.xsl:
+       * docs/ref-html-style.xsl:
+       * docs/reference/.cvsignore:
+       * docs/reference/pygobject-classes.xml:
+       * docs/reference/pygobject-constants.xml:
+       * docs/reference/pygobject-functions.xml:
+       * docs/reference/pygobject-gboxed.xml:
+       * docs/reference/pygobject-ginterface.xml:
+       * docs/reference/pygobject-gpointer.xml:
+       * docs/reference/pygobject-maincontext.xml:
+       * docs/reference/pygobject-mainloop.xml:
+       * docs/reference/pygobject-ref.xml:
+       * docs/reference/pygobject.xml:
+       Import GObject part of John Finlay's PyGTK Reference Manual, copy
+       over infrastructure from the pygtk-web module.
+
+2006-07-12  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * configure.ac: Post-release version bump to 2.11.1.
+
+=== PyGObject 2.11.0 ===
+2006-07-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_type_register): Make interface_data
+       point to the python type before adding the interface to the new
+       type.  This should fix interface implementation (actually I
+       thought such code had already been added earlier but can't find it
+       now and it is obviously needed...)
+       (pyg_type_register): move the code that needs g_type_class_ref
+       until after interface registration (more code that I already wrote
+       in the past but got lost).
+
+2006-07-05  John Finlay  <finlay@moeraki.com>
+
+       * gobject/pygiochannel.c (py_io_channel_init): Fix message typo.
+
+2006-06-28  Cedric Gustin  <cedric.gustin@gmail.com>
+
+       * dsextras.py (InstallData): Set datarootdir in .pc file.
+
+       * pygobject_postinstall.py (replace_prefix): Do not parse
+       pygtk-codegen-2.0 as it is part of pygtk.
+
+       * setup.py: Create gobject extension as gobject._gobject. Add
+       pygoptioncontext.c and pygoptiongroup.c to the list of source
+       files. Add option.py to the module files. Changed name of
+       distutils package from pygtk to pygobject.
+
+2006-06-24  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_filename_from_utf8): Wrap
+       g_filename_from_utf8.
+
+       * tests/test_signal.py (TestClosures.testGString): Add unit test
+       for signals using the type TYPE_GSTRING.
+
+       * gobject/pygtype.c (pyg_value_as_pyobject)
+       (pyg_value_from_pyobject): Implement conversion code for the type
+       G_TYPE_GSTRING.
+
+       * gobject/gobjectmodule.c (pyg_filename_display_basename)
+       (pyg_filename_display_name): Add bindings for
+       g_filename_display_basename and g_filename_display_name.
+       (init_gobject): Add a TYPE_GSTRING definition.
+
+       * gobject/pygobject.h,
+       * gobject/pygobject-private.h: Make pyg_constant_strip_prefix
+       receive and return const gchar*, to indicate it does not change
+       the string.  Unfortunately since PyModule_AddIntConst is broken in
+       python < 2.5 this introduces const warnings elsewhere :-(
+
+       * gobject/gobjectmodule.c (pyg_flags_add_constants)
+       (pyg_enum_add_constants): Fix const warnings.
+
+2006-06-23  John Finlay  <finlay@moeraki.com>
+
+       * gobject/gobjectmodule.c (pyg_object_class_list_properties)
+       (pyg_signal_list_ids, pyg_signal_lookup, pyg_signal_query): Add
+       support for retrieving signal and propertie info from interface types.
+
+2006-06-04  Johan Dahlin  <johan@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_spawn_async)
+       (pyg_signal_new): Fix two leaks in error cases, found by
+       Coverity.
+
+2006-05-28  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/test_subtype.py: Uncomment Johan's "subsubtype" test case.
+
+       * gobject/gobjectmodule.c (pygobject__g_instance_init): Pass the
+       g_class to pygobject_new_full, because during the instance init
+       function instances are temporarily assigned the parent's GType.
+
+       * gobject/pygobject-private.h,
+       * gobject/pygobject.c (pygobject_new_full): Make
+       pygobject_new_full accept an optional g_class parameter; If
+       present, the GType is extracted from the class instead of from the
+       instance.
+
+2006-05-20  Yevgen Muntyan  <muntyan@tamu.edu>
+
+       reviewed by: Gustavo Carneiro
+
+       * gobject/pygobject.c (pygobject_init, pygobject_get_property),
+       (pygobject_set_property): Bug 341174: Be more specific in
+       set/get_property error messages.
+
+2006-05-07  Yevgen Muntyan  <muntyan@tamu.edu>
+
+       reviewed by: Gustavo Carneiro
+
+       * gobject/gobjectmodule.c (_log_func, add_warning_redirection),
+       (remove_handler, disable_warning_redirections, init_gobject):
+       * gobject/pygobject.h:  Add new pyg_add_warning_redirection and
+       pyg_disable_warning_redirections APIs (bug #323786 again).
+
+2006-05-07  Johan Dahlin  <johan@gnome.org>
+
+       * Makefile.am (CLEANFILES): Remove pygtk.py, it's not
+       auto-generated any longer. Thanks to Kjartan for noticing.
+
+2006-05-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygoptioncontext.c:
+       s/sizeof(PyGMainContext)/sizeof(PyGOptionContext)/ (copy-paste error).
+
+2006-05-01  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (pyg_pid_close): Add a close() method
+       to the GPid wrapper.
+
+       * gobject/gobjectmodule.c (pyg_pid_free, pyg_pid_new),
+       (pyg_spawn_async, init_gobject): Wrap GPid in an object whose
+       destructor calls g_spawn_close_pid.  Fixes #340160.
+
+2006-04-29  Johannes Hölzl <johannes.hoelzl@gmx.de>
+
+       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
+
+       * examples/Makefile.am:
+       * examples/option.py:
+       * gobject/Makefile.am:
+       * gobject/gobjectmodule.c: (init_gobject):
+       * gobject/option.py:
+       * gobject/pygobject-private.h:
+       * gobject/pygoptioncontext.c: (pyg_option_context_init),
+       (pyg_option_context_dealloc), (pyg_option_context_parse),
+       (pyg_option_context_set_help_enabled),
+       (pyg_option_context_get_help_enabled),
+       (pyg_option_context_set_ignore_unknown_options),
+       (pyg_option_context_get_ignore_unknown_options),
+       (pyg_option_context_set_main_group),
+       (pyg_option_context_get_main_group),
+       (pyg_option_context_add_group), (pyg_option_context_compare),
+       (pyg_option_context_new):
+       * gobject/pygoptiongroup.c: (check_if_owned), (destroy_g_group),
+       (pyg_option_group_init), (pyg_option_group_dealloc), (arg_func),
+       (pyg_option_group_add_entries),
+       (pyg_option_group_set_translation_domain),
+       (pyg_option_group_compare), (pyg_option_group_transfer_group),
+       (pyg_option_group_new):
+       * tests/test_option.py:
+
+       Add support for GOption, fixes #163645
+
+2006-04-29  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygtype.c (gclosure_from_pyfunc):
+
+       * gobject/pygobject.c (pygobject_disconnect_by_func)
+       (pygobject_handler_block_by_func)
+       (pygobject_handler_unblock_by_func):
+
+       * tests/test_signal.py (TestEmissionHook._callback):
+
+       Fix #154845, add tests and a private method.
+
+2006-04-23  John Ehresman   <jpe@wingware.com>
+
+       reviewed by: Gustavo
+
+       * Makefile.am:
+       * pygtk.py:
+       * pygtk.py.in:
+       Bug 338945: Make pygtk.py relocatable
+
+2006-04-18  John Ehresman   <jpe@wingware.com>
+
+       * dsextras.py: Add compiler / linker flags from pkgconfig-2.0.pc
+       by default, with an override mechanism.  Filter out -lc & -lm if
+       compiling with msvc.
+
+       * setup.py: Change C extension name to _gobject and don't use the
+       pkgconfig-2.0.pc when compiling
+
+2006-04-15  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/__init__.py (_PyGObject_API): Copy _PyGObject_API from
+       gobject._gobject into gobject in order to preserve binary
+       compatibility with 3rd party modules.
+
+       * gobject/pygobject.h (init_pygobject): Import gobject, gobject._gobject.
+
+       * gobject/Makefile.am: Fix pygobject installation dir: install
+       both _gobject.la and __init__.py into
+       $(pyexecdir)/gtk-2.0/gobject.
+
+2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/gobjectmodule.c (init_gobject):
+       * gobject/__init__.py:
+       Move over almost all GType constants from C to Python.
+
+2006-04-11  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c (_wrap_pyg_type_register),
+       (pyg__install_metaclass, init_gobject):  GObjectMeta now moved to
+       python-land (__init__.py).
+
+       * gobject/pygobject-private.h:
+       * gobject/pygobject.c (pygobject_register_class):
+       PyGObject_MetaType is now a pointer, not structure.
+
+       * gobject/gobjectmodule.c (_wrap_pyg_type_register): Add optional
+       type name parameter.
+
+       * tests/common.py (importModule): Include original exception
+       string in the raised SystemExit.
+
+2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/.cvsignore:
+       * gobject/Makefile.am:
+       * gobject/__init__.py:
+       * gobject/gobjectmodule.c: (init_gobject):
+       * gobject/pygobject.h:
+       * tests/Makefile.am:
+       * tests/common.py:
+
+       Turn gobject into a package; move _gobject to gobject._gobject and
+       add gobject/__init__.py. Update macros and testsuite.
+
+2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * configure.ac: Post release version bump
+
+=== PyGObject 2.10.1 ===
+2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
+
+       * NEWS: Update
+
+2006-04-11  Andy Wingo  <wingo@pobox.com>
+
+       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/gobjectmodule.c (create_property): Parse unsigned int64
+       constraints in param spec declaration using the "K" ParseTuple
+       format unit, not L -- allows the full range of the datatype to be
+       parsed. K format unit added in python 2.3.
+
+2006-04-01  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * tests/test_properties.py: Add test for #335854.
+
+       * pygtk.py.in (require): For version == '2.0', use a hardcoded
+       pygtk path, recorded during build.
+
+       * gobject/gobjectmodule.c (_pyg_strv_to_gvalue): Don't allow
+       arbitrary sequences, only tuple or list, since a string is a
+       sequence too.
+       (pyg_object_new): Add a bit more detail to the exception string.
+
+2006-01-16  Johan Dahlin  <johan@gnome.org>
+
+       * Makefile.am: Include dsextras.py in the dist and install it.
+
+2006-03-19  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygobject.c (pygobject_new_with_interfaces): Remove
+       comment "It will currently not filter out interfaces already
+       implemented by it parents.", since it is no longer true since
+       2006-01-13.
+
+=== PyGObject 2.10.0 ===
+2006-01-16  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2006-03-09 Michael Smith  <msmith@fluendo.com>
+
+       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/pygenum.c: (pyg_enum_new), (pyg_enum_from_gtype),
+       (pyg_enum_add):
+       * gobject/pygflags.c: (pyg_flags_new), (pyg_flags_from_gtype),
+       (pyg_flags_add):
+       Plug a couple of leaks, fixes #334027.
+
+2006-01-19  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac (export_dynamic):
+       * Makefile.am (egg):
+       Add a make egg target
+
+2006-01-16  Johan Dahlin  <johan@gnome.org>
+
+       * configure.ac: Post release version bump
+
+=== PyGObject 2.9.1 ===
+2006-01-16  Johan Dahlin  <johan@gnome.org>
+
+       * NEWS: Update
+
+2006-01-15  Christopher Aillon  <caillon@redhat.com>
+
+       * gobject/gobjectmodule.c (pyg_strv_to_gvalue):
+       Don't call g_value_init since the other *_to_gvalue
+       methods expect an already inited GValue
+
+2006-01-14  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/gobjectmodule.c (iowatch_marshal): Warn if io callback
+       returns None: almost always this is an error.
+
+2006-01-13  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
+
+       * gobject/pygobject.c (pygobject_register_class): Change strategy
+       a bit: don't ignore bases; use but augment it with missing bases
+       extracted in runtime.
+
+       * gobject/pygobject.c (pygobject_register_class): Don't use the
+       passed in 'bases' parameter; instead find out in runtime the bases
+       for any given gtype.
+       (pyg_type_get_bases, pygobject_new_with_interfaces): Refactor code
+       that dynamically discovers bases into a separate function;
+       Override tp_dealloc, tp_alloc, tp_free, tp_traverse, and tp_clear,
+       inherit them again from the parent type, since type_new inside
+       Python core sets them to hardcoded functions subtype_xxx.  Also
+       call py_parent_type->ob_type, instead of fixed &PyType_Type.
+       (pygobject_clear): Change a g_message to g_warning.
+
+2006-01-13  Johan Dahlin  <jdahlin@async.com.br>
+
+       * gobject/gobjectmodule.c: (pyg_io_add_watch),
+       (marshal_emission_hook), (pyg_add_emission_hook),
+       (pyg_remove_emission_hook):
+       * gobject/pygobject.c:
+       * tests/test_signal.py:
+
+       Add add/remove_emission_hook and tests. Fixes #325977
+
+2006-01-11  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
+
+       * gobject/gobjectmodule.c (_pyg_signal_accumulator),
+       (create_signal, pyg_signal_accumulator_true_handled),
+       (initgobject): Bug 155380 -- Add support for signal accumulators.
+
+       * tests/runtests.py: Add 'test_enum', 'test_conversion' to
+       SKIP_FILES, since they depend on pygtk modules so don't work
+       anymore.  This should be eventually fixed, though.
+
+       * tests/test_signal.py: Test signal accumulators.
+
+       * gobject/pygtype.c (object_doc_descr_get): Reorder
+       properties/signals documentation more nicely: signals + properties
+       from each type are presented, with types ranging from the leaf
+       types to the base types.
+
+       * configure.ac: Branch, bump version to 2.9.1.
+
+=== PyGObject 2.8.0 ===
+2006-01-09  Johan Dahlin  <jdahlin@async.com.br>
+
+       * MANIFEST.in:
+       * Makefile.am:
+       * tests/Makefile.am:
+
+       Make dist/distcheck work again
+
+2006-01-09  Johan Dahlin  <jdahlin@async.com.br>
+
+       * setup.py: Add distutils support
+
+       * dsextras.py (get_m4_define): Check for configure.ac aswell.
+
+       * .cvsignore:
+       * AUTHORS:
+       * COPYING:
+       * INSTALL:
+       * Makefile.am:
+       * PKG-INFO.in:
+       * README:
+       * autogen.sh:
+       * configure.ac:
+       * examples/.cvsignore:
+       * examples/Makefile.am:
+       * gobject/gobjectmodule.c: (initgobject):
+       * m4/jhflags.m4:
+       * m4/python.m4:
+       * pygobject-2.0.pc.in:
+       * tests/Makefile.am:
+       * tests/common.py:
+       * tests/leak.glade:
+       * tests/runtests.py:
+       * tests/test_actiongroup.py:
+       * tests/test_dialog.py:
+       * tests/test_gdk.py:
+       * tests/test_gdkevent.py:
+       * tests/test_glade.py:
+       * tests/test_gtype.py:
+       * tests/test_liststore.py:
+       * tests/test_radiobutton.py:
+       * tests/test_signal.py:
+       * tests/test_subtype.py:
+       * tests/test_textview.py:
+       * tests/test_thread.py:
+       * tests/testhelpermodule.c: (test_type_get_type),
+       (_wrap_test_g_object_new):
+       * tests/testmodule.py:
+
+       Split out PyGObject from PyGTK.
diff --git a/INSTALL b/INSTALL
index d60e29a..23e5f25 100644 (file)
--- a/INSTALL
+++ b/INSTALL
 Installation Instructions
 *************************
 
-Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
-Inc.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
 
-   Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
 
 Basic Installation
 ==================
 
-   Briefly, the shell commands './configure; make; make install' should
-configure, build, and install this package.  The following
-more-detailed instructions are generic; see the 'README' file for
-instructions specific to this package.  Some packages provide this
-'INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
+These are generic installation instructions.
 
-   The 'configure' shell script attempts to guess correct values for
+   The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
-those values to create a 'Makefile' in each directory of the package.
-It may also create one or more '.h' files containing system-dependent
-definitions.  Finally, it creates a shell script 'config.status' that
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
 you can run in the future to recreate the current configuration, and a
-file 'config.log' containing compiler output (useful mainly for
-debugging 'configure').
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
 
-   It can also use an optional file (typically called 'config.cache'
-and enabled with '--cache-file=config.cache' or simply '-C') that saves
-the results of its tests to speed up reconfiguring.  Caching is
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
 disabled by default to prevent problems with accidental use of stale
-cache files.
+cache files.)
 
    If you need to do unusual things to compile the package, please try
-to figure out how 'configure' could check whether to do them, and mail
-diffs or instructions to the address given in the 'README' so they can
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
 be considered for the next release.  If you are using the cache, and at
-some point 'config.cache' contains results you don't want to keep, you
+some point `config.cache' contains results you don't want to keep, you
 may remove or edit it.
 
-   The file 'configure.ac' (or 'configure.in') is used to create
-'configure' by a program called 'autoconf'.  You need 'configure.ac' if
-you want to change it or regenerate 'configure' using a newer version
-of 'autoconf'.
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
 
-   The simplest way to compile this package is:
+The simplest way to compile this package is:
 
-  1. 'cd' to the directory containing the package's source code and type
-     './configure' to configure the package for your system.
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
 
-     Running 'configure' might take a while.  While running, it prints
-     some messages telling which features it is checking for.
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
 
-  2. Type 'make' to compile the package.
+  2. Type `make' to compile the package.
 
-  3. Optionally, type 'make check' to run any self-tests that come with
-     the package, generally using the just-built uninstalled binaries.
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
 
-  4. Type 'make install' to install the programs and any data files and
-     documentation.  When installing into a prefix owned by root, it is
-     recommended that the package be configured and built as a regular
-     user, and only the 'make install' phase executed with root
-     privileges.
+  4. Type `make install' to install the programs and any data files and
+     documentation.
 
-  5. Optionally, type 'make installcheck' to repeat any self-tests, but
-     this time using the binaries in their final installed location.
-     This target does not install anything.  Running this target as a
-     regular user, particularly if the prior 'make install' required
-     root privileges, verifies that the installation completed
-     correctly.
-
-  6. You can remove the program binaries and object files from the
-     source code directory by typing 'make clean'.  To also remove the
-     files that 'configure' created (so you can compile the package for
-     a different kind of computer), type 'make distclean'.  There is
-     also a 'make maintainer-clean' target, but that is intended mainly
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
      for the package's developers.  If you use it, you may have to get
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
-  7. Often, you can also type 'make uninstall' to remove the installed
-     files again.  In practice, not all packages have tested that
-     uninstallation works correctly, even though it is required by the
-     GNU Coding Standards.
-
-  8. Some packages, particularly those that use Automake, provide `make
-     distcheck', which can by used by developers to test that all other
-     targets like 'make install' and 'make uninstall' work correctly.
-     This target is generally not run by end users.
-
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
-the 'configure' script does not know about.  Run './configure --help'
-for details on some of the pertinent environment variables.
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
 
-   You can give 'configure' initial values for configuration parameters
+   You can give `configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
 is an example:
 
-     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
 
    *Note Defining Variables::, for more details.
 
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
-own directory.  To do this, you can use GNU 'make'.  'cd' to the
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
-the 'configure' script.  'configure' automatically checks for the
-source code in the directory that 'configure' is in and in '..'.  This
-is known as a "VPATH" build.
-
-   With a non-GNU 'make', it is safer to compile the package for one
-architecture at a time in the source code directory.  After you have
-installed the package for one architecture, use 'make distclean' before
-reconfiguring for another architecture.
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
 
-   On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple '-arch' options to the
-compiler but only a single '-arch' option to the preprocessor.  Like
-this:
-
-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CPP="gcc -E" CXXCPP="g++ -E"
-
-   This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the 'lipo' tool if you have problems.
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
 
 Installation Names
 ==================
 
-   By default, 'make install' installs the package's commands under
-'/usr/local/bin', include files under '/usr/local/include', etc.  You
-can specify an installation prefix other than '/usr/local' by giving
-'configure' the option '--prefix=PREFIX', where PREFIX must be an
-absolute file name.
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
 PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like '--bindir=DIR' to specify different values for particular
-kinds of files.  Run 'configure --help' for a list of the directories
-you can set and what kinds of files go in them.  In general, the
-default for these options is expressed in terms of '${prefix}', so that
-specifying just '--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
-   The most portable way to affect installation locations is to pass the
-correct locations to 'configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-'make install' command line to change installation locations without
-having to reconfigure or recompile.
-
-   The first method involves providing an override variable for each
-affected directory.  For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-'${prefix}'.  Any directories that were specified during 'configure',
-but not in terms of '${prefix}', must each be overridden at install
-time for the entire installation to be relocated.  The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
-   The second method involves providing the 'DESTDIR' variable.  For
-example, 'make install DESTDIR=/alternate/directory' will prepend
-'/alternate/directory' before all installation names.  The approach of
-'DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters.  On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of '${prefix}'
-at 'configure' time.
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 
 Optional Features
 =================
 
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving 'configure' the
-option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
-
-   Some packages pay attention to '--enable-FEATURE' options to
-'configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to '--with-PACKAGE' options, where PACKAGE
-is something like 'gnu-as' or 'x' (for the X Window System).  The
-'README' should mention any '--enable-' and '--with-' options that the
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
 package recognizes.
 
-   For packages that use the X Window System, 'configure' can usually
+   For packages that use the X Window System, `configure' can usually
 find the X include and library files automatically, but if it doesn't,
-you can use the 'configure' options '--x-includes=DIR' and
-'--x-libraries=DIR' to specify their locations.
-
-   Some packages offer the ability to configure how verbose the
-execution of 'make' will be.  For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with 'make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with 'make V=0'.
-
-Particular systems
-==================
-
-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
-   HP-UX 'make' updates targets which have the same time stamps as
-their prerequisites, which makes it generally unusable when shipped
-generated files such as 'configure' are involved.  Use GNU 'make'
-instead.
-
-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its '<wchar.h>' header file.  The option '-nodtk' can be used as
-a workaround.  If GNU CC is not installed, it is therefore recommended
-to try
-
-     ./configure CC="cc"
-
-and if that doesn't work, try
-
-     ./configure CC="cc -nodtk"
-
-   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
-directory contains several dysfunctional programs; working variants of
-these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
-in your 'PATH', put it _after_ '/usr/bin'.
-
-   On Haiku, software installed for all users goes in '/boot/common',
-not '/usr/local'.  It is recommended to use the following options:
-
-     ./configure --prefix=/boot/common
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
 
 Specifying the System Type
 ==========================
 
-   There may be some features 'configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, 'configure' can figure that out, but if it prints
-message saying it cannot guess the machine type, give it the
-'--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as 'sun4', or a canonical name which has the form:
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
 
      CPU-COMPANY-SYSTEM
 
 where SYSTEM can have one of these forms:
 
-     OS
-     KERNEL-OS
+     OS KERNEL-OS
 
-   See the file 'config.sub' for the possible values of each field.  If
-'config.sub' isn't included in this package, then this package doesn't
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
 need to know the machine type.
 
    If you are _building_ compiler tools for cross-compiling, you should
-use the option '--target=TYPE' to select the type of system they will
+use the option `--target=TYPE' to select the type of system they will
 produce code for.
 
    If you want to _use_ a cross compiler, that generates code for a
 platform different from the build platform, you should specify the
 "host" platform (i.e., that on which the generated programs will
-eventually be run) with '--host=TYPE'.
+eventually be run) with `--host=TYPE'.
 
 Sharing Defaults
 ================
 
-   If you want to set default values for 'configure' scripts to share,
-you can create a site shell script called 'config.site' that gives
-default values for variables like 'CC', 'cache_file', and 'prefix'.
-'configure' looks for 'PREFIX/share/config.site' if it exists, then
-'PREFIX/etc/config.site' if it exists.  Or, you can set the
-'CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all 'configure' scripts look for a site script.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
 
 Defining Variables
 ==================
 
-   Variables not defined in a site shell script can be set in the
-environment passed to 'configure'.  However, some packages may run
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
-them in the 'configure' command line, using 'VAR=value'.  For example:
+them in the `configure' command line, using `VAR=value'.  For example:
 
      ./configure CC=/usr/local2/bin/gcc
 
-causes the specified 'gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).  Here is a another example:
 
-Unfortunately, this technique does not work for 'CONFIG_SHELL' due to
-an Autoconf limitation.  Until the limitation is lifted, you can use
-this workaround:
+     /bin/bash ./configure CONFIG_SHELL=/bin/bash
 
-     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
 
-'configure' Invocation
+`configure' Invocation
 ======================
 
-   'configure' recognizes the following options to control how it
-operates.
-
-'--help'
-'-h'
-     Print a summary of all of the options to 'configure', and exit.
+`configure' recognizes the following options to control how it operates.
 
-'--help=short'
-'--help=recursive'
-     Print a summary of the options unique to this package's
-     'configure', and exit.  The 'short' variant lists options used
-     only in the top level, while the 'recursive' variant lists options
-     also present in any nested packages.
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
 
-'--version'
-'-V'
-     Print the version of Autoconf used to generate the 'configure'
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
      script, and exit.
 
-'--cache-file=FILE'
+`--cache-file=FILE'
      Enable the cache: use and save the results of the tests in FILE,
-     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
      disable caching.
 
-'--config-cache'
-'-C'
-     Alias for '--cache-file=config.cache'.
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
 
-'--quiet'
-'--silent'
-'-q'
+`--quiet'
+`--silent'
+`-q'
      Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to '/dev/null' (any error
+     suppress all normal output, redirect it to `/dev/null' (any error
      messages will still be shown).
 
-'--srcdir=DIR'
+`--srcdir=DIR'
      Look for the package's source code in directory DIR.  Usually
-     'configure' can determine that directory automatically.
-
-'--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names::
-     for more details, including other options available for fine-tuning
-     the installation locations.
+     `configure' can determine that directory automatically.
 
-'--no-create'
-'-n'
-     Run the configure checks, but stop before creating any output
-     files.
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
 
-'configure' also accepts some other, not widely useful, options.  Run
-'configure --help' for more details.
index 4c91362..35e4eb1 100644 (file)
@@ -1,10 +1,7 @@
-# Limit PyFlakes and PEP8 to these directories.
-pycheck_dirs = examples gi tests pygtkcompat
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+AUTOMAKE_OPTIONS = 1.7
 
-# Part of the gi subdirectory is handled with non-recursive make to avoid
-# py-compile getting confused between gi/types.py and Python's standard
-# types module.
-SUBDIRS = . $(pycheck_dirs)
+SUBDIRS = examples gi tests
 
 PLATFORM_VERSION = 3.0
 
@@ -12,15 +9,13 @@ CLEANFILES = \
        `find "$(builddir)" -type f -name "*.pyc" -print`
 
 EXTRA_DIST = \
-       autogen.sh \
-       pygobject.doap \
+       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
        PKG-INFO \
        PKG-INFO.in \
-       pygi-convert.sh \
-       m4/python.m4 \
-       m4/introspection.m4 \
-       setup.py
+       m4/as-ac-expand.m4 \
+       m4/jhflags.m4 \
+       m4/python.m4
 
 MAINTAINERCLEANFILES = \
        $(srcdir)/INSTALL \
@@ -52,66 +47,69 @@ MAINTAINERCLEANFILES = \
 BUILT_EXTRA_DIST =             \
        ChangeLog
 
-nobase_pyexec_PYTHON = \
-       gi/__init__.py \
-       gi/types.py \
-       gi/module.py \
-       gi/importer.py \
-       gi/pygtkcompat.py \
-       gi/docstring.py \
-       gi/_constants.py \
-       gi/_propertyhelper.py \
-       gi/_signalhelper.py \
-       gi/_option.py \
-       gi/_error.py
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
-       for f in $(nobase_pyexec_PYTHON); do \
-               [ -e $(builddir)/$$f ] || \
-                       $(LN_S) $(abs_srcdir)/$$f $(builddir)/$$f; \
-       done
-
-all-local: build_pylinks
-
-check-local: build_pylinks
-
-if WITH_COMMON
 # pkg-config files
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
-endif
 
 # python
 pyexec_LTLIBRARIES =
 
+# install pth file.
+install-data-local:
+       $(mkinstalldirs) $(DESTDIR)$(pythondir)
+install-exec-local:
+       $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+uninstall-local:
+
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
+
+egg: EGG_TMPDIR:=$(TMPDIR)/$(PACKAGE)-$(PACKAGE_VERSION)
+egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
+       rm -fr $(EGG_TMPDIR)
+       echo $(EGG_NAME)
+       $(MKDIR_P) $(EGG_TMPDIR)
+       $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
+       $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
+       rm -fr $(EGG_TMPDIR)/gobject.la
+       $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
+       echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
+       ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
+       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
+       mv $(EGG_TMPDIR)/$(EGG_NAME) .
+       rm -fr $(EGG_TMPDIR)
+
+doc-dist:
+       mkdir pygobject
+       cp -r docs/html/*.html pygobject
+       cp -r docs/html/*.sgml pygobject
+       cp -r docs/html/*.devhelp pygobject
+       cp -r docs/style.css pygobject
+       tar cfz $(PACKAGE)-docs.tar.gz pygobject
+       rm -fr pygobject
+
+release-tag:
+       @ROOT=`svn info --xml|egrep ^"<url>"|cut -d\> -f2|cut -d\< -f1`; \
+       SVNVERSION=`echo $(VERSION)|sed s/\\\./_/g`;\
+         echo "* Tagging $(VERSION)"; \
+          svn cp -m "Tag $(VERSION)" \
+              $$ROOT \
+              svn+ssh://johan@svn.gnome.org/svn/pygobject/tags/PYGOBJECT_$$SVNVERSION
+
 release-news:
        printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
-
-       @echo -e "\n\n\nFor blogging, you can copy&paste this HTML formatted news:"
-       @echo "-------------- 8< -------------"
-       @last=`head -n1 $(top_srcdir)/NEWS | cut -f1 -d' '`; \
-        echo "<ul>"; \
-       for commit in `git rev-list $$last..`; do \
-          data=`git log --format="format:%s%n%an%n%b" $$commit^..$$commit`; \
-          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "  <li>$$subj ($$author)"; if ($$bug) { print " (<a href=\"https://bugzilla.gnome.org/show_bug.cgi?id=$$bug\">#$$bug</a>)"; }; print "</li>\n"'; \
-          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "        - $$subj ($$author)"; if ($$bug) { print " (#$$bug)"; }; print "\n"' >> NEWS.tmp; \
-        done
-       @echo "</ul>"
-       @echo "-------------- 8< -------------"
-
-       @echo >> NEWS.tmp
-       @cat $(top_srcdir)/NEWS >> NEWS.tmp
-       @mv NEWS.tmp $(top_srcdir)/NEWS
+       last=`head -n1 NEWS | cut -f1 -d' '`; \
+       git log --format='format:        - %s (%aN)%n%b' 3.1.92.. | \
+         sed -n '/^        -/ p; /bugzilla.gnome.org/ { s/^.*id=\([0-9]\+\).*$$/          (#\1)/; p}' >> NEWS.tmp
+       echo >> NEWS.tmp
+       cat NEWS >> NEWS.tmp
+       mv NEWS.tmp NEWS
 
 .PHONY: ChangeLog release-news
 
 ChangeLog:
        @echo Creating $@
        @if test -d "$(srcdir)/.git"; then \
-         (GIT_DIR=$(top_srcdir)/.git $(top_srcdir)/missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
+         (GIT_DIR=$(top_srcdir)/.git ./missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
          && mv -f $@.tmp $@ \
          || ($(RM) $@.tmp; \
              echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
@@ -134,20 +132,6 @@ dist-hook: $(BUILT_EXTRA_DIST)
          if test -f $$f; then d=.; else d=$(srcdir); fi; \
          rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done
 
-# pycheck_subdirs = 
-
-check.quality:
-       @echo "  CHECK  Pyflakes" $(pycheck_dirs)
-       @if type pyflakes >/dev/null 2>&1; then \
-               (cd $(abs_top_srcdir) && pyflakes $(pycheck_dirs) ); \
-       else echo "skipped, pyflakes not installed"; \
-       fi
-       @echo "  CHECK  PEP8";
-       @if type pep8 >/dev/null 2>&1; then \
-               (cd $(abs_top_srcdir) && pep8 --ignore=E501,E123,E124,E402,E731 --repeat --show-source $(pycheck_dirs) ); \
-       else echo "skipped, pep8 not installed"; \
-       fi
-
 check.gdb:
        cd tests && $(MAKE) check.gdb
 
@@ -157,10 +141,5 @@ check.nemiver:
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
 
-check.valgrindlog:
-       cd tests && $(MAKE) check.valgrindlog
-
-check.valgrindxml:
-       cd tests && $(MAKE) check.valgrindxml
 
-@CODE_COVERAGE_RULES@
+-include $(top_srcdir)/git.mk
index 8475090..17bdb2b 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -90,29 +36,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/PKG-INFO.in \
+       $(srcdir)/config.h.in \
+       $(srcdir)/pygobject-3.0-uninstalled.pc.in \
+       $(srcdir)/pygobject-3.0.pc.in $(top_srcdir)/configure AUTHORS \
+       COPYING ChangeLog INSTALL NEWS compile config.guess config.sub \
+       depcomp install-sh ltmain.sh missing py-compile
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
-       $(am__configure_deps) $(nobase_pyexec_PYTHON) \
-       $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
@@ -147,77 +85,32 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pyexecdir)" \
-       "$(DESTDIR)$(pkgconfigdir)"
+am__installdirs = "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"
 LTLIBRARIES = $(pyexec_LTLIBRARIES)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
+am__v_GEN_0 = @echo "  GEN   " $@;
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
-am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
-am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
-py_compile = $(top_srcdir)/py-compile
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
 DATA = $(pkgconfig_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
-       $(LISP)config.h.in
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
-CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/PKG-INFO.in \
-       $(srcdir)/config.h.in \
-       $(srcdir)/pygobject-3.0-uninstalled.pc.in \
-       $(srcdir)/pygobject-3.0.pc.in AUTHORS COPYING ChangeLog \
-       INSTALL NEWS README compile config.guess config.sub install-sh \
-       ltmain.sh missing py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -227,7 +120,6 @@ am__remove_distdir = \
       && rm -rf "$(distdir)" \
       || { sleep 5 && rm -rf "$(distdir)"; }; \
   else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -255,12 +147,12 @@ am__relativize = \
   reldir="$$dir2"
 GZIP_ENV = --best
 DIST_ARCHIVES = $(distdir).tar.xz
-DIST_TARGETS = dist-xz
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -269,20 +161,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -296,8 +181,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -315,15 +198,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -333,7 +209,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -341,7 +217,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -355,30 +230,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -427,7 +300,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -436,28 +308,20 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-
-# Limit PyFlakes and PEP8 to these directories.
-pycheck_dirs = examples gi tests pygtkcompat
-
-# Part of the gi subdirectory is handled with non-recursive make to avoid
-# py-compile getting confused between gi/types.py and Python's standard
-# types module.
-SUBDIRS = . $(pycheck_dirs)
+AUTOMAKE_OPTIONS = 1.7
+SUBDIRS = examples gi tests
 PLATFORM_VERSION = 3.0
 CLEANFILES = \
        `find "$(builddir)" -type f -name "*.pyc" -print`
 
 EXTRA_DIST = \
-       autogen.sh \
-       pygobject.doap \
+       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
        PKG-INFO \
        PKG-INFO.in \
-       pygi-convert.sh \
-       m4/python.m4 \
-       m4/introspection.m4 \
-       setup.py
+       m4/as-ac-expand.m4 \
+       m4/jhflags.m4 \
+       m4/python.m4
 
 MAINTAINERCLEANFILES = \
        $(srcdir)/INSTALL \
@@ -489,33 +353,21 @@ MAINTAINERCLEANFILES = \
 BUILT_EXTRA_DIST = \
        ChangeLog
 
-nobase_pyexec_PYTHON = \
-       gi/__init__.py \
-       gi/types.py \
-       gi/module.py \
-       gi/importer.py \
-       gi/pygtkcompat.py \
-       gi/docstring.py \
-       gi/_constants.py \
-       gi/_propertyhelper.py \
-       gi/_signalhelper.py \
-       gi/_option.py \
-       gi/_error.py
-
 
 # pkg-config files
-@WITH_COMMON_TRUE@pkgconfigdir = $(libdir)/pkgconfig
-@WITH_COMMON_TRUE@pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
 
 # python
 pyexec_LTLIBRARIES = 
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 am--refresh: Makefile
        @:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -528,6 +380,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -541,20 +394,20 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @test -f $@ || rm -f stamp-h1
-       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
        cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) 
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
        ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h1
        touch $@
@@ -567,9 +420,9 @@ pygobject-3.0-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/pygobject-
        cd $(top_builddir) && $(SHELL) ./config.status $@
 PKG-INFO: $(top_builddir)/config.status $(srcdir)/PKG-INFO.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
-
 install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
        @$(NORMAL_INSTALL)
+       test -z "$(pyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pyexecdir)"
        @list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -577,8 +430,6 @@ install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pyexecdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \
        }
@@ -594,14 +445,12 @@ uninstall-pyexecLTLIBRARIES:
 
 clean-pyexecLTLIBRARIES:
        -test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES)
-       @list='$(pyexec_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
+       @list='$(pyexec_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -611,60 +460,10 @@ clean-libtool:
 
 distclean-libtool:
        -rm -f libtool config.lt
-install-nobase_pyexecPYTHON: $(nobase_pyexec_PYTHON)
-       @$(NORMAL_INSTALL)
-       @list='$(nobase_pyexec_PYTHON)'; test -n "$(pyexecdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pyexecdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" || exit 1; \
-       fi; \
-       $(am__nobase_list) | { while read dir files; do \
-         xfiles=; for p in $$files; do \
-           if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-           if test -f "$$b$$p"; then xfiles="$$xfiles $$b$$p"; dlist="$$dlist $$p"; \
-           else :; fi; done; \
-         test -z "$$xfiles" || { \
-           test "x$$dir" = x. || { \
-             echo "$(MKDIR_P) '$(DESTDIR)$(pyexecdir)/$$dir'"; \
-             $(MKDIR_P) "$(DESTDIR)$(pyexecdir)/$$dir"; }; \
-           echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pyexecdir)/$$dir'"; \
-           $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pyexecdir)/$$dir" || exit $$?; }; \
-       done; \
-       if test -n "$$dlist"; then \
-         $(am__py_compile) --destdir "$(DESTDIR)" \
-                           --basedir "$(pyexecdir)" $$dlist; \
-       else :; fi; }
-
-uninstall-nobase_pyexecPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(nobase_pyexec_PYTHON)'; test -n "$(pyexecdir)" || list=; \
-       $(am__nobase_strip_setup); py_files=`$(am__nobase_strip)`; \
-       test -n "$$py_files" || exit 0; \
-       dir='$(DESTDIR)$(pyexecdir)'; \
-       pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
-       pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
-       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
-       echo "$$py_files_pep3147";\
-       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
-       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
-       st=0; \
-       for files in \
-         "$$py_files" \
-         "$$pyc_files" \
-         "$$pyo_files" \
-         "$$pyc_files_pep3147" \
-         "$$pyo_files_pep3147" \
-       ; do \
-         $(am__uninstall_files_from_dir) || st=$$?; \
-       done; \
-       exit $$st
 install-pkgconfigDATA: $(pkgconfig_DATA)
        @$(NORMAL_INSTALL)
+       test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
        @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          echo "$$d$$p"; \
@@ -681,25 +480,22 @@ uninstall-pkgconfigDATA:
        dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -714,12 +510,57 @@ $(am__recursive_targets):
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
 
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -735,7 +576,12 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       $(am__define_uniq_tagged_files); \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -747,11 +593,15 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
              $$unique; \
          fi; \
        fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -760,31 +610,9 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
-       test ! -s cscope.files \
-         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
-       -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
        $(am__remove_distdir)
@@ -820,10 +648,13 @@ distdir: $(DISTFILES)
        done
        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
            $(am__relativize); \
            new_distdir=$$reldir; \
@@ -855,41 +686,39 @@ distdir: $(DISTFILES)
        || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
 dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
 dist-tarZ: distdir
-       @echo WARNING: "Support for distribution archives compressed with" \
-                      "legacy program 'compress' is deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
 dist-shar: distdir
-       @echo WARNING: "Support for shar distribution archives is" \
-                      "deprecated." >&2
-       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
 
-dist dist-all:
-       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
-       $(am__post_remove_distdir)
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -900,6 +729,8 @@ distcheck: dist
          GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
        *.tar.lz*) \
          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
@@ -911,19 +742,18 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir)
-       chmod u+w $(distdir)
-       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build/sub \
-         && ../../configure \
+         && $(am__cd) $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
-           --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -946,7 +776,7 @@ distcheck: dist
          && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
          && cd "$$am__cwd" \
          || exit 1
-       $(am__post_remove_distdir)
+       $(am__remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
@@ -977,12 +807,11 @@ distcleancheck: distclean
               $(distcleancheck_listfiles) ; \
               exit 1; } >&2
 check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-recursive
-all-am: Makefile $(LTLIBRARIES) $(DATA) config.h all-local
+all-am: Makefile $(LTLIBRARIES) $(DATA) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+       for dir in "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -1040,13 +869,13 @@ info: info-recursive
 
 info-am:
 
-install-data-am: install-pkgconfigDATA
+install-data-am: install-data-local install-pkgconfigDATA
 
 install-dvi: install-dvi-recursive
 
 install-dvi-am:
 
-install-exec-am: install-nobase_pyexecPYTHON install-pyexecLTLIBRARIES
+install-exec-am: install-exec-local install-pyexecLTLIBRARIES
 
 install-html: install-html-recursive
 
@@ -1086,73 +915,87 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-nobase_pyexecPYTHON uninstall-pkgconfigDATA \
+uninstall-am: uninstall-local uninstall-pkgconfigDATA \
        uninstall-pyexecLTLIBRARIES
 
-.MAKE: $(am__recursive_targets) all check-am install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
-       am--refresh check check-am check-local clean clean-cscope \
-       clean-generic clean-libtool clean-pyexecLTLIBRARIES cscope \
-       cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
-       dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
-       dist-zip distcheck distclean distclean-generic distclean-hdr \
-       distclean-libtool distclean-local distclean-tags \
-       distcleancheck distdir distuninstallcheck dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-nobase_pyexecPYTHON \
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+       ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-generic \
+       clean-libtool clean-pyexecLTLIBRARIES ctags ctags-recursive \
+       dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
+       dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+       distclean distclean-generic distclean-hdr distclean-libtool \
+       distclean-local distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-data-local install-dvi install-dvi-am install-exec \
+       install-exec-am install-exec-local install-html \
+       install-html-am install-info install-info-am install-man \
        install-pdf install-pdf-am install-pkgconfigDATA install-ps \
        install-ps-am install-pyexecLTLIBRARIES install-strip \
        installcheck installcheck-am installdirs installdirs-am \
        maintainer-clean maintainer-clean-generic mostlyclean \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags tags-am uninstall uninstall-am \
-       uninstall-nobase_pyexecPYTHON uninstall-pkgconfigDATA \
-       uninstall-pyexecLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
-       for f in $(nobase_pyexec_PYTHON); do \
-               [ -e $(builddir)/$$f ] || \
-                       $(LN_S) $(abs_srcdir)/$$f $(builddir)/$$f; \
-       done
-
-all-local: build_pylinks
-
-check-local: build_pylinks
+       tags tags-recursive uninstall uninstall-am uninstall-local \
+       uninstall-pkgconfigDATA uninstall-pyexecLTLIBRARIES
+
+
+# install pth file.
+install-data-local:
+       $(mkinstalldirs) $(DESTDIR)$(pythondir)
+install-exec-local:
+       $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+uninstall-local:
+
+egg: EGG_TMPDIR:=$(TMPDIR)/$(PACKAGE)-$(PACKAGE_VERSION)
+egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
+       rm -fr $(EGG_TMPDIR)
+       echo $(EGG_NAME)
+       $(MKDIR_P) $(EGG_TMPDIR)
+       $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
+       $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
+       rm -fr $(EGG_TMPDIR)/gobject.la
+       $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
+       echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
+       ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
+       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
+       mv $(EGG_TMPDIR)/$(EGG_NAME) .
+       rm -fr $(EGG_TMPDIR)
+
+doc-dist:
+       mkdir pygobject
+       cp -r docs/html/*.html pygobject
+       cp -r docs/html/*.sgml pygobject
+       cp -r docs/html/*.devhelp pygobject
+       cp -r docs/style.css pygobject
+       tar cfz $(PACKAGE)-docs.tar.gz pygobject
+       rm -fr pygobject
+
+release-tag:
+       @ROOT=`svn info --xml|egrep ^"<url>"|cut -d\> -f2|cut -d\< -f1`; \
+       SVNVERSION=`echo $(VERSION)|sed s/\\\./_/g`;\
+         echo "* Tagging $(VERSION)"; \
+          svn cp -m "Tag $(VERSION)" \
+              $$ROOT \
+              svn+ssh://johan@svn.gnome.org/svn/pygobject/tags/PYGOBJECT_$$SVNVERSION
 
 release-news:
        printf "%-8s%s\n" "$(VERSION)" "`LC_TIME=C date '+%d-%b-%Y'`" > NEWS.tmp
-
-       @echo -e "\n\n\nFor blogging, you can copy&paste this HTML formatted news:"
-       @echo "-------------- 8< -------------"
-       @last=`head -n1 $(top_srcdir)/NEWS | cut -f1 -d' '`; \
-        echo "<ul>"; \
-       for commit in `git rev-list $$last..`; do \
-          data=`git log --format="format:%s%n%an%n%b" $$commit^..$$commit`; \
-          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "  <li>$$subj ($$author)"; if ($$bug) { print " (<a href=\"https://bugzilla.gnome.org/show_bug.cgi?id=$$bug\">#$$bug</a>)"; }; print "</li>\n"'; \
-          echo "$$data" | perl -e '$$subj = <>; chomp $$subj; $$author = <>; chomp $$author; while (<>) { if (/bugzilla.gnome.org.*id=([0-9]+)/) { $$bug = $$1 }};  print "        - $$subj ($$author)"; if ($$bug) { print " (#$$bug)"; }; print "\n"' >> NEWS.tmp; \
-        done
-       @echo "</ul>"
-       @echo "-------------- 8< -------------"
-
-       @echo >> NEWS.tmp
-       @cat $(top_srcdir)/NEWS >> NEWS.tmp
-       @mv NEWS.tmp $(top_srcdir)/NEWS
+       last=`head -n1 NEWS | cut -f1 -d' '`; \
+       git log --format='format:        - %s (%aN)%n%b' 3.1.92.. | \
+         sed -n '/^        -/ p; /bugzilla.gnome.org/ { s/^.*id=\([0-9]\+\).*$$/          (#\1)/; p}' >> NEWS.tmp
+       echo >> NEWS.tmp
+       cat NEWS >> NEWS.tmp
+       mv NEWS.tmp NEWS
 
 .PHONY: ChangeLog release-news
 
 ChangeLog:
        @echo Creating $@
        @if test -d "$(srcdir)/.git"; then \
-         (GIT_DIR=$(top_srcdir)/.git $(top_srcdir)/missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
+         (GIT_DIR=$(top_srcdir)/.git ./missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
          && mv -f $@.tmp $@ \
          || ($(RM) $@.tmp; \
              echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
@@ -1174,20 +1017,6 @@ dist-hook: $(BUILT_EXTRA_DIST)
          if test -f $$f; then d=.; else d=$(srcdir); fi; \
          rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done
 
-# pycheck_subdirs = 
-
-check.quality:
-       @echo "  CHECK  Pyflakes" $(pycheck_dirs)
-       @if type pyflakes >/dev/null 2>&1; then \
-               (cd $(abs_top_srcdir) && pyflakes $(pycheck_dirs) ); \
-       else echo "skipped, pyflakes not installed"; \
-       fi
-       @echo "  CHECK  PEP8";
-       @if type pep8 >/dev/null 2>&1; then \
-               (cd $(abs_top_srcdir) && pep8 --ignore=E501,E123,E124,E402,E731 --repeat --show-source $(pycheck_dirs) ); \
-       else echo "skipped, pep8 not installed"; \
-       fi
-
 check.gdb:
        cd tests && $(MAKE) check.gdb
 
@@ -1197,13 +1026,7 @@ check.nemiver:
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
 
-check.valgrindlog:
-       cd tests && $(MAKE) check.valgrindlog
-
-check.valgrindxml:
-       cd tests && $(MAKE) check.valgrindxml
-
-@CODE_COVERAGE_RULES@
+-include $(top_srcdir)/git.mk
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index 4d01190..34e70b0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,909 +1,3 @@
-3.24.0  20-Mar-2017
-        - configure.ac: pre-release version bump to 3.24.0 (Christoph Reiter)
-
-3.23.92 13-Mar-2017
-        - overrides: Update for Gdk-4.0 and Gtk+-4.0 (Fabian Orccon) (#777680)
-        - Disable -Werror=missing-prototypes (Christoph Reiter) (#777534)
-        - Fix new PEP8 errors (Christoph Reiter) (#776009)
-        - Move pep8/pyflakes tests from 'make check' to 'make check.quality' (Christoph Reiter) (#764087)
-        - overrides: Update for Gtk-4.0 (Christoph Reiter) (#773315)
-        - Handle exception unreffing Variant at exit (Dan Nicholson) (#776092)
-        - Handle multiple deinit of callable cache (Dan Nicholson) (#776092)
-        - configure.ac: post-release version bump to 3.23.0 (Christoph Reiter)
-
-3.22.0  19-Sep-2016
-        - configure.ac: pre-release version bump to 3.22.0 (Christoph Reiter)
-
-3.21.92 11-Sep-2016
-        - Handle nullable filename parameters (Christoph Reiter) (#770821)
-        - Fix list/hashtable enum <-> hash conversion on 64-bit big endian (Aurelien Jarno) (#770608)
-        - Allow passing sockets to io_add_watch on win32 (Lukas K) (#766396)
-        - tests: use dbus-run-session instead of dbus-launch to run tests (Michael Biebl) (#770798)
-        - configure.ac: post-release version bump to 3.21.92 (Christoph Reiter)
-
-3.21.91 25-Aug-2016
-        - Allow installing with pip (Mathieu Bridon) (#767988)
-        - Skip a test with older glib (Christoph Reiter) (#740301)
-        - Fix a test with Python 3.1/3.2 (Arfrever Frehtes Taifersar Arahesis, Christoph Reiter) (#740324)
-        - tests: Use places kwarg for assertAlmostEqual (Arfrever Frehtes Taifersar Arahesis, Christoph Reiter) (#740337)
-        - Print exception if marshalling a signal argument fails (Christoph Reiter) (#748198)
-        - overrides: allow treemodel sequence shorthands (Marinus Schraal) (#766580)
-        - Remove pygobject-external.h (Christoph Reiter) (#767084)
-        - Remove pygobject-private.h and rename pygobject.c to pygobject-object.c (Christoph Reiter) (#767084)
-        - Merge pyglib-private.h into pyglib.h (Christoph Reiter) (#767084)
-        - Remove pygi.h and pygi-private.h (Christoph Reiter) (#767084)
-        - configure.ac: post-release version bump to 3.21.1 (Simon Feltman)
-
-3.21.0  24-Apr-2016
-        - gi: Add require_versions() function (Dustin Falgout) (#761141)
-        - test_gerror_novalue: Don't assign the error to a variable
-          (Iain Lane) (#764165)
-        - build: Do not enable code coverage based on lcov
-          (Emmanuele Bassi) (#764075)
-
-3.20.0  21-Mar-2016
-
-3.19.92 15-Mar-2016
-
-3.19.91 01-Mar-2016
-        - Fix marshaling of GError stored in GValue
-          (Simon Feltman) (Thibault Saunier) (#761592)
-        - Fix marshaling or GError from Python to C from function calls
-          (Simon Feltman) (#685197)
-        - Error handling/reporting fixes (Christoph Reiter) (#751956)
-        - Fix crash due to GVariant implemented as PyGBoxed not PyGIStruct
-          (Christoph Reiter) (#751956)
-        - Fix crash with GValueArray stored in GValue
-          (Mikhail Fludkov) (#754359)
-
-3.19.90 20-Feb-2016
-        - tests: Set the active style context state before retrieving values
-          (Simon Feltman)
-        - tests: Fix crash with empty drag source icon names
-          (Simon Feltman) (#762392)
-        - Try to import GdkX11 in Gdk overrides (Christoph Reiter) (#673396)
-        - Fix import warnings pointing to the wrong code with CPython 3.3/3.5
-          (Christoph Reiter) (#757184)
-
-3.19.2  31-Oct-2015
-        - tests: Fix failure due to new GTK+ warning regarding size_allocate()
-          (Simon Feltman)
-        - Fix build warnings regarding _POSIX_C_SOURCE redefinition
-          (Simon Feltman)
-        - Drop -std=c90 for now (Matthias Clasen)
-
-3.19.1  30-Oct-2015
-        - Use a named tuple for returning multiple values (Christoph Reiter) (#727374)
-        - enum/flags: use gir info for type names and __repr__ instead of the gtype name (Christoph Reiter) (#657915)
-        - Improve and unify __repr__ format for PyGObject, PyGBoxed and PyGIStruct (Christoph Reiter) (#657915)
-        - Don't leak internal RepositoryError on import. (Christoph Reiter) (#756033)
-        - Import dependencies when importing typelibs from gi.repository (Christoph Reiter) (#656314)
-        - Fix Gdk.rectangle_intersect/rectangle_union missing with GTK+ 3.18 (Christoph Reiter) (#756364)
-        - Don't import inspect at module level (Christoph Reiter)
-        - invoke state: add a free memory cache for PyGIInvokeArgState (Christoph Reiter) (#750658)
-        - invoke/closure: reduce g_slice_alloc usage (Christoph Reiter) (#750658)
-        - pep8: ignore new errors reported by pep8 1.6 (Christoph Reiter)
-        - Bump g-i dependency to latest stable (Garrett Regier)
-        - Avoid calling g_slist_length() during invoke (Garrett Regier)
-        - Simplify closure_convert_arguments() (Garrett Regier)
-        - Remove a level of indentation in convert_ffi_arguments() (Garrett Regier)
-        - Prevent passing the user data multiple times to callbacks (Garrett Regier) (#750347)
-        - Support throwing exceptions in closures (Garrett Regier) (#710671)
-        - Don't emit require_version warning if namespace was loaded previously using g_irepository_require (Christoph Reiter) (#754491)
-        - configure.ac: post release version bump to 3.19.1 (Garrett Regier)
-
-3.18.0  22-Sep-2015
-
-3.17.90 19-Aug-2015
-        - Allow passing unicode lists to GStrv properties on Python 2
-          (Christoph Reiter) (#744745)
-        - Avoid a silent long to int truncation (Rui Matos) (#749698)
-        - Handle gtype marshalling (Mathieu Bridon) (#749696)
-        - pygi-foreign-cairo.c: fix include for py3cairo.h
-          (Daniel Hahler) (#746742)
-        - tests: Silence various error messages and warnings
-          (Christoph Reiter) (#751156)
-        - Fix test regression when xdg-user-dirs is not installed
-          (Christoph Reiter) (#751299)
-        - Explicitly check if an override exists instead of ImportError
-          (Garrett Regier) (#749532)
-
-3.17.1  15-Jun-2015
-        - Add gi.PyGIWarning used when import version is not specified
-          (Christoph Reiter) (#727379)
-        - Remove Gdk.Rectangle alias with newer gobject-introspection and GTK+
-          (Christoph Reiter) (#749625)
-        - overrides: Provide _overrides_module attribute
-          (Christoph Reiter) (#736678)
-        - overrides: Conditionalize touch override support in Gdk
-          (Simon Feltman) (#747717)
-        - Field setters: Remove unneeded type/range checks and unused code
-          (Christoph Reiter) (#746985)
-        - pygi-argument: Remove unused imports/includes
-          (Christoph Reiter) (#746985)
-        - Improve test coverage for field setters/getters
-          (Christoph Reiter) (#746985)
-
-3.16.0  24-Mar-2015
-
-3.15.91 05-Mar-2015
-        - tests: Don't use deprecated override attributes
-          (Christoph Reiter) (#743514)
-        - Add GLib.MINFLOAT etc. and mark GObject.G_MINFLOAT etc. deprecated
-          (Christoph Reiter) (#743514)
-        - Emit PyGIDeprecationWarning when accessing deprecated override attributes
-          (Christoph Reiter) (#743514)
-        - Add namespace and container name to all warnings/error messages
-          (Christoph Reiter) (#743468)
-        - tests: Add test for GIRepository.UnionInfo.get_size()
-          (Garrett Regier) (#745362)
-        - Avoid duping filenames when marshalling from Python to C
-          (Garrett Regier) (#744719)
-
-3.15.0  20-Feb-2015
-        - Avoid copying bytearrays from Python to C when transfer nothing (Garrett Regier) (#743278)
-        - Allows passing arguments to opaque Boxed types (Garrett Regier) (#743214)
-        - Emit ImportWarning when gi.require_version() is not used (Christoph Reiter) (#727379)
-        - Refactor overrides import/modules (Christoph Reiter) (#736678)
-        - Replace statically bound GLib.Variant.new_tuple() with GI (Simon Feltman) (#735199)
-        - overrides: Add Gdk.EventTouch union discrimination (Simon Feltman) (#736380)
-        - PyGObjectFlags: Remove a trailing comma on the enum. (Murray Cumming)
-        - Remove redefinitions of function and vfunc cache typedefs (Simon Feltman) (#737874)
-
-3.14.0  22-Sep-2014
-        - configure.ac: pre release version bump to 3.14.0 (Simon Feltman)
-
-3.13.92 15-Sep-2014
-        - tests: Add test for Gio.Application.add_main_option() (Simon Feltman)
-        - tests: Split up various test cases (Simon Feltman) (#735193)
-        - Fix invalid read error in argument cleanup code (Simon Feltman)
-        - Fix memory management problems with struct arguments to signals
-          (Simon Feltman) (#736175)
-
-3.13.91 01-Sep-2014
-        - docs: Fix return types in auto-generated doc strings (Simon Feltman)
-        - Special case signal output arguments which are structs as
-          pass-by-reference (Simon Feltman) (#735486)
-        - Ignore closure callbacks when Python is not initialized
-          (Simon Feltman) (#722562)
-        - Change boxed init with args to warn instead of raise
-          (Christoph Reiter) (#727810)
-        - Fix crash in GList/GSList marshaling error handling path.
-          (Christoph Reiter) (#735201)
-        - Fix reference counting problems with GLib.Variant.new_tuple()
-          (Simon Feltman) (#735166)
-        - Skip marshalling NULL output arguments in Python closures
-          (Simon Feltman) (#735090)
-
-3.13.90 18-Aug-2014
-        - Support array lengths on struct fields (Simon Feltman) (#688792)
-        - Fast path Python property get access (Simon Feltman) (#723872)
-        - Unify accessing properties through props and get_property()
-          (Simon Feltman) (#726999)
-        - Refactor boxed wrapper memory management strategy
-          (Simon Feltman) (#726999)
-        - Replace GObject.signal_query with introspected version
-          (Simon Feltman) (#688792)
-        - Fix memory leak with unboxed caller allocated structs (Simon Feltman)
-        - tests: Add failing tests for GObject sub-class doc-strings
-          (Piotr Iwaniuk) (#731452)
-        - Don't mask GObject sub-class doc strings in meta-class
-          (Tobias Mueller) (#731452)
-
-3.13.4  14-Aug-2014
-        - Marshaling cache refactor and cache usage in vfuncs
-          (Garrett Regier) (#727004)
-        - Fix array argument out and inout marshaling from vfuncs
-          (Garrett Regier) (#702508)
-        - Cleanup input args when marshaling in closures
-          (Garrett Regier) (#727004)
-        - Add deprecation warning for connect_object() with non-GObject argument
-          (Simon Feltman) (#688064)
-        - Add Python implementation of Object.connect_data()
-          (Simon Feltman) (#701843)
-        - Add GClosure marshaling cleanup (Simon Feltman) (#695128)
-        - Fix GCallback Python wrapper leak (Simon Feltman) (#695130)
-        - tests: Add failing test for marshaling an array of GValues through
-          signals (Martin Pitt) (#669496)
-        - Add protection against attempts at importing static bindings
-          (Simon Feltman) (#709183)
-        - Update and deprecate gi.overrides.keysyms (Simon Feltman) (#721295)
-        - Generate .dll libraries on windows (Ignacio Casal Quinteiro) (#734288)
-        - Windows build fixes (Alexey Pavlov)
-          (#734284, #734289, #734286, #734287)
-
-3.13.3  23-Jun-2014
-        - demos: Cleanup CSS accordion demo to use a loop for adding buttons
-          (Simon Feltman)
-        - refactor: Move builder connection utilities outside of Builder class
-          (Simon Feltman) (#701843)
-        - tests: Move TestSignals from test_everything into test_signal
-          (Simon Feltman) (#701843)
-
-3.13.2  26-May-2014
-        - Python 3.4 make check fixes (Simon Feltman) (#730411)
-        - overrides: Add Gtk.Container.child_get/set overrides (Simon Feltman)
-          (#685076)
-        - overrides: Make value argument to Widget.style_get_property optional
-          (Simon Feltman) (#685076)
-        - overrides: Make value argument to Container.child_get_property optional
-          (Simon Feltman) (#685076)
-        - Add GTypeClass methods as Python GObject class methods
-          (Johan Dahlin) (#685218)
-        - Add marshalling coercion for Python classes and instances to GTypeClass
-          (Simon Feltman) (#685218)
-        - Replace direct parent class call by super() (Andrew Grigorev) (#729970)
-        - Add cairo marshaling support for non-introspected signals
-          (Simon Feltman) (#694604)
-        - [New API] Add gi.require_foreign (Simon Feltman) (#707735)
-        - Initialize the foreign API at PyGI load time (Simon Feltman) (#694604)
-        - Move pygi foreign API into pygi-foreign-api.h (Simon Feltman) (#694604)
-        - Unify GLib.GError and GLib.Error (Simon Feltman) (#712519)
-        - PEP8 fixes (Simon Feltman)
-
-3.13.1  28-Apr-2014
-        - Raise TypeError if arguments are passed to Boxed.__init__
-          (Christoph Reiter) (#727810)
-        - Gdk.Event: Override __setattr__ to set fields based on the event type
-          (Christoph Reiter) (#727810)
-        - Gdk.Event: Include GdkEventType in __repr__ (Christoph Reiter) (#727810)
-        - Fix crash with type checking for GObject arguments (Simon Feltman) (#727604)
-        - Do not leak info of destroy notify (Paolo Borelli)
-        - Ignore GValueArray deprecations (Simon Feltman)
-        - Raise ImportError when importing modules not found in repository
-          (Simon Feltman) (#726877)
-        - tests: Rename test_overrides to test_import_machinery
-          (Simon Feltman) (#726877)
-
-3.12.0  24-Mar-2014
-
-3.11.92 17-Mar-2014
-        - configure.ac: Remove option to build without libffi (Simon Feltman)
-        - docs: Standardize Python doc strings (Simon Feltman)
-        - Fix reference leaks with (transfer full) foreign struct returns
-          (Owen W. Taylor) (#726206)
-
-3.11.91 03-Mar-2014
-        - Use ffi_call directly instead of g_callable_info_invoke
-          (Simon Feltman) (#723642)
-        - configure.ac: Use -std=c90 and error on declaration-after-statement
-          (Simon Feltman)
-        - Fix Build on Visual Studio (Chun-wei Fan) (#725122)
-
-3.11.90 17-Feb-2014
-        - Use GObject type checking for instance arguments (Simon Feltman) (#724009)
-        - configure.ac: post release version bump to 3.11.90 (Simon Feltman)
-
-3.11.5  03-Feb-2014
-        - cache refactoring: Move all cache marshalers into files based on type
-          (Simon Feltman) (#709700)
-        - tests: Add test for an owned boxed struct passed in a callback
-          (Mike Gorse) (#722899)
-        - build: Add --without-common configure option for package maintainers
-          (Patrick Welche) (#721646)
-        - demo: Add TreeModel interface implementation demonstration
-          (Simon Feltman)
-        - build: Set PLATFORM_VERSION again to 3.0 (Colin Walters)
-        - tests: Run PyFlakes and PEP8 only on SUBDIRS (Simon Feltman)
-        - Merge static PyGLib and PyGObject modules into PyGI
-          (Simon Feltman) (#712197)
-        - Add test for callback user data arguments with following arguments
-          (Martin Pitt) (#722104)
-
-3.11.4  13-Jan-2014
-        - overrides: Fix __repr__ for various Gdk structs (Simon Feltman)
-        - Add enum and flags member methods (Simon Feltman) (#693099)
-        - python.m4: g/c JD_PYTHON_CHECK_VERSION (Patrick Welche) (#721662)
-        - Support union creation with PyGIStruct (Simon Feltman)
-        - docs: List constructors in object and struct doc strings
-          (Simon Feltman) (#708060)
-        - docs: Fix array length argument skipping with preceding out arguments
-        - docs: Add return values and skip implicit out arguments in functions
-          (Simon Feltman) (#697356)
-        - docs: Skip implicit array length args when building function doc
-          strings (Simon Feltman) (#697356)
-        - gtk-demo: Add CSS demos (Gian Mario Tagliaretti) (#719722)
-        - build: Avoid clash between gi/types.py and stdlib
-          (Colin Watson) (#721025)
-
-3.11.3  16-Dec-2013
-        - Replace usage of PyGIBoxed_Type with PyGIStruct_Type
-          (Simon Feltman) (#581525)
-
-3.11.2  17-Nov-2013
-        - gkt-demo: Change main info/source notebook into a GtkStack (Simon Feltman)
-        - Add deprecation warnings and cleanup class initializer overrides (Simon Feltman) (#705810)
-        - Fix dir method for static GParamSpec in Python 3 (Simon Feltman)
-        - Remove overzealous argument checking for callback userdata (Simon Feltman) (#711173)
-
-3.11.1  28-Oct-2013
-        - Fix toggleref safety problems by always enabling the GIL
-         (Simon Feltman) (#709223)
-       - Add consistent GLib.MainLoop SIGINT cleanup (Simon Feltman) (#710978)
-        - docs: Add a keyword value of None for allow-none annotations
-         (Simon Feltman) (#640812)
-       - Remove overrides for supporting pre-3.10 GObject signal functions
-         (Simon Feltman)
-       - Add threads_init back as a requirement for non-Python threaded repos
-         (Simon Feltman) (#710447)
-       - Add dir method to GObject props accessor (Simon Feltman) (#705754)
-        - Remove PyGObjectWeakRef now that g_binding_unbind exists
-         (Simon Feltman) (#699571)
-        - Fix lots of memory leaks leaks (Simon Feltman) (#693402, #709397)
-        - Add support for variable user data arguments (Simon Feltman) (#640812)
-        - Bump glib and g-i dependencies to latest stable. (Martin Pitt)
-       - Fix TypeError when setting drag target_list to None (Nuno Araujo)
-         (#709926)
-       - Use qdata for wrapper retrieval in toggle reference notifications
-         (Simon Feltman) (#709223)
-        - Expose all GI enum and flags types (Simon Feltman) (#709008)
-        - Add support for default arguments annotated with allow-none
-         (Simon Feltman) (#640812)
-       - Refactor argument cache handling (Simon Feltman) (#640812)
-        - Remove support for allowing PyObjects as void pointers
-         (Simon Feltman) (#688081)
-
-3.10.0  23-Sep-2013
-        - Fix test_gi.TestProjectVersion.test_version_str() (Martin Pitt)
-
-3.9.92  16-Sep-2013
-        - Fix union argument regression when marshaling from python
-         (Simon Feltman) (#703873)
-       - Fix GLib.Source sub-classing with initializer args (Simon Feltman)
-         (#707904)
-       - Copy __doc__ when wrapping function (Vratislav Podzimek)
-
-3.9.91  02-Sep-2013
-       - Fix GObject signal methods to work with new annotations
-         (Simon Feltman) (#707280)
-       - Fix build on C89 Compilers (Chun-wei Fan) (#707264)
-       - Change boxed type checking in marshaling to use __gtype__ attribute
-         (Simon Feltman) (#707140)
-       - Use G_IS_VALUE for checking return values in closure marshaling
-         (Simon Feltman) (#707170)
-       - Fix PEP-8 errors in propertyhelper.py (Yanko Kaneti) (#706319)
-
-3.9.90  19-Aug-2013
-       - Create GLib.Pid in the same way on python 2 and 3 (Benjamin Berg)
-         (#705451)
-       - Use PyLong_Type.tp_new for GLib.Pid (Benjamin Berg) (#705451)
-       - Add accumulator and accu_data arguments to GObject.Signal decorator
-         (Simon Feltman) (#705533)
-       - Pass return values through the GObject.Signal.emit wrapper
-         (Simon Feltman) (#705530)
-
-3.9.5   29-Jul-2013
-        - Ensure exceptions set in closure out argument marshaling are printed
-          (Simon Feltman) (#705064)
-        - Always raise OverflowError for marshaling integers from Python
-          (not ValueError or OverflowError) (Simon Feltman) (#705057)
-        - Cleanup invoke args and kwargs combiner code (Simon Feltman) (#640812)
-        - gtk-demo: Change demo to use Gtk.Application (Simon Feltman) (#698547)
-        - Add callable and descriptor protocols to PyGICallableInfo
-          (Simon Feltman) (#704037)
-        - Unify basic type argument marshaling for methods, closures, and
-          properties (Simon Feltman) (#693405)
-        - Override GValue.set/get_boxed with static C marshaler
-          (Simon Feltman) (#688081, #693405)
-        - Add deprecation warning for marshaling arbitrary objects as pointers
-          (Simon Feltman) (#688081)
-        - Replace usage of __import__ with importlib.import_module
-          (Simon Feltman) (#682320)
-        - Always unref the GiTypeInfo when generating an argument cache
-          (Mike Gorse) (#703973)
-        - Unref interface info when fetching enums or flags
-          (Mike Gorse) (#703960)
-        - Speed up MRO calculation (Daniel Drake) (#703829)
-        - Add GIL safety to pyobject_copy for copying boxed PyObjects
-          (Simon Feltman) (#688081)
-        - Add marshaling of GI_TYPE_TAG_VOID held in a GValue to int
-          (Simon Feltman) (#694233)
-        - GTK overrides: Make connect_signals handle tuple
-          (Cole Robinson) (#693994)
-        - Re-add support for passing GValue's by reference
-          (Simon Feltman) (#701058)
-        - Clear return value of closures to zero when an exception occurs
-          (Simon Feltman) (#702552)
-        - Don't use doctest syntax in docstrings for examples
-          (Martin Pitt) (#701009)
-        - Add support for properties of type GInterface
-          (Garrett Regier) (#703456)
-        - pygtkcompat: Fix for missing methods on Windows
-          (Martin Pitt) (#702787)
-        - gi/pygi-info.c: Avoid C99-style variable declaration
-          (Chun-wei Fan) (#702786)
-
-3.9.2   28-May-2013
-       - examples/option.py: Port to GI and Python 3 (Martin Pitt)
-        - Fix vfunc info search for classes with multiple inheritance
-         (Simon Feltman) (#700092)
-        - Fix closure argument conversion for enum and flag in args
-         (Simon Feltman)
-        - Fix marshaling Python to FFI return value for enum and flags
-         (Simon Feltman)
-       - Remove half implemented GC in PyGIBaseInfo, PyGIStruct, and PyGIBoxed
-         (Simon Feltman) (#677091)
-       - Replace usage of pyg_begin_allow_threads with Py_BEGIN_ALLOW_THREADS
-         (Simon Feltman) (#699440)
-       - Remove and deprecate API for setting of thread blocking functions
-         (Simon Feltman) (#699440)
-
-3.9.1   30-Apr-2013
-       - gtk-demo: Wrap description strings at 80 characters (Simon Feltman)
-         (#698547)
-       - gtk-demo: Use textwrap to reformat description for Gtk.TextView
-         (Simon Feltman) (#698547)
-       - gtk-demo: Use GtkSource.View for showing source code (Simon Feltman)
-         (#698547)
-       - Use correct class for GtkEditable's get_selection_bounds() function
-         (Mike Ruprecht) (#699096)
-       - Test results of g_base_info_get_name for NULL (Simon Feltman)
-         (#698829)
-       - Add ObjectInfo.get_class_struct() (Johan Dahlin) (#685218)
-       - Change interpretation of NULL pointer field from None to 0
-         (Simon Feltman) (#698366)
-       - Do not build tests until needed (Sobhan Mohammadpour) (#698444)
-       - pygi-convert: Support toolbar styles (Kai Willadsen) (#698477)
-       - pygi-convert: Support new-style constructors for Gio.File
-         (Kai Willadsen) (#698477)
-       - pygi-convert: Add some support for recent manager constructs
-         (Kai Willadsen) (#698477)
-       - pygi-convert: Don't transform arbitrary keysym imports
-         (Kai Willadsen) (#698477)
-       - Remove Python keyword escapement in Repository.find_by_name
-         (Simon Feltman) (#697363)
-       - Optimize signal lookup in gi repository (Daniel Drake) (#696143)
-       - Optimize connection of Python-implemented signals (Daniel Drake)
-         (#696143)
-       - Consolidate signal connection code (Daniel Drake) (#696143)
-       - Fix setting of struct property values (Daniel Drake)
-       - Optimize property get/set when using GObject.props (Daniel Drake)
-         (#696143)
-       - configure.ac: Fix PYTHON_SO with Python3.3 (Christoph Reiter)
-         (#696646)
-       - Simplify registration of custom types (Daniel Drake) (#696143)
-       - pygi-convert.sh: Add GStreamer rules (Christoph Reiter) (#697951)
-       - pygi-convert: Add rule for TreeModelFlags (Jussi Kukkonen)
-       - Unify GI marshalling code (Simon Feltman) (#693405)
-       - Use distutils.sysconfig to retrieve the python include path.
-         (Christoph Reiter) (#696648)
-       - Support PEP 3149 (ABI version tagged .so files) (Christoph Reiter)
-         (#696646)
-       - Fix stack corruption due to incorrect format for argument parser
-         (Simon Feltman) (#696892)
-       - Deprecate GLib and GObject threads_init (Simon Feltman) (#686914)
-       - Drop support for Python 2.6 (Martin Pitt)
-       - Remove static PollFD bindings (Martin Pitt) (#686795)
-       - Drop test skipping due to too old g-i (Martin Pitt)
-       - Bump glib and g-i dependencies (Martin Pitt)
-
-3.8.0   25-Mar-2013
-       - tests: Fix incorrect assumption when testing pyglib version
-         (Simon Feltman)
-
-3.7.92  18-Mar-2013
-       - Fix stack smasher when marshaling enums as a vfunc return value
-         (Simon Feltman) (#637832)
-       - Change base class of PyGIDeprecationWarning based on minor version
-         (Simon Feltman) (#696011)
-       - autogen.sh: Source gnome-autogen to fix out of source builddir (Alban
-         Browaeys) (#694889)
-        - pygtkcompat: Make gdk.Window.get_geometry return tuple of 5
-         (Simon Feltman)
-        - pygtkcompat: Initialize hint to zero in set_geometry_hints
-         (Simon Feltman)
-        - Remove incorrect bounds check with property helper flags
-         (Simon Feltman)
-       - Fix crash when setting property of type object to an incorrect type
-         (Simon Feltman) (#695420)
-       - Give more informative error when setting property to incorrect type
-         (Simon Feltman) (#695420)
-
-3.7.91.1 05-Mar-2013
-        - Revert "Drop gi.overrides.overridefunc()" (Martin Pitt) (#695199)
-
-3.7.91  04-Mar-2013
-        - Fix many memory leaks (#675726, #693402, #691501, #510511, #691501,
-         #672224, and several more which are detected by our test suite)
-         (Martin Pitt)
-        - Dot not clobber original Gdk/Gtk functions with overrides
-         (Martin Pitt) (#686835)
-       - Optimize GValue.get/set_value by setting GValue.g_type to a local
-         (Simon Feltman) (#694857)
-        - Run tests with G_SLICE=debug_blocks (Martin Pitt) (#691501)
-       - Add override helper for stripping boolean returns (Martin Pitt)
-         (#694431)
-       - Drop obsolete pygobject_register_sinkfunc() declaration (Martin Pitt)
-         (#639849)
-       - Fix marshalling of C arrays with explicit length in signal arguments
-         (Martin Pitt) (#662241)
-       - Fix signedness, overflow checking, and 32 bit overflow of GFlags
-         (Martin Pitt) (#693121)
-       - gi/pygi-marshal-from-py.c: Fix build on Visual C++ (Chun-wei Fan)
-         (#692856)
-       - Raise DeprecationWarning on deprecated callables (Martin Pitt)
-         (#665084)
-       - pygtkcompat: Add Widget.window, scroll_to_mark, and window methods
-         (Simon Feltman) (#694067)
-       - pygtkcompat: Add Gtk.Window.set_geometry_hints which accepts keyword
-         arguments (Simon Feltman) (#694067)
-        - Ship pygobject.doap for autogen.sh (Martin Pitt) (#694591)
-       - Fix crashes in various GObject signal handler functions
-         (Simon Feltman) (#633927)
-       - pygi-closure: Protect the GSList prepend with the GIL (Olivier Crête)
-         (#684060)
-       - generictreemodel: Fix bad default return type for get_column_type
-         (Simon Feltman)
-
-3.7.90  19-Feb-2013
-       - overrides: Fix inconsistencies with drag and drop target list API
-         (Simon Feltman) (#680640)
-       - pygtkcompat: Add pygtk compatible GenericTreeModel implementation
-         (Simon Feltman) (#682933)
-       - overrides: Add support for iterables besides tuples for TreePath
-         creation (Simon Feltman) (#682933)
-       - Prefix __module__ attribute of function objects with gi.repository
-         (Niklas Koep) (#693839)
-       - configure.ac: only enable code coverage when available, to fix
-         autogen.sh with older gnome-commons (Jonathan Ballet) (#693328)
-       - Correctly set properties on object with statically defined properties
-         (Jonathan Ballet) (#693618)
-       - autogen.sh: Use gnome-autogen.sh (Martin Pitt) (#693328)
-       - Fix reference leaks with transient floating objects (Simon Feltman)
-         (#687522)
-
-3.7.5.1 05-Feb-2013
-        - Fix ABI break with pygobject.h from 3.7.5 (Simon Feltman) (#675726)
-
-3.7.5   04-Feb-2013
-       - Move various signal methods from static bindings to GI
-         (Simon Feltman) (#692918)
-       - GLib overrides: Support unpacking 'maybe' variants (Paolo Borelli)
-         (#693032)
-       - Fix ref count leak when creating pygobject wrappers for input args
-         (Mike Gorse) (#675726)
-       - Prefix names of typeless enums and flags for GType registration
-         (Simon Feltman) (#692515)
-       - Fix compilation with non-C99 compilers such as Visual C++
-         (Chun-wei Fan) (#692856)
-        - gi/overrides/Glib.py: Fix running on Windows/non-Unix (Chun-wei Fan)
-       - Do not immediately initialize Gdk and Gtk on import (Martin Pitt)
-         (#692300)
-        - Accept Â±inf and NaN as float and double values (Martin Pitt) (#692381)
-        - Fix repr() of GLib.Variant (Martin Pitt)
-        - Fix gtk-demo for Python 3 (Martin Pitt)
-        - Define GObject.TYPE_VALUE gtype constant (Martin Pitt)
-       - gobject: Go through introspection on property setting (Olivier Crête)
-         (#684062)
-       - Clean up caller-allocated GValues and their memory (Mike Gorse)
-         (#691820)
-        - Use GNOME_COMPILE_WARNINGS from gnome-common (Martin Pitt)
-
-3.7.4   14-Jan-2013
-        - Allow setting values through GtkTreeModelFilter (Simonas Kazlauskas)
-          (#689624)
-        - Support GParamSpec signal arguments from Python (Martin Pitt)
-          (#683099)
-        - pygobject_emit(): Fix cleanup on error (Martin Pitt)
-        - Add signal emission methods to TreeModel which coerce the path
-          argument (Simon Feltman) (#682933)
-        - Add override for GValue (Bastian Winkler) (#677473)
-        - Mark caller-allocated boxed structures as having a slice allocated
-          (Mike Gorse) (#699501)
-        - pygi-property: Support boxed GSList/GList types (Olivier Crête)
-          (#684059)
-        - tests: Add missing backwards compat methods for Python 2.6
-          (Martin Pitt) (#691646)
-        - Allow setting TreeModel values to None (Simon Feltman) (#684094)
-        - Set clean-up handler for marshalled arrays (Mike Gorse) (#691509)
-        - Support setting string fields in structs (Vadim Rutkovsky) (#678401)
-        - Permit plain integers for "gchar" values (Martin Pitt)
-        - Allow single byte values for int8 types (Martin Pitt) (#691524)
-        - Fix invalid memory access handling errors when registering an enum
-          type (Mike Gorse)
-        - Fix (out) arguments in callbacks (Martin Pitt)
-        - Fix C to Python marshalling of struct pointer arrays (Martin Pitt)
-        - Don't let Property.setter() method names define property names
-          (Martin Pitt) (#688971)
-        - Use g-i stack allocation API (Martin Pitt) (#615982)
-        - pyg_value_from_pyobject: support GArray (Ray Strode) (#690514)
-        - Fix obsolete automake macros (Marko Lindqvist) (#691101)
-        - Change dynamic enum and flag gtype creation to use namespaced naming
-          (Simon Feltman) (#690455)
-        - Fix Gtk.UIManager.add_ui_from_string() override for non-ASCII chars
-          (Jonathan Ballet) (#690329)
-        - Don't dup strings before passing them to type registration functions
-          (Mike Gorse) (#690532)
-        - Fix marshalling of arrays of boxed struct values (Carlos Garnacho)
-          (#656312)
-
-3.7.3   17-Dec-2012
-       - Add support for caller-allocated GArray out arguments (Martin Pitt)
-         (#690041)
-       - [API add] Re-support calling GLib.io_add_watch with an fd or Python
-         file (Martin Pitt)
-        - pygtkcompat: Work around IndexError on large flags (Martin Pitt)
-        - Fix pyg_value_from_pyobject() range check for uint (Martin Pitt)
-        - Fix tests to work with g-i 1.34.2 (Martin Pitt)
-       - Fix wrong refcount for GVariant property defaults (Martin Pitt)
-         (#689267)
-        - Fix array arguments on 32 bit architectures (Martin Pitt)
-        - Add backwards compatible API for GLib.unix_signal_add_full()
-         (Martin Pitt)
-       - Drop MININT64/MAXUINT64 workaround, current g-i gets this right now
-         (Martin Pitt)
-        - Fix maximum and minimum ranges of TYPE_(U)INT64 properties
-         (Simonas Kazlauskas) (#688949)
-        - Ship pygi-convert.sh in tarballs (Martin Pitt) (#688697)
-
-3.7.2   19-Nov-2012
-       - [API change] Drop almost all static GLib bindings and replace them
-         with proper introspection. This gets rid of several cases where the
-         PyGObject API was not matching the real GLib API, makes the full GLib
-         API available through introspection, and makes the code smaller,
-         easier to maintain. For backwards compatibility, overrides are
-         provided to emulate the old static binding API, but this will throw a
-         PyGIDeprecationWarning for the cases that diverge from the official
-         API (in particular, GLib.io_add_watch() and GLib.child_watch_add()
-         being called without a priority argument). (Martin Pitt, Simon Feltman)
-       - [API change] Deprecate calling GLib API through the GObject
-         namespace. This has always been a misnomer with introspection, and
-         will be removed in a later version; for now this throws a
-         PyGIDeprecationWarning.
-        - [API change] Do not bind gobject_get_data() and gobject_set_data().
-         These have been deprecated for a cycle, now dropped entirely.
-         (Steve Frécinaux) (#641944)
-       - [API change] Deprecate void pointer fields as general PyObject
-         storage. (Simon Feltman) (#683599)
-        - Add support for GVariant properties (Martin Pitt)
-        - Add type checking to GVariant argument assignment (Martin Pitt)
-        - Fix marshalling of arrays of struct pointers to Python (Carlos Garnacho) (#678620)
-        - Fix Gdk.Atom to have a proper str() and repr() (Martin Pitt) (#678620)
-        - Make sure g_value_set_boxed does not cause a buffer overrun with GStrvs (Simon Feltman) (#688232)
-        - Fix leaks with GValues holding boxed and object types (Simon Feltman) (#688137)
-        - Add doc strings showing method signatures for gi methods (Simon Feltman) (#681967)
-        - Set Property instance doc string and blurb to getter doc string (Simon Feltman) (#688025)
-        - Add GObject.G_MINSSIZE (Martin Pitt)
-        - Fix marshalling of GByteArrays (Martin Pitt)
-        - Fix marshalling of ssize_t to smaller ints (Martin Pitt)
-       - Add support for lcov code coverage, and add a lot of missing
-         GIMarshallingTests and g-i Regress tests. (Martin Pitt)
-        - pygi-convert: remove deprecated GLib â†’ GObject conversions (Jose Rostagno)
-        - Add support for overriding GObject.Object (Simon Feltman) (#672727)
-        - Add --with-python configure option (Martin Pitt)
-       - Do not prefer unversioned "python" when configuring, as some distros
-         have "python" as Python 3. Use Python 3 by default if available. Add
-         --with-python configure option as an alternative to setting $PYTHON,
-         whic is more discoverable. (Martin Pitt)
-        - Fix property lookup in class hierarchy (Daniel Drake) (#686942)
-        - Move property and signal creation into _class_init() (Martin Pitt) (#686149)
-        - Fix duplicate symbols error on OSX (John Ralls)
-        - [API add] Add get_introspection_module for getting un-overridden modules (Simon Feltman) (#686828)
-        - Work around wrong 64 bit constants in GLib Gir (Martin Pitt) (#685022)
-        - Mark GLib.Source.get_current_time() as deprecated (Martin Pitt)
-        - Fix OverflowError in source_remove() (Martin Pitt) (#684526)
-
-3.7.1   22-Oct-2012
-        - Bump version to 3.7.1; let's follow the real GNOME versioning from
-          now on (Martin Pitt)
-        - Change install_properties to not use getattr on classes
-          (Simon Feltman) (#686559)
-        - Move property install function into propertyhelper.py (Simon Feltman)
-          (#686559)
-        - Fix Signal decorator to not use base class gsignals dict
-          (Simon Feltman) (#686496)
-        - tests: Consistently use GLib.MainLoop (Martin Pitt)
-        - Install the .egg-info files into correct multilib directory
-          (Kalev Lember) (#686315)
-        - Fix leaked vfunc return values (Simon Feltman) (#686140)
-        - Skip Regress tests with --disable-cairo (Martin Pitt) (#685094)
-        - Fix leak with python callables as closure argument. (Simon Feltman)
-          (#685598)
-        - Gio overrides: Handle setting GSettings enum keys (Martin Pitt)
-          (#685947)
-        - tests: Check reading GSettings enums in Gio overrides (Martin Pitt)
-        - Fix unsigned values in GArray/GList/GSList/GHash (Martin Pitt)
-          (#685860)
-        - _pygi_marshal_from_py_uint64(): Use correct data type in py2.7 check
-          (Alban Browaeys) (#685000)
-        - Install an .egg-info file (Johan Dahlin) (#680138)
-        - PyGProps_getattro(): Fix GObjectClass leak (Johan Dahlin) (#685218)
-        - pygobject.c: Don't leak GObjectClass reference (Olivier Crête)
-          (#684062)
-        - Fix memory leak in _pygi_argument_to_array() (Alban Browaeys)
-          (#685082)
-        - Fix error messages for out of range numbers (Martin Pitt) (#684314)
-        - Kill dbus-daemon after running tests (Martin Pitt) (#685009)
-        - GVariant overrides: Support empty tuple arrays (Martin Pitt)
-          (#684928)
-        - tests: Fix wrong return type in test_int64_callback() (Martin Pitt)
-          (#684700)
-        - Fix GValue marshalling of long and unsigned long (Giovanni Campagna)
-          (#684331)
-        - Clean up deprecation message for assigning gpointers to objects.
-          (Simon Feltman) (#683599)
-        - pygi-property: Lookup property in base classes of non-introspected
-          types (Olivier Crête) (#684058)
-
-3.4.0   24-Sep-2012
-        - Bump g-i dependency to 1.33.14 (Martin Pitt)
-
-3.3.92  17-Sep-2012
-        - [API add] Add ObjectInfo.get_abstract method (Simon Feltman) (#675581)
-       - Add deprecation warning when setting gpointers to anything other than
-         int. (Simon Feltman) (#683599)
-       - argument: Fix 64bit integer convertion from GValue (Nicolas Dufresne)
-         (#683596)
-        - Improve setting pointer fields/arguments to NULL using None
-         (Simon Feltman) (#683150)
-        - Bump g-i dependency to 1.33.10 (Martin Pitt)
-        - Fix -uninstalled.pc.in file (Thibault Saunier) (#683379)
-       - Various test suite additions and improvements (Martin Pitt)
-
-3.3.91  03-Sep-2012
-        - Fix exception test case for Python 2 (Martin Pitt)
-        - Bump g-i dependency to >= 1.3.9 (Martin Pitt)
-        - Show proper exception when trying to allocate a disguised struct
-          (Martin Pitt) (#639972)
-        - Support marshalling GParamSpec signal arguments (Mark Nauwelaerts)
-          (#683099)
-        - Add test for a signal that returns a GParamSpec (Martin Pitt)
-          (#683265)
-        - [API add] Add Signal class for adding and connecting custom signals.
-          (Simon Feltman) (#434924)
-        - Fix pygtkcompat's Gtk.TreeView.insert_column_with_attributes()
-          (Martin Pitt)
-        - Add override for Gtk.TreeView.insert_column_with_attributes()
-          (Marta Maria Casetti) (#679415)
-        - .gitignore: Add missing built files (Martin Pitt)
-        - Ship tests/gi in tarball (Martin Pitt)
-        - Split test_overrides.py (Martin Pitt) (#683188)
-        - _pygi_argument_to_object(): Clean up array unmarshalling (Martin Pitt)
-        - Fix memory leak in _pygi_argument_to_object() (Alban Browaeys)
-          (#682979)
-        - Fix setting pointer fields/arguments to NULL using None.
-          (Simon Feltman) (#683150)
-        - Fix for python 2.6, officially drop support for < 2.6 (Martin Pitt)
-          (#682422)
-        - Allow overrides in other directories than gi itself
-          (Thibault Saunier) (#680913)
-        - Clean up sys.path handling in tests (Simon Feltman) (#680913)
-        - Fix dynamic creation of enum and flag gi types for Python 3.3
-          (Simon Feltman) (#682323)
-        - [API add] Override g_menu_item_set_attribute (Paolo Borelli) (#682436)
-
-3.3.90  20-Aug-2012
-        - Implement marshalling for GParamSpec (Mathieu Duponchelle) (#681565)
-        - Fix erronous import statements for Python 3.3 (Simon Feltman)
-          (#682051)
-        - Do not fail tests if pyflakes or pep8 are not installed (Martin Pitt)
-        - Fix PEP-8 whitespace checking and issues in the code (Martin Pitt)
-        - Fix unmarshalling of gssize (David Malcolm) (#680693)
-        - Fix various endianess errors (David Malcolm) (#680692)
-        - Gtk overrides: Add TreeModelSort.__init__(self, model)
-         (Simon Feltman) (#681477)
-        - Convert Gtk.CellRendererState in the pygi-convert script
-         (Manuel Quiñones) (#681596)
-
-3.3.5   06-Aug-2012
-        - Fix list marshalling on big-endian machines (Martin Pitt)
-          (#680693)
-        - Beautify class/interface type mismatch error messages (Martin Pitt)
-        - Skip instead of fail tests which need Pango, Atk, Gdk, Gtk (Martin Pitt)
-        - [API add] pygtkcompat: Add more pixbuf creation functions (Simon Feltman)
-          (#680814)
-        - Fix error messages on interface/class type mismatches (Martin Pitt)
-        - Fix crash when returning (False, None) from Gtk.TreeModel.do_get_iter() (Simon Feltman)
-          (#680812)
-        - Add test case for Gtk.TextIter.forward_search() (Martin Pitt)
-          (#679415)
-        - pygi-info.c: Robustify pointer arithmetic (Martin Pitt)
-        - Add set_attributes() override to Gtk.TreeViewColumn (Manuel Quiñones)
-        - Gtk overrides: Add TreePath.__getitem__() (Simon Feltman)
-          (#680353)
-        - Fix property type mapping from int to TYPE_INT for python3. (Simon Feltman)
-          (#679939)
-        - Convert Gtk.DestDefaults constants in pygi-convert.sh script (Manuel Quiñones)
-          (#680259)
-        - Convert all Gdk.WindowState constants in pygi-convert.sh (Manuel Quiñones)
-          (#680257)
-        - [API add] Add API for checking pygobject's version (Joe R. Nassimian)
-          (#680176)
-        - pygi-convert.sh: Add some missing Gdk.CursorTypes (Manuel Quiñones)
-          (#680050)
-        - pygi-convert.sh: convert rsvg.Handle(data=...) (Manuel Kaufmann)
-          (#680092)
-
-3.3.4   16-Jul-2012
-        - pygi-convert.sh: Drop bogus filter_new() conversion (Martin Pitt)
-          (#679999)
-        - Fix help() for GI modules (Martin Pitt) (#679804)
-        - Skip gi.CallbackInfo objects from a module's dir() (Martin Pitt)
-          (#679804)
-        - Fix __path__ module attribute (Martin Pitt)
-        - pygi-convert.sh: Fix some child â†’ getChild() false positives
-         (Joe R. Nassimian) (#680004)
-       - Fix array handling for interfaces, properties, and signals
-         (Mikkel Kamstrup Erlandsen) (#667244)
-       - Add conversion of the Gdk.PropMode constants to pygi-convert.sh
-         script (Manuel Quiñones) (#679775)
-       - Add the same rules for pack_start to convert pack_end (Manuel
-         Quiñones) (#679760)
-        - Add error-checking for the case where _arg_cache_new() fails
-         (Dave Malcolm) (#678914)
-       - Add conversion of the Gdk.NotifyType constants to pygi-convert.sh
-         script (Manuel Quiñones) (#679754)
-       - Fix PyObject_Repr and PyObject_Str reference leaks (Simon Feltman)
-          (#675857)
-       - [API add] Gtk overrides: Add TreePath.__len__() (Martin Pitt)
-          (#679199)
-        - GLib.Variant: Fix repr(), add proper str() (Martin Pitt) (#679336)
-        - m4/python.m4: Update Python version list (Martin Pitt)
-        - Remove "label" property from Gtk.MenuItem if it is not set
-         (Micah Carrick) (#670575)
-
-3.3.3.1 25-Jun-2012
-        - Do not escape enum and flag names that are Python keywords (Martin Pitt)
-
-3.3.3   25-Jun-2012
-        - Remove obsolete release-tag make target (Martin Pitt)
-       - Do not do any python calls when GObjects are destroyed after the
-         python interpreter has been finalized (Simon Schampijer) (#678046)
-        - Do not change constructor-only "type" Window property (Martin Pitt)
-          (#678510)
-        - Escape identifiers which are Python keywords (Martin Pitt) (#676746)
-       - Fix code for PEP-8 violations detected by the latest pep8 checker.
-          (Martin Pitt)
-        - Fix crash in GLib.find_program_in_path() (Martin Pitt) (#678119)
-        - Revert "Do not bind gobject_get_data() and gobject_set_data()" (Martin Pitt)
-         (#641944)
-        - GVariant: Raise proper TypeError on invalid tuple input (David Keijser)
-          (#678317)
-
-3.3.2   05-Jun-2012
-       - foreign: Register cairo.Path and cairo.FontOptions foreign structs
-         (Bastian Winkler) (#677388)
-        - Check types in GBoxed assignments (Marien Zwart) (#676603)
-       - [API add] Gtk overrides: Add TreeModelRow.get_previous()
-         (Bastian Winkler) (#677389)
-       - [API add] Add missing GObject.TYPE_VARIANT (Bastian Winkler) (#677387)
-        - Fix boxed type equality (Jasper St. Pierre) (#677249)
-        - Fix TestProperties.testBoxed test (Jose Rostagno) (#676644)
-       - Fix handling of by-reference structs as out parameters
-         (Carlos Garnacho) (#653151)
-       - tests: Add more vfunc checks for GIMarshallingTestsObject
-         (Martin Pitt)
-        - Test caller-allocated GValue out parameter (Martin Pitt) (#653151)
-        - GObject.bind_property: Support transform functions (Bastian Winkler)
-          (#676169)
-        - Fix lookup of vfuncs in parent classes (Carlos Garnacho) (#672864)
-        - tests/test_properties.py: Fix whitespace (Martin Pitt)
-        - gi: Support zero-terminated arrays with length arguments
-         (Jasper St. Pierre) (#677124)
-        - [API add] Add GObject.bind_property method (Simon Feltman) (#675582)
-        - pygtkcompat: Correctly set flags (Jose Rostagno) (#675911)
-        - Gtk overrides: Implement __delitem__ on TreeModel (Jose Rostagno)
-          (#675892)
-        - Gdk Color override should support red/green/blue_float properties
-         (Simon Feltman) (#675579)
-        - Support marshalling of GVariants for closures (Martin Pitt) (#656554)
-        - _pygi_argument_from_object(): Check for compatible data type
-         (Martin Pitt)
-        - pygtkcompat: Fix color conversion (Martin Pitt)
-        - test_gi: Check setting properties in constructor (Martin Pitt)
-        - Support getting and setting GStrv properties (Martin Pitt)
-        - Support defining GStrv properties from Python (Martin Pitt)
-        - Add GObject.TYPE_STRV constant (Martin Pitt)
-        - Unref GVariants when destroying the wrapper (Martin Pitt) (#675472)
-        - Fix TestArrayGVariant test cases (Martin Pitt)
-        - pygtkcompat: Add gdk.pixbuf_get_formats compat code (Jose Rostagno)
-          (#675489)
-        - pygtkcompat: Add some more compat functions (Jose Rostagno) (#675489)
-        - Fix tests for Python 3 (Martin Pitt)
-        - Fix building with --disable-cairo (Martin Pitt)
-        - tests: Fix deprecated assertions (Martin Pitt)
-        - Run tests with MALLOC_PERTURB_ (Martin Pitt)
-
 3.3.1   30-Apr-2012
        - GSettings: allow extra keyword arguments (Giovanni Campagna)
          (#675105)
          (Martin Pitt) (#667954)
        - Add test case for Gtk.ListStore custom sort (Martin Pitt) (#674475)
        - GTK overrides: Add missing keyword arguments (Martin Pitt) (#660018)
-       - [API change] Add missing override for TreeModel.iter_previous()
-         (Martin Pitt) (#660018)
+       - Add missing override for TreeModel.iter_previous() (Martin Pitt)
+         (#660018)
        - pygi-convert.py: Drop obsolete drag method conversions (Martin Pitt)
          (#652860)
        - tests: Replace deprecated assertEquals() with assertEqual()
        - Fix test_mainloop.py for Python 3 (Martin Pitt)
        - Make callback exception propagation test stricter (Martin Pitt)
          (#616279)
-       - [API add] Add context management to freeze_notify() and
-         handler_block(). (Simon Feltman) (#672324)
+       - Add context management to freeze_notify() and handler_block().
+         (Simon Feltman) (#672324)
        - Add support for GFlags properties (Martin Pitt) (#620943)
-       - [API add] Wrap GLib.Source.is_destroyed() method (Martin Pitt)
-         (#524719)
+       - Wrap GLib.Source.is_destroyed() method (Martin Pitt) (#524719)
        - Fix error message when trying to override a non-GI class
          (Martin Pitt) (#646667)
        - Fix segfault when accessing __grefcount__ before creating the GObject
          (Steve Frécinaux) (#640434)
-       - [API change] Do not bind gobject_get_data() and gobject_set_data()
+       - Do not bind gobject_get_data() and gobject_set_data()
          (Steve Frécinaux) (#641944)
        - Add test case for multiple GLib.MainLoop instances (Martin Pitt)
          (#663068)
index 93e54bb..1fc0db5 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,14 +1,14 @@
 Metadata-Version: 1.0
 Name: PyGObject
-Version: 3.25.1
+Version: 3.3.1
 Summary: Python bindings for GObject
 Home-page: http://www.pygtk.org/
 Author: James Henstridge
 Author-email: james@daa.com.au
-Maintainer: Simon Feltman
-Maintainer-email: sfeltman@src.gnome.org
+Maintainer: Johan Dahlin
+Maintainer-email: johan@gnome.org
 License: GNU LGPL
-Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.25/pygobject-3.25.1.tar.gz
+Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.3/pygobject-3.3.1.tar.gz
 Description: Python bindings for GLib and GObject
 Platform: POSIX, Windows
 Classifier: Development Status :: 5 - Production/Stable
index 651dabe..5cffe13 100644 (file)
@@ -5,8 +5,8 @@ Summary: Python bindings for GObject
 Home-page: http://www.pygtk.org/
 Author: James Henstridge
 Author-email: james@daa.com.au
-Maintainer: Simon Feltman
-Maintainer-email: sfeltman@src.gnome.org
+Maintainer: Johan Dahlin
+Maintainer-email: johan@gnome.org
 License: GNU LGPL
 Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/@PYGOBJECT_MAJOR_VERSION@.@PYGOBJECT_MINOR_VERSION@/pygobject-@VERSION@.tar.gz
 Description: Python bindings for GLib and GObject
diff --git a/README b/README
index eb7ec8a..9faf852 100644 (file)
--- a/README
+++ b/README
@@ -8,8 +8,7 @@ Current maintainers:  Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
                       Paolo Borelli <pborelli@gnome.org>
                       Ignacio Casal Quinteiro <icq@gnome.org>
                       Sebastian Pölsterl <sebp@k-d-w.org>
-                     Simon Feltman <sfeltman@gnome.org>
-
+                     
 
 This archive contains bindings for the GLib, and GObject,
 to be used in Python. It is a fairly complete set of bindings,
@@ -37,17 +36,17 @@ New versions of this package can be found at:
 Mailing list
 ============
 
-pygobject development is discussed on the GNOME python-hackers mailing list.
-You can subscribe to it through the web interface:
+pygobject share mailing list with pygtk. You can subscribe to it through
+the web interface:
+  http://www.daa.com.au/mailman/listinfo/pygtk
 
-  https://mail.gnome.org/mailman/listinfo/python-hackers-list/
 
 Requirements
 ============
   * C compiler (GCC and MSVC supported)
-  * Python 2.7 or higher
-  * Glib/Gio 2.38.0 or higher
-  * gobject-introspection 1.46.0 or higher
+  * Python 2.3.5 or higher
+  * Glib 2.22.4 or higher
+  * GIO 2.22.4 or higher
   * libffi (optional)
 
 Copyright Information
@@ -67,15 +66,12 @@ build, it should be as simple as running:
     $ make
     $ make install
 
-By default, configure searches for a few well-known Python interpreter
-names, such as "python3", "python2", "python2.7", or "python".  If your
-Python interpreter isn't in the path, or is not called "python", you can
-configure pygobject to build against that with --with-python=<path> or
-setting the PYTHON environment variable:
+If your Python interpreter isn't in the path, or is not called
+"python", you can set the PYTHON environment variable to the full path
+of the interpreter:
 
-   $ ./configure --with-python=python3
-   $ PYTHON=python3.2 ./configure
-   $ ./configure --with-python=~/my-patched-python/python
+    $ PYTHON=/prefix/bin/python
+    $ export PYTHON
 
 If configure can't find GTK+, you may need to set the PKG_CONFIG_PATH
 environment variable to help it find the libraries.
@@ -100,9 +96,7 @@ Getting Help
 ============
 
 If you have questions about programming with PyGObject, you might want to
-check the documentation on
-
-  https://live.gnome.org/PyGObject/
+send a message to the mailing list (information on subscribing is
+above).  Alternatively, your question may be answered in the PyGTK FAQ:
 
-If that does not help, send a message to the mailing list (information on
-subscribing is above), or join #python on irc.gnome.org.
+    http://www.async.com.br/faq/pygtk/?req=index
index 54823e0..f50ce64 100644 (file)
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.15 -*- Autoconf -*-
-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
 
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
+[m4_warning([this file was generated for autoconf 2.68.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
 
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.15'
+[am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.15], [],
+m4_if([$1], [1.11.3], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,22 +54,24 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.15])dnl
+[AM_AUTOMAKE_VERSION([1.11.3])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -85,7 +90,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
+# harmless because $srcdir is `.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -103,26 +108,53 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# This was merged into AC_PROG_CC in Autoconf.
+
+AU_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+AC_DIAGNOSE([obsolete], [$0:
+       your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
+       `ac_cv_prog_cc_stdc'.  Remove this warning and the assignment when
+       you adjust the code.  You can also remove the above call to
+       AC_PROG_CC if you already called it elsewhere.])
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
 ])
+AU_DEFUN([fp_PROG_CC_STDC])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 9
+
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -141,14 +173,16 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 12
 
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -158,7 +192,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -171,13 +205,12 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
-      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
-      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
-      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
-      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                    [depcc="$$1"   am_compiler_list=])
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -185,8 +218,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -226,16 +259,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -244,8 +277,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -253,7 +286,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
+      # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -301,7 +334,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -311,13 +344,9 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
-  [--enable-dependency-tracking],
-  [do not reject slow dependency extractors])
-AS_HELP_STRING(
-  [--disable-dependency-tracking],
-  [speeds up one-time build])])
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
@@ -332,18 +361,20 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Older Autoconf quotes --file arguments for eval, but not when files
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -356,7 +387,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
+    # We used to match only the files named `Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -368,19 +399,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
+    # from the Makefile without running `make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
+    test -z "am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -398,7 +431,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
+# is enabled.  FIXME.  This creates each `.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -406,23 +439,32 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
 ])
 
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 16
+
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -435,7 +477,7 @@ m4_defn([AC_PROG_CC])
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
+[AC_PREREQ([2.62])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -464,42 +506,33 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
-             [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
-  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
-  [ok:ok],,
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -508,82 +541,34 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
                             [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES([CC])],
-                 [m4_define([AC_PROG_CC],
-                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
+                 [_AM_DEPENDENCIES(CC)],
+                 [define([AC_PROG_CC],
+                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES([CXX])],
-                 [m4_define([AC_PROG_CXX],
-                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+                 [_AM_DEPENDENCIES(CXX)],
+                 [define([AC_PROG_CXX],
+                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES([OBJC])],
-                 [m4_define([AC_PROG_OBJC],
-                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
-                 [_AM_DEPENDENCIES([OBJCXX])],
-                 [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
+                 [_AM_DEPENDENCIES(OBJC)],
+                 [define([AC_PROG_OBJC],
+                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
-
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
-    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
-  fi
-fi
-dnl The trailing newline in this macro's definition is deliberate, for
-dnl backward compatibility and to allow trailing 'dnl'-style comments
-dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
 ])
 
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
+
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -605,18 +590,21 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh+set}" != xset; then
+if test x"${install_sh}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -624,14 +612,16 @@ if test x"${install_sh+set}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST([install_sh])])
+AC_SUBST(install_sh)])
 
-# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 2
+
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -645,14 +635,56 @@ fi
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 4
+
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -670,7 +702,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
+# Ignore all kinds of additional output from `make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -695,14 +727,52 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
+# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_PROG_CC_C_O
+# --------------
+# Like AC_PROG_CC_C_O, but changed for automake.
+AC_DEFUN([AM_PROG_CC_C_O],
+[AC_REQUIRE([AC_PROG_CC_C_O])dnl
+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
+])
+
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 6
+
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -710,10 +780,11 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
+
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -726,22 +797,54 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  AC_MSG_WARN(['missing' script is too old or missing])
+  AC_MSG_WARN([`missing' script is too old or missing])
 fi
 ])
 
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 1
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 5
+
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
@@ -751,7 +854,7 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 # --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
 
 # _AM_SET_OPTIONS(OPTIONS)
 # ------------------------
@@ -765,59 +868,14 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
-  [whether $CC understands -c and -o together],
-  [am_cv_prog_cc_c_o],
-  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
-  done
-  rm -f core conftest*
-  unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 2
 
 # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 # ---------------------------------------------------------------------------
@@ -846,7 +904,7 @@ AC_DEFUN([AM_PATH_PYTHON],
   dnl Find a Python interpreter.  Python versions prior to 2.0 are not
   dnl supported. (2.0 was released on October 16, 2000).
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
+[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
 
   AC_ARG_VAR([PYTHON], [the Python interpreter])
@@ -862,11 +920,10 @@ AC_DEFUN([AM_PATH_PYTHON],
     dnl A version check is needed.
     if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
-      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
+      AC_MSG_CHECKING([whether $PYTHON version >= $1])
       AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-                             [AC_MSG_RESULT([yes])],
-                             [AC_MSG_RESULT([no])
-                              AC_MSG_ERROR([Python interpreter is too old])])
+                             [AC_MSG_RESULT(yes)],
+                             [AC_MSG_ERROR(too old)])
       am_display_PYTHON=$PYTHON
     else
       # Otherwise, try each interpreter until we find one that satisfies
@@ -915,25 +972,6 @@ AC_DEFUN([AM_PATH_PYTHON],
     [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
   AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
 
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
 
   dnl Set up 4 directories:
 
@@ -950,14 +988,7 @@ except ImportError:
      else
        am_py_prefix=$prefix
      fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
      case $am_cv_python_pythondir in
      $am_py_prefix*)
        am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@@ -992,14 +1023,7 @@ sys.stdout.write(sitedir)"`
      else
        am_py_exec_prefix=$exec_prefix
      fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
      case $am_cv_python_pyexecdir in
      $am_py_exec_prefix*)
        am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@@ -1047,12 +1071,14 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_RUN_LOG(COMMAND)
 # -------------------
 # Run COMMAND, save the exit status in ac_status, and log it.
@@ -1066,16 +1092,22 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 5
+
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -1086,40 +1118,32 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
 esac
 
-# Do 'set' in a subshell so we don't clobber the current shell's
+# Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$[*]" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$[*]" != "X $srcdir/configure conftest.file" \
-       && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment])
-     fi
-     if test "$[2]" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
    test "$[2]" = conftest.file
    )
 then
@@ -1129,50 +1153,31 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
-  [AC_MSG_CHECKING([that generated files are newer than configure])
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
+AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 2
+
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
+# (`yes' being less verbose, `no' or empty being verbose).
 AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
-  [--enable-silent-rules],
-  [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
-  [--disable-silent-rules],
-  [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules],
+[  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
 dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
 dnl do not support nested variable expansions.
 dnl See automake bug#9928 and bug#10237.
 am_make=${MAKE-make}
@@ -1190,7 +1195,7 @@ else
   am_cv_make_support_nested_variables=no
 fi])
 if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
   AM_V='$(V)'
   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
 else
@@ -1207,40 +1212,44 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
+# One issue with vendor `install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
+# always use install-sh in `make install-strip', and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 3
+
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -1254,16 +1263,18 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 2
+
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
+# FORMAT should be one of `v7', `ustar', or `pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -1273,136 +1284,460 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
-#
 AC_DEFUN([_AM_PROG_TAR],
 [# Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
+m4_if([$1], [v7],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
 
-m4_if([$1], [v7],
-  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
-  [m4_case([$1],
-    [ustar],
-     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
-      # There is notably a 21 bits limit for the UID and the GID.  In fact,
-      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
-      # and bug#13588).
-      am_max_uid=2097151 # 2^21 - 1
-      am_max_gid=$am_max_uid
-      # The $UID and $GID variables are not portable, so we need to resort
-      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
-      # below are definitely unexpected, so allow the users to see them
-      # (that is, avoid stderr redirection).
-      am_uid=`id -u || echo unknown`
-      am_gid=`id -g || echo unknown`
-      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
-      if test $am_uid -le $am_max_uid; then
-         AC_MSG_RESULT([yes])
-      else
-         AC_MSG_RESULT([no])
-         _am_tools=none
-      fi
-      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
-      if test $am_gid -le $am_max_gid; then
-         AC_MSG_RESULT([yes])
-      else
-        AC_MSG_RESULT([no])
-        _am_tools=none
-      fi],
-
-  [pax],
-    [],
-
-  [m4_fatal([Unknown tar format])])
-
-  AC_MSG_CHECKING([how to create a $1 tar archive])
-
-  # Go ahead even if we have the value already cached.  We do so because we
-  # need to set the values for the 'am__tar' and 'am__untar' variables.
-  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
-  for _am_tool in $_am_tools; do
-    case $_am_tool in
-    gnutar)
-      for _am_tar in tar gnutar gtar; do
-        AM_RUN_LOG([$_am_tar --version]) && break
-      done
-      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-      am__untar="$_am_tar -xf -"
-      ;;
-    plaintar)
-      # Must skip GNU tar: if it does not support --format= it doesn't create
-      # ustar tarball either.
-      (tar --version) >/dev/null 2>&1 && continue
-      am__tar='tar chf - "$$tardir"'
-      am__tar_='tar chf - "$tardir"'
-      am__untar='tar xf -'
-      ;;
-    pax)
-      am__tar='pax -L -x $1 -w "$$tardir"'
-      am__tar_='pax -L -x $1 -w "$tardir"'
-      am__untar='pax -r'
-      ;;
-    cpio)
-      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-      am__untar='cpio -i -H $1 -d'
-      ;;
-    none)
-      am__tar=false
-      am__tar_=false
-      am__untar=false
-      ;;
-    esac
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
 
-    # If the value was cached, stop now.  We just wanted to have am__tar
-    # and am__untar set.
-    test -n "${am_cv_prog_tar_$1}" && break
-
-    # tar/untar a dummy directory, and stop if the command works.
-    rm -rf conftest.dir
-    mkdir conftest.dir
-    echo GrepMe > conftest.dir/file
-    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
-    rm -rf conftest.dir
-    if test -s conftest.tar; then
-      AM_RUN_LOG([$am__untar <conftest.tar])
-      AM_RUN_LOG([cat conftest.dir/file])
-      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-    fi
-  done
+  # tar/untar a dummy directory, and stop if the command works
   rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
 
-  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
-m4_include([m4/ax_append_compile_flags.m4])
-m4_include([m4/ax_append_flag.m4])
-m4_include([m4/ax_append_link_flags.m4])
-m4_include([m4/ax_check_compile_flag.m4])
-m4_include([m4/ax_check_link_flag.m4])
-m4_include([m4/ax_code_coverage.m4])
-m4_include([m4/ax_compiler_flags.m4])
-m4_include([m4/ax_compiler_flags_cflags.m4])
-m4_include([m4/ax_compiler_flags_gir.m4])
-m4_include([m4/ax_compiler_flags_ldflags.m4])
-m4_include([m4/ax_is_release.m4])
-m4_include([m4/ax_require_defined.m4])
-m4_include([m4/glib-2.0.m4])
-m4_include([m4/introspection.m4])
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Configure paths for GLIB
+# Owen Taylor     1997-2001
+
+dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
+dnl gthread, or gio is specified in MODULES, pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GLIB_2_0],
+[dnl 
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and run a test GLIB program],
+                   , enable_glibtest=yes)
+
+  pkg_config_args=glib-2.0
+  for module in . $4
+  do
+      case "$module" in
+         gmodule) 
+             pkg_config_args="$pkg_config_args gmodule-2.0"
+         ;;
+         gmodule-no-export) 
+             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+         ;;
+         gobject) 
+             pkg_config_args="$pkg_config_args gobject-2.0"
+         ;;
+         gthread) 
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+         gio*) 
+             pkg_config_args="$pkg_config_args $module-2.0"
+         ;;
+      esac
+  done
+
+  PKG_PROG_PKG_CONFIG([0.16])
+
+  no_glib=""
+
+  if test "x$PKG_CONFIG" = x ; then
+    no_glib=yes
+    PKG_CONFIG=no
+  fi
+
+  min_glib_version=ifelse([$1], ,2.0.0,$1)
+  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
+
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+         enable_glibtest=no
+    fi
+
+    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+         :
+    else
+         no_glib=yes
+    fi
+  fi
+
+  if test x"$no_glib" = x ; then
+    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
+
+    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_glibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GLIB_CFLAGS"
+      LIBS="$GLIB_LIBS $LIBS"
+dnl
+dnl Now check if the installed GLIB is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+      rm -f conf.glibtest
+      AC_TRY_RUN([
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  unsigned int major, minor, micro;
+  char *tmp_version;
+
+  fclose (fopen ("conf.glibtest", "w"));
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_glib_version");
+  if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_glib_version");
+     exit(1);
+   }
+
+  if ((glib_major_version != $glib_config_major_version) ||
+      (glib_minor_version != $glib_config_minor_version) ||
+      (glib_micro_version != $glib_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
+             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+             glib_major_version, glib_minor_version, glib_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    } 
+  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+          (glib_minor_version != GLIB_MINOR_VERSION) ||
+           (glib_micro_version != GLIB_MICRO_VERSION))
+    {
+      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            glib_major_version, glib_minor_version, glib_micro_version);
+    }
+  else
+    {
+      if ((glib_major_version > major) ||
+        ((glib_major_version == major) && (glib_minor_version > minor)) ||
+        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
+               glib_major_version, glib_minor_version, glib_micro_version);
+        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
+              major, minor, micro);
+        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_glib" = x ; then
+     AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+     else
+       if test -f conf.glibtest ; then
+        :
+       else
+          echo "*** Could not run GLIB test program, checking why..."
+          ac_save_CFLAGS="$CFLAGS"
+          ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GLIB_CFLAGS"
+          LIBS="$LIBS $GLIB_LIBS"
+          AC_TRY_LINK([
+#include <glib.h>
+#include <stdio.h>
+],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GLIB_CFLAGS=""
+     GLIB_LIBS=""
+     GLIB_GENMARSHAL=""
+     GOBJECT_QUERY=""
+     GLIB_MKENUMS=""
+     GLIB_COMPILE_RESOURCES=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GLIB_CFLAGS)
+  AC_SUBST(GLIB_LIBS)
+  AC_SUBST(GLIB_GENMARSHAL)
+  AC_SUBST(GOBJECT_QUERY)
+  AC_SUBST(GLIB_MKENUMS)
+  AC_SUBST(GLIB_COMPILE_RESOURCES)
+  rm -f conf.glibtest
+])
+
+m4_include([m4/as-ac-expand.m4])
+m4_include([m4/jhflags.m4])
 m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
 m4_include([m4/ltsugar.m4])
 m4_include([m4/ltversion.m4])
 m4_include([m4/lt~obsolete.m4])
-m4_include([m4/pkg.m4])
 m4_include([m4/python.m4])
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755 (executable)
index 56b7d0a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-test -n "$srcdir" || srcdir=$(dirname "$0")
-test -n "$srcdir" || srcdir=.
-
-olddir=$(pwd)
-
-cd $srcdir
-
-(test -f configure.ac) || {
-        echo "*** ERROR: Directory '$srcdir' does not look like the top-level project directory ***"
-        exit 1
-}
-
-# shellcheck disable=SC2016
-PKG_NAME=$(autoconf --trace 'AC_INIT:$1' configure.ac)
-
-if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then
-        echo "*** WARNING: I am going to run 'configure' with no arguments." >&2
-        echo "*** If you wish to pass any to it, please specify them on the" >&2
-        echo "*** '$0' command line." >&2
-        echo "" >&2
-fi
-
-aclocal --install || exit 1
-autoreconf --verbose --force --install || exit 1
-
-cd "$olddir"
-if [ "$NOCONFIGURE" = "" ]; then
-        $srcdir/configure "$@" || exit 1
-
-        if [ "$1" = "--help" ]; then exit 0 else
-                echo "Now type 'make' to compile $PKG_NAME" || exit 1
-        fi
-else
-        echo "Skipping configure process."
-fi
diff --git a/compile b/compile
index a85b723..b1f4749 100755 (executable)
--- a/compile
+++ b/compile
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2012-01-04.17; # UTC
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
+# Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -78,53 +79,6 @@ func_file_conv ()
   esac
 }
 
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
-  func_file_conv "$1"
-  if test -z "$lib_path"; then
-    lib_path=$file
-  else
-    lib_path="$lib_path;$file"
-  fi
-  linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
-  lib=$1
-  found=no
-  save_IFS=$IFS
-  IFS=';'
-  for dir in $lib_path $LIB
-  do
-    IFS=$save_IFS
-    if $shared && test -f "$dir/$lib.dll.lib"; then
-      found=yes
-      lib=$dir/$lib.dll.lib
-      break
-    fi
-    if test -f "$dir/$lib.lib"; then
-      found=yes
-      lib=$dir/$lib.lib
-      break
-    fi
-    if test -f "$dir/lib$lib.a"; then
-      found=yes
-      lib=$dir/lib$lib.a
-      break
-    fi
-  done
-  IFS=$save_IFS
-
-  if test "$found" != yes; then
-    lib=$lib.lib
-  fi
-}
-
 # func_cl_wrapper cl arg...
 # Adjust compile command to suit cl
 func_cl_wrapper ()
@@ -155,34 +109,43 @@ func_cl_wrapper ()
              ;;
          esac
          ;;
-       -I)
-         eat=1
-         func_file_conv "$2" mingw
-         set x "$@" -I"$file"
-         shift
-         ;;
        -I*)
          func_file_conv "${1#-I}" mingw
          set x "$@" -I"$file"
          shift
          ;;
-       -l)
-         eat=1
-         func_cl_dashl "$2"
-         set x "$@" "$lib"
-         shift
-         ;;
        -l*)
-         func_cl_dashl "${1#-l}"
-         set x "$@" "$lib"
+         lib=${1#-l}
+         found=no
+         save_IFS=$IFS
+         IFS=';'
+         for dir in $lib_path $LIB
+         do
+           IFS=$save_IFS
+           if $shared && test -f "$dir/$lib.dll.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.dll.lib"
+             break
+           fi
+           if test -f "$dir/$lib.lib"; then
+             found=yes
+             set x "$@" "$dir/$lib.lib"
+             break
+           fi
+         done
+         IFS=$save_IFS
+
+         test "$found" != yes && set x "$@" "$lib.lib"
          shift
          ;;
-       -L)
-         eat=1
-         func_cl_dashL "$2"
-         ;;
        -L*)
-         func_cl_dashL "${1#-L}"
+         func_file_conv "${1#-L}"
+         if test -z "$lib_path"; then
+           lib_path=$file
+         else
+           lib_path="$lib_path;$file"
+         fi
+         linker_opts="$linker_opts -LIBPATH:$file"
          ;;
        -static)
          shared=false
index 2e9ad7f..d622a44 100755 (executable)
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2016-10-02'
+timestamp='2012-02-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -20,17 +22,19 @@ timestamp='2016-10-02'
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -50,7 +54,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,27 +138,6 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
-
-       eval $set_cc_for_build
-       cat <<-EOF > $dummy.c
-       #include <features.h>
-       #if defined(__UCLIBC__)
-       LIBC=uclibc
-       #elif defined(__dietlibc__)
-       LIBC=dietlibc
-       #else
-       LIBC=gnu
-       #endif
-       EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-       ;;
-esac
-
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -168,29 +153,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
        sysctl="sysctl -n hw.machine_arch"
-       UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           /sbin/$sysctl 2>/dev/null || \
-           /usr/sbin/$sysctl 2>/dev/null || \
-           echo unknown)`
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
        case "${UNAME_MACHINE_ARCH}" in
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
            sh3eb) machine=sh-unknown ;;
            sh5el) machine=sh5le-unknown ;;
-           earmv*)
-               arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-               endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine=${arch}${endian}-unknown
-               ;;
            *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
        esac
        # The Operating System including object format, if it has switched
-       # to ELF recently (or will in the future) and ABI.
+       # to ELF recently, or will in the future.
        case "${UNAME_MACHINE_ARCH}" in
-           earm*)
-               os=netbsdelf
-               ;;
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
                eval $set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -207,13 +182,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                os=netbsd
                ;;
        esac
-       # Determine ABI tags.
-       case "${UNAME_MACHINE_ARCH}" in
-           earm*)
-               expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-               abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
-               ;;
-       esac
        # The OS release
        # Debian GNU/NetBSD machines have a different userland, and
        # thus, need a distinct triplet. However, they do not need
@@ -224,26 +192,18 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
                release='-gnu'
                ;;
            *)
-               release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
                ;;
        esac
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "${machine}-${os}${release}${abi}"
-       exit ;;
-    *:Bitrig:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+       echo "${machine}-${os}${release}"
        exit ;;
     *:OpenBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
        echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
        exit ;;
-    *:LibertyBSD:*:*)
-       UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
-       exit ;;
     *:ekkoBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
        exit ;;
@@ -256,9 +216,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:MirBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
        exit ;;
-    *:Sortix:*:*)
-       echo ${UNAME_MACHINE}-unknown-sortix
-       exit ;;
     alpha:OSF1:*:*)
        case $UNAME_RELEASE in
        *4.0)
@@ -275,42 +232,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
        case "$ALPHA_CPU_TYPE" in
            "EV4 (21064)")
-               UNAME_MACHINE=alpha ;;
+               UNAME_MACHINE="alpha" ;;
            "EV4.5 (21064)")
-               UNAME_MACHINE=alpha ;;
+               UNAME_MACHINE="alpha" ;;
            "LCA4 (21066/21068)")
-               UNAME_MACHINE=alpha ;;
+               UNAME_MACHINE="alpha" ;;
            "EV5 (21164)")
-               UNAME_MACHINE=alphaev5 ;;
+               UNAME_MACHINE="alphaev5" ;;
            "EV5.6 (21164A)")
-               UNAME_MACHINE=alphaev56 ;;
+               UNAME_MACHINE="alphaev56" ;;
            "EV5.6 (21164PC)")
-               UNAME_MACHINE=alphapca56 ;;
+               UNAME_MACHINE="alphapca56" ;;
            "EV5.7 (21164PC)")
-               UNAME_MACHINE=alphapca57 ;;
+               UNAME_MACHINE="alphapca57" ;;
            "EV6 (21264)")
-               UNAME_MACHINE=alphaev6 ;;
+               UNAME_MACHINE="alphaev6" ;;
            "EV6.7 (21264A)")
-               UNAME_MACHINE=alphaev67 ;;
+               UNAME_MACHINE="alphaev67" ;;
            "EV6.8CB (21264C)")
-               UNAME_MACHINE=alphaev68 ;;
+               UNAME_MACHINE="alphaev68" ;;
            "EV6.8AL (21264B)")
-               UNAME_MACHINE=alphaev68 ;;
+               UNAME_MACHINE="alphaev68" ;;
            "EV6.8CX (21264D)")
-               UNAME_MACHINE=alphaev68 ;;
+               UNAME_MACHINE="alphaev68" ;;
            "EV6.9A (21264/EV69A)")
-               UNAME_MACHINE=alphaev69 ;;
+               UNAME_MACHINE="alphaev69" ;;
            "EV7 (21364)")
-               UNAME_MACHINE=alphaev7 ;;
+               UNAME_MACHINE="alphaev7" ;;
            "EV7.9 (21364A)")
-               UNAME_MACHINE=alphaev79 ;;
+               UNAME_MACHINE="alphaev79" ;;
        esac
        # A Pn.n version is a patched version.
        # A Vn.n version is a released version.
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
        # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
        exitcode=$?
        trap '' 0
@@ -345,7 +302,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
+    arm:riscos:*:*|arm:RISCOS:*:*)
        echo arm-unknown-riscos
        exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -383,16 +340,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
        eval $set_cc_for_build
-       SUN_ARCH=i386
+       SUN_ARCH="i386"
        # If there is a compiler, see if it is configured for 64-bit objects.
        # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
        # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
            if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
                grep IS_64BIT_ARCH >/dev/null
            then
-               SUN_ARCH=x86_64
+               SUN_ARCH="x86_64"
            fi
        fi
        echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -417,7 +374,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        exit ;;
     sun*:*:4.2BSD:*)
        UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-       test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
        case "`/bin/arch`" in
            sun3)
                echo m68k-sun-sunos${UNAME_RELEASE}
@@ -603,9 +560,8 @@ EOF
        else
                IBM_ARCH=powerpc
        fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
-                          awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
        else
                IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
        fi
@@ -642,13 +598,13 @@ EOF
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
                    case "${sc_cpu_version}" in
-                     523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
-                     528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
+                     523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                     528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
                      532)                      # CPU_PA_RISC2_0
                        case "${sc_kernel_bits}" in
-                         32) HP_ARCH=hppa2.0n ;;
-                         64) HP_ARCH=hppa2.0w ;;
-                         '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
+                         32) HP_ARCH="hppa2.0n" ;;
+                         64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
                        esac ;;
                    esac
                fi
@@ -687,11 +643,11 @@ EOF
                    exit (0);
                }
 EOF
-                   (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
                    test -z "$HP_ARCH" && HP_ARCH=hppa
                fi ;;
        esac
-       if [ ${HP_ARCH} = hppa2.0w ]
+       if [ ${HP_ARCH} = "hppa2.0w" ]
        then
            eval $set_cc_for_build
 
@@ -704,12 +660,12 @@ EOF
            # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
            # => hppa64-hp-hpux11.23
 
-           if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
                grep -q __LP64__
            then
-               HP_ARCH=hppa2.0w
+               HP_ARCH="hppa2.0w"
            else
-               HP_ARCH=hppa64
+               HP_ARCH="hppa64"
            fi
        fi
        echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -814,14 +770,14 @@ EOF
        echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
        exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-       FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     5000:UNIX_System_V:4.*:*)
-       FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+       FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+       FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
        exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -845,13 +801,10 @@ EOF
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit ;;
-    *:MINGW64*:*)
-       echo ${UNAME_MACHINE}-pc-mingw64
-       exit ;;
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    *:MSYS*:*)
+    i*:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -899,21 +852,21 @@ EOF
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
        exit ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
     aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -926,60 +879,59 @@ EOF
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
        exit ;;
     arm*:Linux:*:*)
        eval $set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+           echo ${UNAME_MACHINE}-unknown-linux-gnu
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
            else
-               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
            fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-       exit ;;
-    e2k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-axis-linux-gnu
        exit ;;
     frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       LIBC=gnu
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    k1om:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
@@ -998,69 +950,54 @@ EOF
        #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
        ;;
-    mips64el:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-       exit ;;
-    openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-${LIBC}
-       exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    or32:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-${LIBC}
+       echo sparc-unknown-linux-gnu
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-${LIBC}
+       echo hppa64-unknown-linux-gnu
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-         *)    echo hppa-unknown-linux-${LIBC} ;;
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-${LIBC}
+       echo powerpc64-unknown-linux-gnu
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-${LIBC}
-       exit ;;
-    ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-${LIBC}
-       exit ;;
-    ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-${LIBC}
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo powerpc-unknown-linux-gnu
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+       echo ${UNAME_MACHINE}-ibm-linux
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+       echo ${UNAME_MACHINE}-dec-linux-gnu
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1136,7 +1073,7 @@ EOF
        # uname -m prints for DJGPP always 'pc', but it prints nothing about
        # the processor, so we play safe by assuming i586.
        # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configure will decide that
+       # prints for the "djgpp" host, or else GDB configury will decide that
        # this is a cross-build.
        echo i586-pc-msdosdjgpp
        exit ;;
@@ -1264,9 +1201,6 @@ EOF
     BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
        echo i586-pc-haiku
        exit ;;
-    x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
@@ -1285,9 +1219,6 @@ EOF
     SX-8R:SUPER-UX:*:*)
        echo sx8r-nec-superux${UNAME_RELEASE}
        exit ;;
-    SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux${UNAME_RELEASE}
-       exit ;;
     Power*:Rhapsody:*:*)
        echo powerpc-apple-rhapsody${UNAME_RELEASE}
        exit ;;
@@ -1296,36 +1227,24 @@ EOF
        exit ;;
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval $set_cc_for_build
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
-       fi
-       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                   (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                   grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-           fi
-       elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
-       fi
+       case $UNAME_PROCESSOR in
+           i386)
+               eval $set_cc_for_build
+               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                     grep IS_64BIT_ARCH >/dev/null
+                 then
+                     UNAME_PROCESSOR="x86_64"
+                 fi
+               fi ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
-       if test "$UNAME_PROCESSOR" = x86; then
+       if test "$UNAME_PROCESSOR" = "x86"; then
                UNAME_PROCESSOR=i386
                UNAME_MACHINE=pc
        fi
@@ -1337,7 +1256,7 @@ EOF
     NEO-?:NONSTOP_KERNEL:*:*)
        echo neo-tandem-nsk${UNAME_RELEASE}
        exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
+    NSE-?:NONSTOP_KERNEL:*:*)
        echo nse-tandem-nsk${UNAME_RELEASE}
        exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1356,7 +1275,7 @@ EOF
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       if test "$cputype" = 386; then
+       if test "$cputype" = "386"; then
            UNAME_MACHINE=i386
        else
            UNAME_MACHINE="$cputype"
@@ -1398,7 +1317,7 @@ EOF
        echo i386-pc-xenix
        exit ;;
     i*86:skyos:*:*)
-       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
+       echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
        exit ;;
     i*86:rdos:*:*)
        echo ${UNAME_MACHINE}-pc-rdos
@@ -1409,25 +1328,174 @@ EOF
     x86_64:VMkernel:*:*)
        echo ${UNAME_MACHINE}-unknown-esx
        exit ;;
-    amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
 esac
 
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+       "4"
+#else
+       ""
+#endif
+       ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit ;;
+    c34*)
+       echo c34-convex-bsd
+       exit ;;
+    c38*)
+       echo c38-convex-bsd
+       exit ;;
+    c4*)
+       echo c4-convex-bsd
+       exit ;;
+    esac
+fi
+
 cat >&2 <<EOF
 $0: unable to guess system type
 
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
 
 config.guess timestamp = $timestamp
 
index 81ef751..fa098f6 100644 (file)
@@ -9,6 +9,9 @@
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if PySignal_SetWakeupFd is available */
+#undef HAVE_PYSIGNAL_SETWAKEUPFD
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* Define to the sub-directory where libtool stores uninstalled libraries. */
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
 #undef LT_OBJDIR
 
-/* Define shared library extension */
-#undef OS_EXT
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
 
 /* Name of package */
 #undef PACKAGE
index dd2ca93..c894da4 100755 (executable)
@@ -1,18 +1,24 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2016-11-04'
+timestamp='2012-02-10'
 
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -20,12 +26,11 @@ timestamp='2016-11-04'
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
 
 
-# Please send patches to <config-patches@gnu.org>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -33,7 +38,7 @@ timestamp='2016-11-04'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -53,7 +58,8 @@ timestamp='2016-11-04'
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
 
 Canonicalize a configuration name.
 
@@ -67,7 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -115,9 +123,9 @@ esac
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | cloudabi*-eabi* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,7 +156,7 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
+       -apple | -axis | -knuth | -cray | -microblaze)
                os=
                basic_machine=$1
                ;;
@@ -217,12 +225,6 @@ case $os in
        -isc*)
                basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
                ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
-               ;;
        -lynx*)
                os=-lynxos
                ;;
@@ -251,25 +253,21 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | ba \
-       | be32 | be64 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
        | bfin \
-       | c4x | c8051 | clipper \
+       | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
-       | e2k | epiphany \
-       | fido | fr30 | frv | ft32 \
+       | epiphany \
+       | fido | fr30 | frv \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
-       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+       | maxq | mb | microblaze | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
@@ -283,30 +281,26 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
        | moxie \
        | mt \
        | msp430 \
        | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
+       | nios | nios2 \
        | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
+       | open8 \
+       | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pru \
        | pyramid \
-       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -314,7 +308,6 @@ case $basic_machine in
        | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
        | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | visium \
        | we32k \
        | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
@@ -329,10 +322,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -374,29 +364,26 @@ case $basic_machine in
        | aarch64-* | aarch64_be-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
-       | ba-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
+       | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
-       | e2k-* | elxsi-* \
+       | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
        | h8300-* | h8500-* \
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
-       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
@@ -410,34 +397,28 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
        | mipstx39-* | mipstx39el-* \
        | mmix-* \
        | mt-* \
        | msp430-* \
        | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
+       | nios-* | nios2-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
-       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pru-* \
        | pyramid-* \
-       | riscv32-* | riscv64-* \
        | rl78-* | romp-* | rs6000-* | rx-* \
        | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
        | tahoe-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
        | tile*-* \
@@ -445,7 +426,6 @@ case $basic_machine in
        | ubicom32-* \
        | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
        | vax-* \
-       | visium-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
@@ -522,9 +502,6 @@ case $basic_machine in
                basic_machine=i386-pc
                os=-aros
                ;;
-       asmjs)
-               basic_machine=asmjs-unknown
-               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -645,14 +622,6 @@ case $basic_machine in
                basic_machine=m68k-bull
                os=-sysv3
                ;;
-       e500v[12])
-               basic_machine=powerpc-unknown
-               os=$os"spe"
-               ;;
-       e500v[12]-*)
-               basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-               os=$os"spe"
-               ;;
        ebmon29k)
                basic_machine=a29k-amd
                os=-ebmon
@@ -794,9 +763,6 @@ case $basic_machine in
                basic_machine=m68k-isi
                os=-sysv
                ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-               ;;
        m68knommu)
                basic_machine=m68k-unknown
                os=-linux
@@ -816,15 +782,11 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
-       microblaze*)
+       microblaze)
                basic_machine=microblaze-xilinx
                ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
        mingw32)
-               basic_machine=i686-pc
+               basic_machine=i386-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -852,10 +814,6 @@ case $basic_machine in
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
-       moxiebox)
-               basic_machine=moxie-unknown
-               os=-moxiebox
-               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -864,7 +822,7 @@ case $basic_machine in
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i686-pc
+               basic_machine=i386-pc
                os=-msys
                ;;
        mvs)
@@ -1032,7 +990,7 @@ case $basic_machine in
        ppc-* | ppcbe-*)
                basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       ppcle | powerpclittle)
+       ppcle | powerpclittle | ppc-le | powerpc-little)
                basic_machine=powerpcle-unknown
                ;;
        ppcle-* | powerpclittle-*)
@@ -1042,7 +1000,7 @@ case $basic_machine in
                ;;
        ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
                ;;
-       ppc64le | powerpc64little)
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
                basic_machine=powerpc64le-unknown
                ;;
        ppc64le-* | powerpc64little-*)
@@ -1055,11 +1013,7 @@ case $basic_machine in
                basic_machine=i586-unknown
                os=-pw32
                ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
-               ;;
-       rdos32)
+       rdos)
                basic_machine=i386-pc
                os=-rdos
                ;;
@@ -1386,30 +1340,29 @@ case $os in
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
              | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
+             | -sym* | -kopensolaris* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* | -cloudabi* | -sortix* \
+             | -aos* | -aros* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
+             | -openbsd* | -solidbsd* \
              | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-             | -onefs* | -tirtos* | -phoenix* | -fuchsia*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1533,6 +1486,9 @@ case $os in
        -aros*)
                os=-aros
                ;;
+       -kaos*)
+               os=-kaos
+               ;;
        -zvmoe)
                os=-zvmoe
                ;;
@@ -1541,8 +1497,6 @@ case $os in
                ;;
        -nacl*)
                ;;
-       -ios)
-               ;;
        -none)
                ;;
        *)
@@ -1583,12 +1537,6 @@ case $basic_machine in
        c4x-* | tic4x-*)
                os=-coff
                ;;
-       c8051-*)
-               os=-elf
-               ;;
-       hexagon-*)
-               os=-elf
-               ;;
        tic54x-*)
                os=-coff
                ;;
index 6807722..797ee73 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,11 +1,13 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pygobject 3.25.1.
+# Generated by GNU Autoconf 2.68 for pygobject 3.3.1.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -134,31 +136,6 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
+test x\$exitcode = x0 || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -246,25 +222,21 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in # ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
 fi
 
     if test x$as_have_required = xno; then :
@@ -368,14 +340,6 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -497,10 +461,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -535,16 +495,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # In both cases, we have to default to `cp -p'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
+      as_ln_s='cp -p'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -pR'
+    as_ln_s='cp -p'
   fi
 else
-  as_ln_s='cp -pR'
+  as_ln_s='cp -p'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -556,8 +516,28 @@ else
   as_mkdir_p=false
 fi
 
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -591,10 +571,10 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='pygobject'
 PACKAGE_TARNAME='pygobject'
-PACKAGE_VERSION='3.25.1'
-PACKAGE_STRING='pygobject 3.25.1'
+PACKAGE_VERSION='3.3.1'
+PACKAGE_STRING='pygobject 3.3.1'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject'
-PACKAGE_URL='https://wiki.gnome.org/Projects/PyGObject/'
+PACKAGE_URL=''
 
 ac_unique_file="gi/gimodule.c"
 # Factoring default headers for most tests.
@@ -637,48 +617,24 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
-CODE_COVERAGE_RULES
-CODE_COVERAGE_LDFLAGS
-CODE_COVERAGE_LIBS
-CODE_COVERAGE_CXXFLAGS
-CODE_COVERAGE_CFLAGS
-CODE_COVERAGE_CPPFLAGS
-GENHTML
-LCOV
-GCOV
-CODE_COVERAGE_ENABLED
-CODE_COVERAGE_ENABLED_FALSE
-CODE_COVERAGE_ENABLED_TRUE
-WARN_SCANNERFLAGS
-WARN_LDFLAGS
-WARN_CFLAGS
-WITH_COMMON_FALSE
-WITH_COMMON_TRUE
+INTROSPECTION_COMPILER
+INTROSPECTION_SCANNER
 ENABLE_CAIRO_FALSE
 ENABLE_CAIRO_TRUE
 PYCAIRO_LIBS
 PYCAIRO_CFLAGS
-CAIRO_LIBS
-CAIRO_CFLAGS
 GI_DATADIR
-HAVE_INTROSPECTION_FALSE
-HAVE_INTROSPECTION_TRUE
-INTROSPECTION_MAKEFILE
-INTROSPECTION_LIBS
-INTROSPECTION_CFLAGS
-INTROSPECTION_TYPELIBDIR
-INTROSPECTION_GIRDIR
-INTROSPECTION_GENERATE
-INTROSPECTION_COMPILER
-INTROSPECTION_SCANNER
 GI_LIBS
 GI_CFLAGS
 GIO_LIBS
 GIO_CFLAGS
 LIBFFI_PC
+HAVE_LIBFFI_FALSE
+HAVE_LIBFFI_TRUE
 FFI_LIBS
 FFI_CFLAGS
-PYTHON_VALGRIND_SUPP
+DATADIR
+PYTHON_BASENAME
 GLIB_COMPILE_RESOURCES
 GLIB_MKENUMS
 GOBJECT_QUERY
@@ -688,10 +644,11 @@ GLIB_CFLAGS
 PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
+THREADING_CFLAGS
+PLATFORM
 PYTHON_LIB_LOC
 PYTHON_LIBS
 PYTHON_INCLUDES
-PYTHON_SO
 pkgpyexecdir
 pyexecdir
 pkgpythondir
@@ -702,7 +659,6 @@ PYTHON_PREFIX
 PYTHON_VERSION
 PYTHON
 CPP
-LT_SYS_LIBRARY_PATH
 OTOOL64
 OTOOL
 LIPO
@@ -742,9 +698,10 @@ LIBTOOL
 OBJDUMP
 DLLTOOL
 AS
-OS_EXT
 OS_WIN32_FALSE
 OS_WIN32_TRUE
+PLATFORM_WIN32_FALSE
+PLATFORM_WIN32_TRUE
 host_os
 host_vendor
 host_cpu
@@ -753,6 +710,9 @@ build_os
 build_vendor
 build_cpu
 build
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 am__untar
 am__tar
 AMTAR
@@ -783,6 +743,7 @@ AM_V
 PYGOBJECT_MICRO_VERSION
 PYGOBJECT_MINOR_VERSION
 PYGOBJECT_MAJOR_VERSION
+ACLOCAL_AMFLAGS
 target_alias
 host_alias
 build_alias
@@ -802,7 +763,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -826,24 +786,19 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_silent_rules
+enable_maintainer_mode
 enable_static
 enable_shared
 with_pic
 enable_fast_install
-with_aix_soname
 enable_dependency_tracking
 with_gnu_ld
 with_sysroot
 enable_libtool_lock
-with_python
+enable_thread
 enable_glibtest
+with_ffi
 enable_cairo
-enable_introspection
-with_common
-enable_compile_warnings
-enable_Werror
-with_gcov
-enable_code_coverage
 '
       ac_precious_vars='build_alias
 host_alias
@@ -853,7 +808,6 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-LT_SYS_LIBRARY_PATH
 CPP
 PYTHON
 PKG_CONFIG
@@ -865,8 +819,6 @@ GIO_CFLAGS
 GIO_LIBS
 GI_CFLAGS
 GI_LIBS
-CAIRO_CFLAGS
-CAIRO_LIBS
 PYCAIRO_CFLAGS
 PYCAIRO_LIBS'
 
@@ -907,7 +859,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1160,15 +1111,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1306,7 +1248,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir runstatedir
+               libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1334,6 +1276,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1419,7 +1363,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pygobject 3.25.1 to adapt to many kinds of systems.
+\`configure' configures pygobject 3.3.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1459,7 +1403,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1490,7 +1433,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pygobject 3.25.1:";;
+     short | recursive ) echo "Configuration of pygobject 3.3.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1498,44 +1441,31 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-silent-rules          less verbose build output (undo: `make V=1')
+  --disable-silent-rules         verbose build output (undo: `make V=0')
+  --disable-maintainer-mode  disable make rules and dependencies not useful
+                         (and sometimes confusing) to the casual installer
   --enable-static[=PKGS]  build static libraries [default=no]
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
-  --enable-dependency-tracking
-                          do not reject slow dependency extractors
-  --disable-dependency-tracking
-                          speeds up one-time build
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
   --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-thread        Disable pygobject threading support
   --disable-glibtest      do not try to compile and run a test GLIB program
   --enable-cairo          Enable Cairo bindings using introspection
                           information
-  --enable-introspection=[no/auto/yes]
-                          Enable introspection for this build
-  --enable-compile-warnings=[no/yes/error]
-                          Enable compiler warnings and errors
-  --disable-Werror        Unconditionally make all compiler warnings non-fatal
-  --enable-code-coverage  Whether to enable code coverage support
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
-  --with-aix-soname=aix|svr4|both
-                          shared library versioning (aka "SONAME") variant to
-                          provide on AIX, [default=aix].
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
-                          compiler's sysroot if not specified).
-  --with-python=PATH      Path to Python interpreter; searches $PATH if only a
-                          program name is given; if not given, searches for a
-                          few standard names such as "python3" or "python2"
-  --without-common        For package maintainers: do not install Python
-                          version independent files
-  --with-gcov=GCOV        use given GCOV for coverage (GCOV=gcov).
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
+  --without-ffi           Disable libffi support
 
 Some influential environment variables:
   CC          C compiler command
@@ -1545,8 +1475,6 @@ Some influential environment variables:
   LIBS        libraries to pass to the linker, e.g. -l<library>
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
-  LT_SYS_LIBRARY_PATH
-              User-defined run-time library search path.
   CPP         C preprocessor
   PYTHON      the Python interpreter
   PKG_CONFIG  path to pkg-config utility
@@ -1560,9 +1488,6 @@ Some influential environment variables:
   GIO_LIBS    linker flags for GIO, overriding pkg-config
   GI_CFLAGS   C compiler flags for GI, overriding pkg-config
   GI_LIBS     linker flags for GI, overriding pkg-config
-  CAIRO_CFLAGS
-              C compiler flags for CAIRO, overriding pkg-config
-  CAIRO_LIBS  linker flags for CAIRO, overriding pkg-config
   PYCAIRO_CFLAGS
               C compiler flags for PYCAIRO, overriding pkg-config
   PYCAIRO_LIBS
@@ -1572,7 +1497,6 @@ Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
-pygobject home page: <https://wiki.gnome.org/Projects/PyGObject/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1635,10 +1559,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pygobject configure 3.25.1
-generated by GNU Autoconf 2.69
+pygobject configure 3.3.1
+generated by GNU Autoconf 2.68
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1714,7 +1638,7 @@ $as_echo "$ac_try_echo"; } >&5
         test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
         test "$cross_compiling" = yes ||
-        test -x conftest$ac_exeext
+        $as_test_x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1913,8 +1837,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pygobject $as_me 3.25.1, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+It was created by pygobject $as_me 3.3.1, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
 
@@ -2261,18 +2185,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-
-
-
-
-        # $is_release = ($minor_version is even)
-        minor_version=`echo "$PACKAGE_VERSION" | sed 's/[^.][^.]*.\([^.][^.]*\).*/\1/'`
-        if test "$(( $minor_version % 2 ))" -ne 0; then :
-  ax_is_release=no
-else
-  ax_is_release=yes
-fi
-
+ACLOCAL_AMFLAGS="-I m4 -I ."
 
 
 
@@ -2283,9 +2196,9 @@ $as_echo "#define PYGOBJECT_MAJOR_VERSION 3" >>confdefs.h
 PYGOBJECT_MAJOR_VERSION=3
 
 
-$as_echo "#define PYGOBJECT_MINOR_VERSION 25" >>confdefs.h
+$as_echo "#define PYGOBJECT_MINOR_VERSION 3" >>confdefs.h
 
-PYGOBJECT_MINOR_VERSION=25
+PYGOBJECT_MINOR_VERSION=3
 
 
 $as_echo "#define PYGOBJECT_MICRO_VERSION 1" >>confdefs.h
@@ -2300,10 +2213,10 @@ if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
 fi
 
-case $enable_silent_rules in # (((
-  yes) AM_DEFAULT_VERBOSITY=0;;
-   no) AM_DEFAULT_VERBOSITY=1;;
-    *) AM_DEFAULT_VERBOSITY=0;;
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no)  AM_DEFAULT_VERBOSITY=1;;
+*)   AM_DEFAULT_VERBOSITY=0;;
 esac
 am_make=${MAKE-make}
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
@@ -2334,7 +2247,7 @@ else
 fi
 AM_BACKSLASH='\'
 
-am__api_version='1.15'
+am__api_version='1.11'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -2402,7 +2315,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -2460,6 +2373,9 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -2470,40 +2386,32 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
 esac
 
-# Do 'set' in a subshell so we don't clobber the current shell's
+# Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   am_has_slept=no
-   for am_try in 1 2; do
-     echo "timestamp, slept: $am_has_slept" > conftest.file
-     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-     if test "$*" = "X"; then
-       # -L didn't work.
-       set X `ls -t "$srcdir/configure" conftest.file`
-     fi
-     if test "$*" != "X $srcdir/configure conftest.file" \
-       && test "$*" != "X conftest.file $srcdir/configure"; then
-
-       # If neither matched, then we have a broken ls.  This can happen
-       # if, for instance, CONFIG_SHELL is bash and it inherits a
-       # broken ls alias from the environment.  This has actually
-       # happened.  Such a system could not be considered "sane".
-       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-  alias in your environment" "$LINENO" 5
-     fi
-     if test "$2" = conftest.file || test $am_try -eq 2; then
-       break
-     fi
-     # Just in case.
-     sleep 1
-     am_has_slept=yes
-   done
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
    test "$2" = conftest.file
    )
 then
@@ -2515,16 +2423,6 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
-  ( sleep 1 ) &
-  am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2535,8 +2433,8 @@ test "$program_suffix" != NONE &&
 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -2547,15 +2445,15 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
-  am_missing_run="$MISSING "
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh+set}" != xset; then
+if test x"${install_sh}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -2564,10 +2462,10 @@ if test x"${install_sh+set}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip".  However 'strip' might not be the right
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
+# will honor the `STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -2586,7 +2484,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2626,7 +2524,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2677,7 +2575,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
         for ac_exec_ext in '' $ac_executable_extensions; do
-          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
           case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
             'mkdir (GNU coreutils) '* | \
             'mkdir (coreutils) '* | \
@@ -2706,6 +2604,12 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -2724,7 +2628,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -2810,7 +2714,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='pygobject'
- VERSION='3.25.1'
+ VERSION='3.3.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2838,22 +2742,12 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-# For better backward compatibility.  To be removed once Automake 1.9.x
-# dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target (and possibly the TAP driver).  The
-# system "awk" is bad on some platforms.
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar  pax cpio none'
-
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
@@ -2861,48 +2755,30 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes.  So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
-  cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present.  This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message.  This
-can help us improve future automake versions.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=yes
+fi
 
-END
-  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
-    echo 'Configuration will proceed anyway, since you have set the' >&2
-    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
-    echo >&2
-  else
-    cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
 
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+  MAINT=$MAINTAINER_MODE_TRUE
 
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
 
-END
-    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
-  fi
-fi
 
+ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
@@ -2975,27 +2851,39 @@ IFS=$ac_save_IFS
 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for build time linking with Python (Win32)" >&5
-$as_echo_n "checking for build time linking with Python (Win32)... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for some Win32 platform" >&5
+$as_echo_n "checking for some Win32 platform... " >&6; }
 case "$host" in
   *-*-mingw*|*-*-cygwin*)
-    os_win32=yes
-    link_python_libs=yes
-    OS_EXT=dll
+    platform_win32=yes
     ;;
-  *-*-darwin*)
-    os_win32=no
-    link_python_libs=no
-    OS_EXT=dylib
+  *)
+    platform_win32=no
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform_win32" >&5
+$as_echo "$platform_win32" >&6; }
+ if test "$platform_win32" = "yes"; then
+  PLATFORM_WIN32_TRUE=
+  PLATFORM_WIN32_FALSE='#'
+else
+  PLATFORM_WIN32_TRUE='#'
+  PLATFORM_WIN32_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for native Win32" >&5
+$as_echo_n "checking for native Win32... " >&6; }
+case "$host" in
+  *-*-mingw*)
+    os_win32=yes
     ;;
   *)
     os_win32=no
-    link_python_libs=no
-    OS_EXT=so
     ;;
 esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $link_python_libs" >&5
-$as_echo "$link_python_libs" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $os_win32" >&5
+$as_echo "$os_win32" >&6; }
  if test "$os_win32" = "yes"; then
   OS_WIN32_TRUE=
   OS_WIN32_FALSE='#'
@@ -3005,95 +2893,29 @@ else
 fi
 
 
-
-
-cat >>confdefs.h <<_ACEOF
-#define OS_EXT "$OS_EXT"
-_ACEOF
-
-
-
-case `pwd` in
-  *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.6'
-macro_revision='2.4.6'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain=$ac_aux_dir/ltmain.sh
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
+  enable_static=no
 fi
 
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO ""
-}
-
-case $ECHO in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
 
 
 
@@ -3105,86 +2927,20 @@ esac
 
 
 
+enable_win32_dll=yes
 
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
-       @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_AS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3192,8 +2948,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3203,10 +2959,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -3214,17 +2970,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3232,8 +2988,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3243,17 +2999,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -3261,23 +3017,22 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    CC=$ac_ct_CC
+    AS=$ac_ct_AS
   fi
 else
-  CC="$ac_cv_prog_CC"
+  AS="$ac_cv_prog_AS"
 fi
 
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_DLLTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3285,8 +3040,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3296,42 +3051,37 @@ IFS=$as_save_IFS
 
 fi
 fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-  fi
 fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
 else
-  ac_prog_rejected=no
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3339,44 +3089,42 @@ done
   done
 IFS=$as_save_IFS
 
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
 fi
 fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
 fi
-if test -z "$CC"; then
+
   if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3384,8 +3132,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3395,32 +3143,28 @@ IFS=$as_save_IFS
 
 fi
 fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-    test -n "$CC" && break
-  done
 fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3428,8 +3172,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3439,21 +3183,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -3461,1602 +3201,1183 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    CC=$ac_ct_CC
+    OBJDUMP=$ac_ct_OBJDUMP
   fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
 fi
 
-fi
+  ;;
+esac
 
+test -z "$AS" && AS=as
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
 
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
 
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
 
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
 
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
 esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
 
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+macro_version='2.4.2'
+macro_revision='1.3337'
 
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
 
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+ltmain="$ac_aux_dir/ltmain.sh"
 
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 
-int
-main ()
-{
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
 else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
 {
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
+    $ECHO ""
 }
 
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
+
+
+
+
+
+
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
 
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
 fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
-    fi
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
-  rm -f core conftest*
-  unset am_i
+IFS=$as_save_IFS
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
 fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
-
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
+done
   done
+IFS=$as_save_IFS
 
-  cd ..
-  rm -rf conftest.dir
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  am_cv_CC_dependencies_compiler_type=none
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
-  # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
   fi
-else
-  ac_cv_path_SED=$SED
 fi
-
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  ac_cv_path_EGREP=$EGREP
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-   fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
-  # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
 
+fi
 
 
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
 
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
 
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
 
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
 else
-  with_gnu_ld=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
 
-ac_prog=ld
-if test yes = "$GCC"; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD=$ac_prog
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
   esac
-elif test yes = "$with_gnu_ld"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+done
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-if ${lt_cv_path_LD+:} false; then :
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
-       ;;
-      *)
-       test yes != "$with_gnu_ld" && break
-       ;;
-      esac
-    fi
-  done
-  IFS=$lt_save_ifs
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
 else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
-LD=$lt_cv_path_LD
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  GCC=
 fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM=$NM
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
 else
-  lt_nm_to_check=${ac_tool_prefix}nm
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
   fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS=$lt_save_ifs
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm=$ac_dir/$lt_tmp_nm
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
-       case $build_os in
-       mingw*) lt_bad_file=conftest.nm/nofile ;;
-       *) lt_bad_file=/dev/null ;;
-       esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
-       *$lt_bad_file* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break 2
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break 2
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS=$lt_save_ifs
-  done
-  : ${lt_cv_path_NM=no}
-fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test no != "$lt_cv_path_NM"; then
-  NM=$lt_cv_path_NM
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
 
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-    test -n "$DUMPBIN" && break
-  done
-fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
-
-
-  test -n "$ac_ct_DUMPBIN" && break
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DUMPBIN=$ac_ct_DUMPBIN
-  fi
 fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols -headers"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test : != "$DUMPBIN"; then
-    NM=$DUMPBIN
-  fi
 fi
-test -z "$NM" && NM=nm
-
-
-
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring=ABCD
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
 
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
     #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test 17 != "$i" # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-fi
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
 
-if test -n "$lt_cv_sys_max_cmd_len"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+  cd ..
+  rm -rf conftest.dir
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+  am_cv_CC_dependencies_compiler_type=none
 fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
 else
-  lt_unset=false
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
 fi
 
 
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
 else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-
+  ac_cv_path_SED=$SED
 fi
 
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
 
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test yes != "$GCC"; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test yes = "$GCC"; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
 
 
 
@@ -5066,338 +4387,325 @@ esac
 
 
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_EGREP=$EGREP
 fi
 
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
-    OBJDUMP=$ac_ct_OBJDUMP
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
+  ac_cv_path_FGREP=$FGREP
 fi
 
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
 
 
+test -z "$GREP" && GREP=grep
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# 'unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# that responds to the $file_magic_cmd with a given extended regex.
-# If you have 'file' or equivalent on your system and you're not sure
-# whether 'pass_all' will *always* work, you probably want this one.
 
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
 
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
 
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
 
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
 
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
 
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
 
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
 
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
 
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
 
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-openbsd* | bitrig*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
 
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
     ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
     ;;
   esac
-  ;;
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
 
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
   ;;
-os2*)
-  lt_cv_deplibs_check_method=pass_all
+*)
+  lt_cv_prog_gnu_ld=no
   ;;
 esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
 fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
@@ -5407,16 +4715,76 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
+if ${ac_cv_prog_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5424,8 +4792,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5435,28 +4803,32 @@ IFS=$as_save_IFS
 
 fi
 fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+    test -n "$DUMPBIN" && break
+  done
 fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5464,8 +4836,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5475,17 +4847,21 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
+
+  test -n "$ac_ct_DUMPBIN" && break
+done
+
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -5493,161 +4869,260 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    DLLTOOL=$ac_ct_DLLTOOL
+    DUMPBIN=$ac_ct_DUMPBIN
   fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
 fi
 
-test -z "$DLLTOOL" && DLLTOOL=dlltool
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
 
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
 
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
 
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh;
-  # decide which one to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
     ;;
   *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
     ;;
   esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd=$ECHO
-  ;;
-esac
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
 
 
 
 
 
 
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
 
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
 
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  lt_unset=false
 fi
 
 
-    test -n "$AR" && break
-  done
-fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-  test -n "$ac_ct_AR" && break
-done
 
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
 esac
-    AR=$ac_ct_AR
-  fi
-fi
 
-: ${AR=ar}
-: ${AR_FLAGS=cru}
 
 
 
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
 
-int
-main ()
-{
+fi
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test 0 -eq "$ac_status"; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-       if test 0 -ne "$ac_status"; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
 
-if test no = "$lt_cv_ar_at_file"; then
-  archiver_list_spec=
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  archiver_list_spec=$lt_cv_ar_at_file
+  lt_cv_ld_reload_flag='-r'
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
 
 
 
@@ -5718,15 +5244,15 @@ fi
 
 
 if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
+if ${ac_cv_prog_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5734,8 +5260,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5745,10 +5271,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -5756,17 +5282,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5774,8 +5300,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -5785,17 +5311,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -5803,162 +5329,241 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    STRIP=$ac_ct_STRIP
+    OBJDUMP=$ac_ct_OBJDUMP
   fi
 else
-  STRIP="$ac_cv_prog_STRIP"
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
 fi
 
-test -z "$STRIP" && STRIP=:
+test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
 
 
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
 
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
 
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
 
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
   else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
   fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
+  ;;
 
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
 
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
 
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-if test -n "$RANLIB"; then
-  case $host_os in
-  bitrig* | openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
+  ;;
 
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
 
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+netbsd* | netbsdelf*-gnu)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
 
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
 
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
 
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
 
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
 
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
 
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 
@@ -5977,304 +5582,251 @@ esac
 
 
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
 
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
-# Allow CC to be a program name with arguments.
-compiler=$CC
 
 
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
 
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[BCDT]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[ABCDGISTW]'
-  ;;
-hpux*)
-  if test ia64 = "$host_cpu"; then
-    symcode='[ABCDEGRST]'
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  ;;
-irix* | nonstopux*)
-  symcode='[BCDEGRST]'
-  ;;
-osf*)
-  symcode='[BCDEGQRST]'
-  ;;
-solaris*)
-  symcode='[BDRT]'
-  ;;
-sco3.2v5*)
-  symcode='[DT]'
-  ;;
-sysv4.2uw2*)
-  symcode='[DT]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[ABDT]'
-  ;;
-sysv4)
-  symcode='[DFNSTU]'
-  ;;
-esac
+done
+  done
+IFS=$as_save_IFS
 
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[ABCDGIRSTW]' ;;
-esac
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
-  # Adjust the below global symbol transforms to fixup imported variables.
-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
-  lt_c_name_lib_hook="\
-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
-else
-  # Disable hooks by default.
-  lt_cv_sys_global_symbol_to_import=
-  lt_cdecl_hook=
-  lt_c_name_hook=
-  lt_c_name_lib_hook=
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
 fi
 
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
-$lt_cdecl_hook\
-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
-$lt_c_name_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
-
-# Transform an extracted symbol line into symbol name with lib prefix and
-# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
-$lt_c_name_lib_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
 
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
 
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
 
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
 
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function,
-    # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK '"\
-"     {last_section=section; section=\$ 3};"\
-"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
-"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
-"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
-"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
-"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
-  # Check to see that the pipe works correctly.
-  pipe_works=no
 
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
 
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
-  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
 
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT_DLSYM_CONST
-#elif defined __osf__
-/* This system does not cope well with relocations in const data.  */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
-#ifdef __cplusplus
-extern "C" {
-#endif
 
-_LT_EOF
-         # Now generate the symbol file.
-         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
 
-         cat <<_LT_EOF >> conftest.$ac_ext
 
-/* The mapping between symbol names and symbols.  */
-LT_DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-         $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-         cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
 
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
 
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-         # Now try linking the two files.
-         mv conftest.$ac_objext conftstm.$ac_objext
-         lt_globsym_save_LIBS=$LIBS
-         lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS=conftstm.$ac_objext
-         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest$ac_exeext; then
-           pipe_works=yes
-         fi
-         LIBS=$lt_globsym_save_LIBS
-         CFLAGS=$lt_globsym_save_CFLAGS
-       else
-         echo "cannot find nm_test_func in $nlist" >&5
-       fi
-      else
-       echo "cannot find nm_test_var in $nlist" >&5
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
-    fi
-  else
-    echo "$progname: failed program was:" >&5
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
 
-  # Do not use the global_symbol_pipe unless it works.
-  if test yes = "$pipe_works"; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
 done
+  done
+IFS=$as_save_IFS
 
 fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
 fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
-  nm_file_list_spec='@'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+  test -n "$ac_ct_AR" && break
+done
 
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
 
+: ${AR=ar}
+: ${AR_FLAGS=cru}
 
 
 
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
 
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
-  withval=$with_sysroot;
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
 else
-  with_sysroot=no
+  archiver_list_spec=$lt_cv_ar_at_file
 fi
 
 
-lt_sysroot=
-case $with_sysroot in #(
- yes)
-   if test yes = "$GCC"; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
-   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
-   ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-: ${lt_DD:=$DD}
-if test -z "$lt_DD"; then
-  ac_path_lt_DD_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-    for ac_prog in dd; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_lt_DD" || continue
-if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
-fi
-      $ac_path_lt_DD_found && break 3
-    done
-  done
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_lt_DD"; then
-    :
-  fi
-else
-  ac_cv_path_lt_DD=$lt_DD
-fi
 
-rm -f conftest.i conftest2.i conftest.out
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-lt_cv_truncate_bin=
-if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
 fi
-rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
-
-
-
-
-
 
 
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
-  enableval=$enable_libtool_lock;
-fi
-
-test no = "$enable_libtool_lock" || enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out what ABI is being produced by ac_compile, and set mode
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-       HPUX_IA64_MODE=32
-       ;;
-      *ELF-64*)
-       HPUX_IA64_MODE=64
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -melf32bsmip"
-         ;;
-       *N32*)
-         LD="${LD-ld} -melf32bmipn32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -melf64bmip"
-       ;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-       *32-bit*)
-         LD="${LD-ld} -32"
-         ;;
-       *N32*)
-         LD="${LD-ld} -n32"
-         ;;
-       *64-bit*)
-         LD="${LD-ld} -64"
-         ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-mips64*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
-      *32-bit*)
-       emul="${emul}32"
-       ;;
-      *64-bit*)
-       emul="${emul}64"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *MSB*)
-       emul="${emul}btsmip"
-       ;;
-      *LSB*)
-       emul="${emul}ltsmip"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *N32*)
-       emul="${emul}n32"
-       ;;
-    esac
-    LD="${LD-ld} -m $emul"
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.  Note that the listed cases only cover the
-  # situations where additional linker options are needed (such as when
-  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
-  # vice versa); the common cases where no linker options are needed do
-  # not appear in the list.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_i386_fbsd"
-           ;;
-         x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         powerpc64le-*linux*)
-           LD="${LD-ld} -m elf32lppclinux"
-           ;;
-         powerpc64-*linux*)
-           LD="${LD-ld} -m elf32ppclinux"
-           ;;
-         s390x-*linux*)
-           LD="${LD-ld} -m elf_s390"
-           ;;
-         sparc64-*linux*)
-           LD="${LD-ld} -m elf32_sparc"
-           ;;
-       esac
-       ;;
-      *64-bit*)
-       case $host in
-         x86_64-*kfreebsd*-gnu)
-           LD="${LD-ld} -m elf_x86_64_fbsd"
-           ;;
-         x86_64-*linux*)
-           LD="${LD-ld} -m elf_x86_64"
-           ;;
-         powerpcle-*linux*)
-           LD="${LD-ld} -m elf64lppc"
-           ;;
-         powerpc-*linux*)
-           LD="${LD-ld} -m elf64ppc"
-           ;;
-         s390*-*linux*|s390*-*tpf*)
-           LD="${LD-ld} -m elf64_s390"
-           ;;
-         sparc*-*linux*)
-           LD="${LD-ld} -m elf64_sparc"
-           ;;
-       esac
-       ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -belf"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_cc_needs_belf=yes
-else
-  lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test yes != "$lt_cv_cc_needs_belf"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS=$SAVE_CFLAGS
-  fi
-  ;;
-*-*solaris*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo 'int i;' > conftest.$ac_ext
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*)
-        case $host in
-        i?86-*-solaris*|x86_64-*-solaris*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        sparc*-*-solaris*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-        esac
-        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
-        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD=${LD-ld}_sol2
-        fi
-        ;;
-      *)
-       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-         LD="${LD-ld} -64"
-       fi
-       ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks=$enable_libtool_lock
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$MANIFEST_TOOL"; then
-  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6702,8 +5953,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6713,108 +5964,47 @@ IFS=$as_save_IFS
 
 fi
 fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
-  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
-  # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
-  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_MANIFEST_TOOL" = x; then
-    MANIFEST_TOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
-  fi
-else
-  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
 fi
 
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&5
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test yes != "$lt_cv_path_mainfest_tool"; then
-  MANIFEST_TOOL=:
-fi
+test -z "$STRIP" && STRIP=:
 
 
 
 
 
 
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6822,8 +6012,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6833,10 +6023,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -6844,17 +6034,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -6862,8 +6052,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -6873,17 +6063,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_DSYMUTIL" = x; then
-    DSYMUTIL=":"
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -6891,379 +6081,58 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    DSYMUTIL=$ac_ct_DSYMUTIL
+    RANLIB=$ac_ct_RANLIB
   fi
 else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+  RANLIB="$ac_cv_prog_RANLIB"
 fi
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+test -z "$RANLIB" && RANLIB=:
 
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
-  if test "x$ac_ct_NMEDIT" = x; then
-    NMEDIT=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
 esac
-    NMEDIT=$ac_ct_NMEDIT
-  fi
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LIPO"; then
-  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
-  ac_ct_LIPO=$LIPO
-  # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_LIPO"; then
-  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_LIPO="lipo"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_LIPO" = x; then
-    LIPO=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    LIPO=$ac_ct_LIPO
-  fi
-else
-  LIPO="$ac_cv_prog_LIPO"
-fi
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL"; then
-  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
-  ac_ct_OTOOL=$OTOOL
-  # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL"; then
-  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL="otool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_OTOOL" = x; then
-    OTOOL=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL=$ac_ct_OTOOL
-  fi
-else
-  OTOOL="$ac_cv_prog_OTOOL"
-fi
 
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OTOOL64"; then
-  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
-  ac_ct_OTOOL64=$OTOOL64
-  # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_OTOOL64"; then
-  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OTOOL64="otool64"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_OTOOL64" = x; then
-    OTOOL64=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    OTOOL64=$ac_ct_OTOOL64
-  fi
-else
-  OTOOL64="$ac_cv_prog_OTOOL64"
-fi
 
 
 
 
 
 
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "$LT_MULTI_MODULE"; then
-       # By default we will add the -single_module flag. You can override
-       # by either setting the environment variable LT_MULTI_MODULE
-       # non-empty at configure time, or by adding -multi_module to the
-       # link flags.
-       rm -rf libconftest.dylib*
-       echo "int foo(void){return 1;}" > conftest.c
-       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
-       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-       # If there is a non-empty error log, and "single_module"
-       # appears in it, assume the flag caused a linker warning
-        if test -s conftest.err && $GREP single_module conftest.err; then
-         cat conftest.err >&5
-       # Otherwise, if the output was created with a 0 exit code from
-       # the compiler, it worked.
-       elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
-         lt_cv_apple_cc_single_mod=yes
-       else
-         cat conftest.err >&5
-       fi
-       rm -rf libconftest.dylib*
-       rm -f conftest.*
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
-int
-main ()
-{
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_ld_exported_symbols_list=yes
-else
-  lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-       LDFLAGS=$save_LDFLAGS
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cru libconftest.a conftest.o" >&5
-      $AR cru libconftest.a conftest.o 2>&5
-      echo "$RANLIB libconftest.a" >&5
-      $RANLIB libconftest.a 2>&5
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -s conftest.err && $GREP force_load conftest.err; then
-       cat conftest.err >&5
-      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
-       lt_cv_ld_force_load=yes
-      else
-       cat conftest.err >&5
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[012][,.]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test yes = "$lt_cv_apple_cc_single_mod"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test yes = "$lt_cv_ld_exported_symbols_list"; then
-      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
-    fi
-    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
 
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
 
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
-    done
-    ac_cv_prog_CPP=$CPP
+  # Check to see that the pipe works correctly.
+  pipe_works=no
 
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
 #endif
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
 
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
 
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+       if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+#ifdef __cplusplus
+extern "C" {
+#endif
 
+_LT_EOF
+         # Now generate the symbol file.
+         eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+         cat <<_LT_EOF >> conftest.$ac_ext
 
-int
-main ()
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
 {
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
 
-  ;
-  return 0;
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
 }
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+#endif
 
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+         # Now try linking the two files.
+         mv conftest.$ac_objext conftstm.$ac_objext
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
+         LIBS="conftstm.$ac_objext"
+         CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+           pipe_works=yes
+         fi
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
 
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  ac_cv_header_stdc=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
 fi
-rm -f conftest*
 
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
 
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
 
-fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
 
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
 
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
 
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
 
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
-fi
 
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
 
-fi
 
-done
 
 
-for ac_header in dlfcn.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
 
-fi
 
-done
 
 
 
 
 
-# Set options
-enable_dlopen=yes
-enable_win32_dll=yes
 
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
 
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
 else
-  AS="$ac_cv_prog_AS"
+  with_sysroot=no
 fi
 
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
 
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
 
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
 
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
 fi
 
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+       HPUX_IA64_MODE="32"
+       ;;
+      *ELF-64*)
+       HPUX_IA64_MODE="64"
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -melf32bsmip"
+         ;;
+       *N32*)
+         LD="${LD-ld} -melf32bmipn32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -melf64bmip"
+       ;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+       *32-bit*)
+         LD="${LD-ld} -32"
+         ;;
+       *N32*)
+         LD="${LD-ld} -n32"
+         ;;
+       *64-bit*)
+         LD="${LD-ld} -64"
+         ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_i386"
+           ;;
+         ppc64-*linux*|powerpc64-*linux*)
+           LD="${LD-ld} -m elf32ppclinux"
+           ;;
+         s390x-*linux*)
+           LD="${LD-ld} -m elf_s390"
+           ;;
+         sparc64-*linux*)
+           LD="${LD-ld} -m elf32_sparc"
+           ;;
+       esac
+       ;;
+      *64-bit*)
+       case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
+         x86_64-*linux*)
+           LD="${LD-ld} -m elf_x86_64"
+           ;;
+         ppc*-*linux*|powerpc*-*linux*)
+           LD="${LD-ld} -m elf64ppc"
+           ;;
+         s390*-*linux*|s390*-*tpf*)
+           LD="${LD-ld} -m elf64_s390"
+           ;;
+         sparc*-*linux*)
+           LD="${LD-ld} -m elf64_sparc"
+           ;;
+       esac
+       ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
 fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7995,8 +6701,8 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -8006,17 +6712,57 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -8024,53 +6770,31 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    OBJDUMP=$ac_ct_OBJDUMP
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
   fi
 else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
 fi
 
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  enable_static=no
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
 fi
 
 
 
 
 
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-
-
-
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
 else
-  enable_shared=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  withval=$with_pic; lt_p=${PACKAGE-default}
-    case $withval in
-    yes|no) pic_mode=$withval ;;
-    *)
-      pic_mode=default
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for lt_pkg in $withval; do
-       IFS=$lt_save_ifs
-       if test "X$lt_pkg" = "X$lt_p"; then
-         pic_mode=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  pic_mode=default
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-
-
-
-
-
-
-
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
-      for pkg in $enableval; do
-       IFS=$lt_save_ifs
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS=$lt_save_ifs
-      ;;
-    esac
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
 else
-  enable_fast_install=yes
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
 fi
 
-
-
-
-
-
-
-
-  shared_archive_member_spec=
-case $host,$enable_shared in
-power*-*-aix[5-9]*,yes)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
-
-# Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
-  withval=$with_aix_soname; case $withval in
-    aix|svr4|both)
-      ;;
-    *)
-      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
-      ;;
-    esac
-    lt_cv_with_aix_soname=$with_aix_soname
-else
-  if ${lt_cv_with_aix_soname+:} false; then :
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_with_aix_soname=aix
-fi
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-    with_aix_soname=$lt_cv_with_aix_soname
 fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
-  if test aix != "$with_aix_soname"; then
-    # For the AIX way of multilib, we name the shared archive member
-    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
-    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
-    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
-    # the AIX toolchain works better with OBJECT_MODE set (default 32).
-    if test 64 = "${OBJECT_MODE-32}"; then
-      shared_archive_member_spec=shr_64
-    else
-      shared_archive_member_spec=shr
-    fi
-  fi
-  ;;
-*)
-  with_aix_soname=aix
-  ;;
-esac
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS=$ltmain
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}"; then
-   setopt NO_GLOB_SUBST
 fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
 else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
 fi
-rmdir .libs 2>/dev/null
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test set != "${COLLECT_NAMES+set}"; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
 
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-old_CC=$CC
-old_CFLAGS=$CFLAGS
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-func_cc_basename $compiler
-cc_basename=$func_cc_basename_result
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/${ac_tool_prefix}file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
-esac
-fi
+IFS=$as_save_IFS
 
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/file"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
-  ;;
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
 fi
 
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
-if test -n "$MAGIC_CMD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
   else
-    MAGIC_CMD=:
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
   fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
 fi
 
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  ;;
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
 
-# Use C for the default configuration in the libtool script
 
-lt_save_CC=$CC
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-# Source file extension for C test sources.
-ac_ext=c
 
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
 
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
 
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
 
 
 
@@ -8521,556 +7277,470 @@ lt_simple_link_test_code='int main(){return(0);}'
 
 
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
 
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
-# Allow CC to be a program name with arguments.
-compiler=$CC
 
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
 
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
 
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
 
 
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
 
-lt_prog_compiler_no_builtin_flag=
 
-if test yes = "$GCC"; then
-  case $cc_basename in
-  nvcc*)
-    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
-  *)
-    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
-  esac
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
-
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&5
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&5
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
 
-if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-    :
-fi
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[012]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
 
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-  if test yes = "$GCC"; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
 
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      lt_prog_compiler_pic='-fPIC'
-      ;;
+    done
+    ac_cv_prog_CPP=$CPP
 
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            lt_prog_compiler_pic='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
-            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
 
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
 
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      lt_prog_compiler_static=
-      ;;
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
 
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-      esac
-      ;;
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
 
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
+int
+main ()
+{
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-    *)
-      lt_prog_compiler_pic='-fPIC'
-      ;;
-    esac
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      lt_prog_compiler_wl='-Xlinker '
-      if test -n "$lt_prog_compiler_pic"; then
-        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
-      fi
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test ia64 = "$host_cpu"; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      else
-       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      case $cc_basename in
-      nagfor*)
-        # NAG Fortran compiler
-        lt_prog_compiler_wl='-Wl,-Wl,,'
-        lt_prog_compiler_pic='-PIC'
-        lt_prog_compiler_static='-Bstatic'
-        ;;
-      esac
-      ;;
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      case $host_os in
-      os2*)
-       lt_prog_compiler_static='$wl-static'
-       ;;
-      esac
-      ;;
+fi
 
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='$wl-a ${wl}archive'
-      ;;
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
 
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-      case $cc_basename in
-      # old Intel for x86_64, which still supported -KPIC.
-      ecc*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='--shared'
-       lt_prog_compiler_static='--static'
-       ;;
-      nagfor*)
-       # NAG Fortran compiler
-       lt_prog_compiler_wl='-Wl,-Wl,,'
-       lt_prog_compiler_pic='-PIC'
-       lt_prog_compiler_static='-Bstatic'
-       ;;
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fPIC'
-       lt_prog_compiler_static='-static'
-       ;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fpic'
-       lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-qpic'
-       lt_prog_compiler_static='-qstaticlink'
-       ;;
-      *)
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
-         # Sun Fortran 8.3 passes all unrecognized flags to the linker
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl=''
-         ;;
-       *Sun\ F* | *Sun*Fortran*)
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Qoption ld '
-         ;;
-       *Sun\ C*)
-         # Sun C 5.9
-         lt_prog_compiler_pic='-KPIC'
-         lt_prog_compiler_static='-Bstatic'
-         lt_prog_compiler_wl='-Wl,'
-         ;;
-        *Intel*\ [CF]*Compiler*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fPIC'
-         lt_prog_compiler_static='-static'
-         ;;
-       *Portland\ Group*)
-         lt_prog_compiler_wl='-Wl,'
-         lt_prog_compiler_pic='-fpic'
-         lt_prog_compiler_static='-Bstatic'
-         ;;
-       esac
-       ;;
-      esac
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-       lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-       lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
+fi
 
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic='-Kconform_pic'
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
 
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
 
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
-    *)
-      lt_prog_compiler_can_build_shared=no
-      ;;
-    esac
-  fi
+fi
 
-case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
+done
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
-if test yes = "$lt_cv_prog_compiler_pic_works"; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
 
 fi
 
+done
 
 
 
 
 
+# Set options
 
 
 
+        enable_dlopen=no
 
 
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
-if test yes = "$lt_cv_prog_compiler_static_works"; then
-    :
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
-    lt_prog_compiler_static=
+  enable_shared=yes
 fi
 
 
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
 
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  pic_mode=default
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
+test -z "$pic_mode" && pic_mode=default
 
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
 
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
-hard_links=nottested
-if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
-  # do not overwrite the value of need_locks provided by the user
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
-  if test no = "$hard_links"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
 
 
 
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  compiler_needs_object=no
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_direct_absolute=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ' (' and ')$', so one must not match beginning or
-  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
-  # as well as any symbol that contains 'd'.
-  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
 
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test yes != "$GCC"; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd* | bitrig*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    link_all_deplibs=no
-    ;;
-  esac
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
-  ld_shlibs=yes
 
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test yes = "$with_gnu_ld"; then
-    case $host_os in
-      aix*)
-       # The AIX port of GNU ld has always aspired to compatibility
-       # with the native linker.  However, as the warning in the GNU ld
-       # block says, versions before 2.19.5* couldn't really create working
-       # shared libraries, regardless of the interface used.
-       case `$LD -v 2>&1` in
-         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
-         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
-         *)
-           lt_use_gnu_ld_interface=yes
-           ;;
-       esac
-       ;;
-      *)
-       lt_use_gnu_ld_interface=yes
-       ;;
-    esac
-  fi
 
-  if test yes = "$lt_use_gnu_ld_interface"; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='$wl'
 
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-    export_dynamic_flag_spec='$wl--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
 
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test ia64 != "$host_cpu"; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
 
-_LT_EOF
-      fi
-      ;;
 
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
 
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       allow_undefined_flag=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
 
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='$wl--export-all-symbols'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
-      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file, use it as
-       # is; otherwise, prepend EXPORTS...
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-          cp $export_symbols $output_objdir/$soname.def;
-        else
-          echo EXPORTS > $output_objdir/$soname.def;
-          cat $export_symbols >> $output_objdir/$soname.def;
-        fi~
-        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
 
-    haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-      link_all_deplibs=yes
-      ;;
 
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      ;;
 
-    interix[3-9]*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-      export_dynamic_flag_spec='$wl-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test linux-dietlibc = "$host_os"; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test no = "$tmp_diet"
-      then
-       tmp_addflag=' $pic_flag'
-       tmp_sharedflag='-shared'
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95* | pgfortran*)
-                                       # Portland Group f77 and f90 compilers
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       lf95*)                          # Lahey Fortran 8.1
-         whole_archive_flag_spec=
-         tmp_sharedflag='--shared' ;;
-        nagfor*)                        # NAGFOR 5.3
-          tmp_sharedflag='-Wl,-shared' ;;
-       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-         tmp_sharedflag='-qmkshrobj'
-         tmp_addflag= ;;
-       nvcc*)  # Cuda Compiler Driver 2.2
-         whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         ;;
-       esac
-       case `$CC -V 2>&1 | sed 5q` in
-       *Sun\ C*)                       # Sun C 5.9
-         whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
-         compiler_needs_object=yes
-         tmp_sharedflag='-G' ;;
-       *Sun\ F*)                       # Sun Fortran 8.3
-         tmp_sharedflag='-G' ;;
-       esac
-       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test yes = "$supports_anon_versioning"; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-            echo "local: *; };" >> $output_objdir/$libname.ver~
-            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
-        fi
 
-       case $cc_basename in
-       tcc*)
-         export_dynamic_flag_spec='-rdynamic'
-         ;;
-       xlf* | bgf* | bgxlf* | mpixlf*)
-         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-         hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test yes = "$supports_anon_versioning"; then
-           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-              echo "local: *; };" >> $output_objdir/$libname.ver~
-              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-         fi
-         ;;
-       esac
-      else
-        ld_shlibs=no
-      fi
-      ;;
 
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
 
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
 
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
 
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
 
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
 
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-         else
-           ld_shlibs=no
-         fi
-       ;;
-      esac
-      ;;
 
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
 
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
-    esac
 
-    if test no = "$ld_shlibs"; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       hardcode_direct=unsupported
-      fi
-      ;;
 
-    aix[4-9]*)
-      if test ia64 = "$host_cpu"; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-       # Without the "-l" option, or with the "-B" option, AIX nm treats
-       # weak defined symbols like other global defined symbols, whereas
-       # GNU nm marks them as "W".
-       # While the 'weak' keyword is ignored in the Export File, we need
-       # it in the Import File for the 'aix-soname' feature, so we have
-       # to replace the "-B" option with "-P" for AIX nm.
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
-       else
-         export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
 
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # have runtime linking enabled, and use it for executables.
-       # For shared libraries, we enable/disable runtime linking
-       # depending on the kind of the shared library created -
-       # when "with_aix_soname,aix_use_runtimelinking" is:
-       # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "aix,yes"  lib.so          shared, rtl:yes, for executables
-       #            lib.a           static archive
-       # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-       #            lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a(lib.so.V) shared, rtl:no
-       # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a           static archive
-       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-         for ld_flag in $LDFLAGS; do
-         if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-           # With aix-soname=svr4, we create the lib.so.V shared archives only,
-           # so we don't have lib.a shared libs to link our executables.
-           # We have to force runtime linking in this case.
-           aix_use_runtimelinking=yes
-           LDFLAGS="$LDFLAGS -Wl,-brtl"
-         fi
-         ;;
-       esac
 
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
+test -z "$LN_S" && LN_S="ln -s"
 
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_direct_absolute=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='$wl-f,'
-      case $with_aix_soname,$aix_use_runtimelinking in
-      aix,*) ;; # traditional, no import file
-      svr4,* | *,yes) # use import file
-       # The Import File defines what to hardcode.
-       hardcode_direct=no
-       hardcode_direct_absolute=no
-       ;;
-      esac
 
-      if test yes = "$GCC"; then
-       case $host_os in aix4.[012]|aix4.[012].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         :
-         else
-         # We have old collect2
-         hardcode_direct=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         hardcode_minus_L=yes
-         hardcode_libdir_flag_spec='-L$libdir'
-         hardcode_libdir_separator=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test yes = "$aix_use_runtimelinking"; then
-         shared_flag="$shared_flag "'$wl-G'
-       fi
-       # Need to ensure runtime linking is disabled for the traditional
-       # shared library, or the linker may eventually find shared libraries
-       # /with/ Import File - we do not want to mix them.
-       shared_flag_aix='-shared'
-       shared_flag_svr4='-shared $wl-G'
-      else
-       # not using gcc
-       if test ia64 = "$host_cpu"; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag='$wl-G'
-         else
-           shared_flag='$wl-bM:SRE'
-         fi
-         shared_flag_aix='$wl-bM:SRE'
-         shared_flag_svr4='$wl-G'
-       fi
-      fi
 
-      export_dynamic_flag_spec='$wl-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
 
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
 
-fi
 
-  aix_libpath=$lt_cv_aix_libpath_
-fi
 
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
-      else
-       if test ia64 = "$host_cpu"; then
-         hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
-         allow_undefined_flag="-z nodefs"
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        if test set = "${lt_cv_aix_libpath+set}"; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  if ${lt_cv_aix_libpath_+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
 
-  lt_aix_libpath_sed='
-      /Import File Strings/,/^$/ {
-         /^0/ {
-             s/^0  *\([^ ]*\) *$/\1/
-             p
-         }
-      }'
-  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_=/usr/lib:/lib
-  fi
 
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
 fi
 
-  aix_libpath=$lt_cv_aix_libpath_
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
 fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
 
-        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         no_undefined_flag=' $wl-bernotok'
-         allow_undefined_flag=' $wl-berok'
-         if test yes = "$with_gnu_ld"; then
-           # We only use this code for GNU lds that support --whole-archive.
-           whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
-         else
-           # Exported symbols can be pulled into shared objects from archives
-           whole_archive_flag_spec='$convenience'
-         fi
-         archive_cmds_need_lc=yes
-         archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-         # -brtl affects multiple linker settings, -berok does not and is overridden later
-         compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
-         if test svr4 != "$with_aix_soname"; then
-           # This is similar to how AIX traditionally builds its shared libraries.
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-         fi
-         if test aix != "$with_aix_soname"; then
-           archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-         else
-           # used by -dlpreopen to get the symbols
-           archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-         fi
-         archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-            archive_expsym_cmds=''
-        ;;
-      m68k)
-            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            hardcode_libdir_flag_spec='-L$libdir'
-            hardcode_minus_L=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
 
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-       # Native MSVC
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       always_export_symbols=yes
-       file_list_spec='@'
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-       archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[   ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([     ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
-            cp "$export_symbols" "$output_objdir/$soname.def";
-            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-          else
-            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-          fi~
-          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-          linknames='
-       # The linker will not automatically build a static lib if we build a DLL.
-       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
-       enable_shared_with_static_runtimes=yes
-       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
-       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-       # Don't use ranlib
-       old_postinstall_cmds='chmod 644 $oldlib'
-       postlink_cmds='lt_outputfile="@OUTPUT@"~
-          lt_tool_outputfile="@TOOL_OUTPUT@"~
-          case $lt_outputfile in
-            *.exe|*.EXE) ;;
-            *)
-              lt_outputfile=$lt_outputfile.exe
-              lt_tool_outputfile=$lt_tool_outputfile.exe
-              ;;
-          esac~
-          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-            $RM "$lt_outputfile.manifest";
-          fi'
-       ;;
-      *)
-       # Assume MSVC wrapper
-       hardcode_libdir_flag_spec=' '
-       allow_undefined_flag=unsupported
-       # Tell ltmain to make .lib files, not .a files.
-       libext=lib
-       # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
-       # FIXME: Setting linknames here is a bad hack.
-       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-       # The linker will automatically build a .lib file if we build a DLL.
-       old_archive_from_new_cmds='true'
-       # FIXME: Should let the user specify the lib program.
-       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-       enable_shared_with_static_runtimes=yes
-       ;;
-      esac
-      ;;
 
-    darwin* | rhapsody*)
 
 
-  archive_cmds_need_lc=no
-  hardcode_direct=no
-  hardcode_automatic=yes
-  hardcode_shlibpath_var=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
 
-  else
-    whole_archive_flag_spec=''
-  fi
-  link_all_deplibs=yes
-  allow_undefined_flag=$_lt_dar_allow_undefined
-  case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test yes = "$_lt_dar_can_shared"; then
-    output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
 
-  else
-  ld_shlibs=no
-  fi
 
-      ;;
 
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
 
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
+# Global variables:
+ofile=libtool
+can_build_shared=yes
 
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2.*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
 
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
+with_gnu_ld="$lt_cv_prog_gnu_ld"
 
-    hpux9*)
-      if test yes = "$GCC"; then
-       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      else
-       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
 
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='$wl-E'
-      ;;
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
 
-    hpux10*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
-       hardcode_direct_absolute=yes
-       export_dynamic_flag_spec='$wl-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-      fi
-      ;;
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 
-    hpux11*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
 
-         # Older versions of the 11.00 compiler do not understand -b yet
-         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_prog_compiler__b=no
-   save_LDFLAGS=$LDFLAGS
-   LDFLAGS="$LDFLAGS -b"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler__b=yes
-       fi
-     else
-       lt_cv_prog_compiler__b=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
 
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
 
-if test yes = "$lt_cv_prog_compiler__b"; then
-    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-         ;;
-       esac
-      fi
-      if test no = "$with_gnu_ld"; then
-       hardcode_libdir_flag_spec='$wl+b $wl$libdir'
-       hardcode_libdir_separator=:
 
-       case $host_cpu in
-       hppa*64*|ia64*)
-         hardcode_direct=no
-         hardcode_shlibpath_var=no
-         ;;
-       *)
-         hardcode_direct=yes
-         hardcode_direct_absolute=yes
-         export_dynamic_flag_spec='$wl-E'
 
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         hardcode_minus_L=yes
-         ;;
-       esac
-      fi
-      ;;
 
-    irix5* | irix6* | nonstopux*)
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-       # This should be the same for all languages, so no per-tag cache variable.
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  save_LDFLAGS=$LDFLAGS
-          LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  lt_cv_irix_exported_symbol=yes
-else
-  lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS=$save_LDFLAGS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
-       if test yes = "$lt_cv_irix_exported_symbol"; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
-       fi
-       link_all_deplibs=no
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<_LT_EOF 1>&2
 
-    linux*)
-      case $cc_basename in
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       ld_shlibs=yes
-       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      esac
-      ;;
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
 
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+_LT_EOF
+         fi ;;
+       esac
       fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
-
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd* | bitrig*)
-      if test -f /usr/libexec/ld.so; then
-       hardcode_direct=yes
-       hardcode_shlibpath_var=no
-       hardcode_direct_absolute=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-         export_dynamic_flag_spec='$wl-E'
-       else
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         hardcode_libdir_flag_spec='$wl-rpath,$libdir'
-       fi
-      else
-       ld_shlibs=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      shrext_cmds=.dll
-      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      enable_shared_with_static_runtimes=yes
-      ;;
-
-    osf3*)
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      hardcode_libdir_separator=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test yes = "$GCC"; then
-       allow_undefined_flag=' $wl-expect_unresolved $wl\*'
-       archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
-      ;;
-
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test yes = "$GCC"; then
-       wlarc='$wl'
-       archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='$wl'
-         archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-       # The compiler driver will combine and reorder linker options,
-       # but understands '-z linker_flag'.  GCC discards it without '$wl',
-       # but is careful enough not to reorder.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test yes = "$GCC"; then
-         whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
-       else
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
-       fi
-       ;;
-      esac
-      link_all_deplibs=yes
-      ;;
-
-    sunos4*)
-      if test sequent = "$host_vendor"; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
 
-    sysv4)
-      case $host_vendor in
-       sni)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         reload_cmds='$CC -r -o $output$reload_objs'
-         hardcode_direct=no
-        ;;
-       motorola)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
-      ;;
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
-      ;;
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_shlibpath_var=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       ld_shlibs=yes
-      fi
-      ;;
+  else
+    MAGIC_CMD=:
+  fi
+fi
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='$wl-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
+  fi
+  ;;
+esac
 
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
+# Use C for the default configuration in the libtool script
 
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We CANNOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='$wl-z,text'
-      allow_undefined_flag='$wl-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='$wl-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='$wl-Bexport'
-      runpath_var='LD_RUN_PATH'
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-      if test yes = "$GCC"; then
-       archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
 
-    uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
+# Source file extension for C test sources.
+ac_ext=c
 
-    *)
-      ld_shlibs=no
-      ;;
-    esac
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
 
-    if test sni = "$host_vendor"; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       export_dynamic_flag_spec='$wl-Blargedynsym'
-       ;;
-      esac
-    fi
-  fi
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test no = "$ld_shlibs" && can_build_shared=no
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
 
-with_gnu_ld=$with_gnu_ld
 
 
 
 
 
 
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
 
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
 
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
 
 
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
 
+lt_prog_compiler_no_builtin_flag=
 
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
 
-  if test yes,yes = "$GCC,$enable_shared"; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  $RM conftest*
-       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } 2>conftest.err; then
-         soname=conftest
-         lib=conftest
-         libobjs=conftest.$ac_objext
-         deplibs=
-         wl=$lt_prog_compiler_wl
-         pic_flag=$lt_prog_compiler_pic
-         compiler_flags=-v
-         linker_flags=-v
-         verstring=
-         output_objdir=.
-         libname=conftest
-         lt_save_allow_undefined_flag=$allow_undefined_flag
-         allow_undefined_flag=
-         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-         then
-           lt_cv_archive_cmds_need_lc=no
-         else
-           lt_cv_archive_cmds_need_lc=yes
-         fi
-         allow_undefined_flag=$lt_save_allow_undefined_flag
-       else
-         cat conftest.err 1>&5
-       fi
-       $RM conftest*
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
-      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
 
+fi
 
 
 
 
 
 
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
 
 
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
 
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
 
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
 
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
 
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
 
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='-fPIC'
+       ;;
+      esac
+      ;;
 
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
 
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
 
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
 
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
 
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
 
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
+      else
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
 
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
 
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
 
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
 
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='--shared'
+       lt_prog_compiler_static='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       lt_prog_compiler_wl='-Wl,-Wl,,'
+       lt_prog_compiler_pic='-PIC'
+       lt_prog_compiler_static='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-qpic'
+       lt_prog_compiler_static='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       *Sun\ F* | *Sun*Fortran*)
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Qoption ld '
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+        *Intel*\ [CF]*Compiler*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fPIC'
+         lt_prog_compiler_static='-static'
+         ;;
+       *Portland\ Group*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fpic'
+         lt_prog_compiler_static='-Bstatic'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
 
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
 
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
 
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
 
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
 
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
 
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
 
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
 
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
 
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
 
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
 
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
 
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
 
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
 
+fi
 
 
 
@@ -10687,8 +8594,46 @@ esac
 
 
 
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
 
 
 
@@ -10696,598 +8641,634 @@ esac
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
 
 
 
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
 
-if test yes = "$GCC"; then
-  case $host_os in
-    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
-    *) lt_awk_arg='/^libraries:/' ;;
-  esac
   case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
-    *) lt_sed_strip_eq='s|=/|/|g' ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
     ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
     ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary...
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  # ...but if some path component already ends with the multilib dir we assume
-  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
-  case "$lt_multi_os_dir; $lt_search_path_spec " in
-  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
-    lt_multi_os_dir=
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
     ;;
   esac
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
-    elif test -n "$lt_multi_os_dir"; then
-      test -d "$lt_sys_path" && \
-       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS = " "; FS = "/|\n";} {
-  lt_foo = "";
-  lt_count = 0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo = "/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[lt_foo]++; }
-  if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=.so
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
 
+  ld_shlibs=yes
 
-case $host_os in
-aix3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
-  shlibpath_var=LIBPATH
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
 
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
-  ;;
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
 
-aix[4-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
-    # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
     case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
       fi
       ;;
-    esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
       ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a(lib.so.V)'
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
       ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs=no
+      fi
       ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
       ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
-    esac
-    shlibpath_var=LIBPATH
-  fi
-  ;;
 
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
-beos*)
-  library_names_spec='$libname$shared_ext'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
 
-bsdi[45]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
 
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
 
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
 
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
 
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
       ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
 
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs=no
+         fi
+       ;;
+      esac
       ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
       ;;
+
     *)
-      sys_lib_search_path_spec=$LIB
-      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+       ld_shlibs=no
       fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
       ;;
     esac
 
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
   else
+    # PORTME fill in a description of your system's linker (not GNU ld)
     case $host_os in
-    freebsd[23].*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-      need_version=yes
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
       ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2.*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
 
-haiku*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+       # On IA64, the linker does run time linking by default, so we don't
+       # have to do anything special.
+       aix_use_runtimelinking=no
+       exp_sym_flag='-Bexport'
+       no_entry_flag=""
+      else
+       # If we're using GNU nm, then we don't want the "-C" option.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
 
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
-    fi
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
 
-interix[3-9]*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
 
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
-               version_type=linux # correct to gnu/linux during the next big refactor
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  hardcode_libdir_flag_spec='-L$libdir'
-  ;;
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
 
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
+      if test "$GCC" = yes; then
+       case $host_os in aix4.[012]|aix4.[012].*)
+       # We only want to do this on AIX 4.2 and lower, the check
+       # below for broken collect2 doesn't work under 4.3+
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+         # We have reworked collect2
+         :
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+       link_all_deplibs=no
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
 
-  # Some binutils ld are patched to set DT_RUNPATH
-  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
-        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -11299,332 +9280,664 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
-  lt_cv_shlibpath_overrides_runpath=yes
-fi
+
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
 
 fi
 
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
+int
+main ()
+{
 
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    dynamic_linker='NetBSD ld.elf_so'
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd* | bitrig*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
-  need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
   fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
 
-os2*)
-  libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
-  need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
-  ;;
+fi
 
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  ;;
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
-rdos*)
-  dynamic_linker=no
-  ;;
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           whole_archive_flag_spec='$convenience'
+         fi
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
 
-solaris*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
       ;;
-  esac
-  ;;
 
-sysv4*MP*)
-  if test -d /usr/nec; then
-    version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
 
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       always_export_symbols=yes
+       file_list_spec='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+       enable_shared_with_static_runtimes=yes
+       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       old_postinstall_cmds='chmod 644 $oldlib'
+       postlink_cmds='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
        ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux # correct to gnu/linux during the next big refactor
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test no = "$dynamic_linker" && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
-fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
-fi
-
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
-
-
-
-
-
-
-
-
-
+      *)
+       # Assume MSVC wrapper
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       old_archive_from_new_cmds='true'
+       # FIXME: Should let the user specify the lib program.
+       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       enable_shared_with_static_runtimes=yes
+       ;;
+      esac
+      ;;
 
+    darwin* | rhapsody*)
 
 
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
 
+  else
+  ld_shlibs=no
+  fi
 
+      ;;
 
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
 
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
 
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
 
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
+       hardcode_direct=yes
+       hardcode_direct_absolute=yes
+       export_dynamic_flag_spec='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       hardcode_minus_L=yes
+      fi
+      ;;
 
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
 
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
 
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
 
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
 
+       case $host_cpu in
+       hppa*64*|ia64*)
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       *)
+         hardcode_direct=yes
+         hardcode_direct_absolute=yes
+         export_dynamic_flag_spec='${wl}-E'
 
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
 
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
 
+    netbsd* | netbsdelf*-gnu)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
 
+    *nto* | *qnx*)
+      ;;
 
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       hardcode_direct_absolute=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       ld_shlibs=no
+      fi
+      ;;
 
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
 
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
 
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
 
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs=yes
+      ;;
 
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
 
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
 
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
 
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
 
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
 
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
 
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
 
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
 
+    *)
+      ld_shlibs=no
+      ;;
+    esac
 
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
 
+with_gnu_ld=$with_gnu_ld
 
 
 
@@ -11640,9 +9953,74 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
 
 
 
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
 
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl
+         pic_flag=$lt_prog_compiler_pic
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag
+         allow_undefined_flag=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc=no
+         else
+           lt_cv_archive_cmds_need_lc=yes
+         fi
+         allow_undefined_flag=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
 
 
 
@@ -11669,560 +10047,68 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test yes = "$hardcode_automatic"; then
 
-  # We can hardcode non-existent directories.
-  if test no != "$hardcode_direct" &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
-     test no != "$hardcode_minus_L"; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
 
-if test relink = "$hardcode_action" ||
-   test yes = "$inherit_rpath"; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
 
 
 
 
 
 
-  if test yes != "$enable_dlopen"; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
 
-  case $host_os in
-  beos*)
-    lt_cv_dlopen=load_add_on
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
 
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen=LoadLibrary
-    lt_cv_dlopen_libs=
-    ;;
 
-  cygwin*)
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    ;;
 
-  darwin*)
-    # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
 
-    lt_cv_dlopen=dyld
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
 
-fi
 
-    ;;
 
-  tpf*)
-    # Don't try to run any link tests for TPF.  We know it's impossible
-    # because TPF is a cross-compiler, and we know how we open DSOs.
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=no
-    ;;
 
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
-fi
 
 
-fi
 
 
-fi
 
 
-fi
 
 
-fi
 
 
-fi
 
-    ;;
-  esac
 
-  if test no = "$lt_cv_dlopen"; then
-    enable_dlopen=no
-  else
-    enable_dlopen=yes
-  fi
 
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS=$CPPFLAGS
-    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS=$LDFLAGS
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS=$LIBS
-    LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
 
-#include <stdio.h>
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
 
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
 
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
 
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
 
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
 
-    if test yes = "$lt_cv_dlopen_self"; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test yes = "$cross_compiling"; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
 
-#include <stdio.h>
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
 
-/* When -fvisibility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
 
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
 
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
 
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
 
-    CPPFLAGS=$save_CPPFLAGS
-    LDFLAGS=$save_LDFLAGS
-    LIBS=$save_LIBS
-    ;;
-  esac
 
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
 
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
 
 
 
 
 
 
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP"; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
 
 
 
 
 
 
-  # Report what library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test no = "$can_build_shared" && enable_shared=no
 
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test yes = "$enable_shared" && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
 
-  aix[4-9]*)
-    if test ia64 != "$host_cpu"; then
-      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-      yes,aix,yes) ;;                  # shared object as lib.so file only
-      yes,svr4,*) ;;                   # shared object as lib.so archive member only
-      yes,*) enable_static=no ;;       # shared object in lib.a archive as well
-      esac
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test yes = "$enable_shared" || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
 
 
 
 
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CC=$lt_save_CC
 
 
 
@@ -12348,477 +10162,518 @@ CC=$lt_save_CC
 
 
 
-        ac_config_commands="$ac_config_commands libtool"
 
 
 
 
-# Only expand once:
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_strerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_strerror+:} false; then :
 
-else
-  ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
 
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
 
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
 
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
   else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+       :
+      else
+       can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
   fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  ;;
 
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
 
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
 
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
 
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
 
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
 
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
 
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
 
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
 
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
 
-  test -n "$ac_ct_CC" && break
-done
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
 
-fi
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
 
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
   fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
 
-int
-main ()
-{
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
 
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -12829,829 +10684,2413 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
   else
-    CFLAGS="-g"
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
   fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
   else
-    CFLAGS=
+    shlibpath_overrides_runpath=yes
   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
+  ;;
 
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+: ${CONFIG_LT=./config.lt}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
+$as_echo "$as_me: creating $CONFIG_LT" >&6;}
+as_write_fail=0
+cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## --------------------------------- ##
+## Main body of "$CONFIG_LT" script. ##
+## --------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $0 [OPTIONS]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+pygobject config.lt 3.3.1
+configured by $0, generated by GNU Autoconf 2.68.
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $# != 0
+do
+  case $1 in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) as_fn_error $? "unrecognized option: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+
+    *) as_fn_error $? "unrecognized argument: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec 6>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
 fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
 
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
 
-fi
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
+_LTEOF
 
-  ;
-  return 0;
-}
-_ACEOF
-  # Make sure it works both with $CC and with simple cc.
-  # Following AC_PROG_CC_C_O, we do the test twice because some
-  # compilers refuse to overwrite an existing .o file with -o,
-  # though they will create one.
-  am_cv_prog_cc_c_o=yes
-  for am_i in 1 2; do
-    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && test -f conftest2.$ac_objext; then
-      : OK
-    else
-      am_cv_prog_cc_c_o=no
-      break
+cat >>"$CONFIG_LT" <<\_LTEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
+$as_echo "$as_me: creating $ofile" >&6;}
+
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
     fi
-  done
-  rm -f core conftest*
-  unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
 
-depcc="$CC"   am_compiler_list=
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named 'D' -- because '-MD' means "put the output
-  # in D".
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
 
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
-      # Solaris 10 /bin/sh.
-      echo '/* dummy */' > sub/conftst$i.h
-    done
-    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+# The names of the tagged configurations supported by this script.
+available_tags=""
 
-    # We check with '-c' and '-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle '-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs.
-    am__obj=sub/conftest.${OBJEXT-o}
-    am__minus_obj="-o $am__obj"
-    case $depmode in
-    gcc)
-      # This depmode causes a compiler race in universal mode.
-      test "$am__universal" = false || continue
-      ;;
-    nosideeffect)
-      # After this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested.
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok '-c -o', but also, the minuso test has
-      # not run yet.  These depmodes are late enough in the game, and
-      # so weak that their functioning should not be impacted.
-      am__obj=conftest.${OBJEXT-o}
-      am__minus_obj=
-      ;;
-    none) break ;;
-    esac
-    if depmode=$depmode \
-       source=sub/conftest.c object=$am__obj \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
+# ### BEGIN LIBTOOL CONFIG
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
 
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
+# A literal string matcher.
+FGREP=$lt_FGREP
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
 
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
 
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
 
+# Object file suffix (normally "o").
+objext=$ac_objext
 
+# Executable file suffix (normally "").
+exeext=$exeext
 
-# option to specify python interpreter to use; this just sets $PYTHON, so that
-# we will fallback to reading $PYTHON if --with-python is not given, and
-# python.m4 will get the expected input
+# whether the shell understands "unset".
+lt_unset=$lt_unset
 
-# Check whether --with-python was given.
-if test "${with_python+set}" = set; then :
-  withval=$with_python; PYTHON="$withval"
-fi
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
 
-if test x"$PYTHON" = xyes; then
-       as_fn_error $? "--with-python option requires a path or program argument" "$LINENO" 5
-fi
-if test -n "$PYTHON" && ! which "$PYTHON"; then
-       as_fn_error $? "Python interpreter $PYTHON does not exist" "$LINENO" 5
-fi
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
 
-# check that we have the minimum version of python necessary to build
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
 
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
 
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
 
-        if test -n "$PYTHON"; then
-      # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.7" >&5
-$as_echo_n "checking whether $PYTHON version >= 2.7... " >&6; }
-      prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  as_fn_error $? "too old" "$LINENO" 5
-fi
-      am_display_PYTHON=$PYTHON
-    else
-      # Otherwise, try each interpreter until we find one that satisfies
-      # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.7... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
 
-       for am_cv_pathless_PYTHON in python3 python3.3 python3.2 python3.1 python2 python2.7 python none; do
-         test "$am_cv_pathless_PYTHON" = none && break
-         prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
-   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  break
-fi
-       done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
-      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-      if test "$am_cv_pathless_PYTHON" = none; then
-       PYTHON=:
-      else
-        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
-set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
 
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
 
+# The archiver.
+AR=$lt_AR
 
-      fi
-      am_display_PYTHON=$am_cv_pathless_PYTHON
-    fi
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
 
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
 
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
+# A symbol stripping program.
+STRIP=$lt_STRIP
 
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
 
+# A C compiler.
+LTCC=$lt_CC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
 
-  PYTHON_PREFIX='${prefix}'
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
 
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
 
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
 
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
 
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX'))" 2>/dev/null ||
-     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
 
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
 
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
 
-  pkgpythondir=\${pythondir}/$PACKAGE
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
 
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX'))" 2>/dev/null ||
-     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
 
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
 
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
 
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
 
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
 
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
 
-  fi
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
 
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
-# check if we are building for python 3
-prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.0'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  build_py3k=true
-else
-  build_py3k=false
-fi
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
 
-# if building for python 3 make sure we have the minimum version supported
-if test $build_py3k = true ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $PYTHON >= 3.3" >&5
-$as_echo_n "checking for $PYTHON >= 3.3... " >&6; }
-  prog="import sys
-# split strings by '.' and convert to numeric.  Append some zeros
-# because we need at least 4 digits for the hex conversion.
-# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.3'.split('.'))) + [0, 0, 0]
-minverhex = 0
-# xrange is not present in Python 3.0 and range returns an iterator
-for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
-sys.exit(sys.hexversion < minverhex)"
-  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
-   ($PYTHON -c "$prog") >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  as_fn_error $? "too old" "$LINENO" 5
-fi
-fi
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
 
-# - 'SO' for PyPy, CPython 2.7-3.2
-# - 'EXT_SUFFIX' for CPython3.3+ (http://bugs.python.org/issue16754)
-# - fallback to '.so'
-PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfig.get_config_var; sys.stdout.write(get('EXT_SUFFIX') or get('SO') or '.so');"`
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
 
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
 
 
+# The linker used to build libraries.
+LD=$lt_LD
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
 
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
 
+# A language specific compiler.
+CC=$lt_compiler
 
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
 
-        # Find any Python interpreter.
-    if test -z "$PYTHON"; then
-      for ac_prog in python3 python3.3 python3.2 python3.1 python2 python2.7 python
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
 
-  ;;
-esac
-fi
-PYTHON=$ac_cv_path_PYTHON
-if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
 
-  test -n "$PYTHON" && break
-done
-test -n "$PYTHON" || PYTHON=":"
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
 
-    fi
-    am_display_PYTHON=python
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
 
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
 
-  if test "$PYTHON" = :; then
-      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
-  else
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
 
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
-  PYTHON_VERSION=$am_cv_python_version
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
 
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
 
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
 
-  PYTHON_PREFIX='${prefix}'
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
 
-  PYTHON_EXEC_PREFIX='${exec_prefix}'
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
 
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
 
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
-  PYTHON_PLATFORM=$am_cv_python_platform
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
 
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-  # Just factor out some code duplication.
-  am_python_setup_sysconfig="\
-import sys
-# Prefer sysconfig over distutils.sysconfig, for better compatibility
-# with python 3.x.  See automake bug#10227.
-try:
-    import sysconfig
-except ImportError:
-    can_use_sysconfig = 0
-else:
-    can_use_sysconfig = 1
-# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-# <https://github.com/pypa/virtualenv/issues/118>
-try:
-    from platform import python_implementation
-    if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
-        can_use_sysconfig = 0
-except ImportError:
-    pass"
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
-     then
-       am_py_prefix=$ac_default_prefix
-     else
-       am_py_prefix=$prefix
-     fi
-     am_cv_python_pythondir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pythondir in
-     $am_py_prefix*)
-       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
-       ;;
-     *)
-       case $am_py_prefix in
-         /usr|/System*) ;;
-         *)
-         am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-         ;;
-       esac
-       ;;
-     esac
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
-  pythondir=$am_cv_python_pythondir
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
 
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
 
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
 
-  pkgpythondir=\${pythondir}/$PACKAGE
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
 
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
-     then
-       am_py_exec_prefix=$am_py_prefix
-     else
-       am_py_exec_prefix=$exec_prefix
-     fi
-     am_cv_python_pyexecdir=`$PYTHON -c "
-$am_python_setup_sysconfig
-if can_use_sysconfig:
-    sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
-    from distutils import sysconfig
-    sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
-     case $am_cv_python_pyexecdir in
-     $am_py_exec_prefix*)
-       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
-       ;;
-     *)
-       case $am_py_exec_prefix in
-         /usr|/System*) ;;
-         *)
-          am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
-          ;;
-       esac
-       ;;
-     esac
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
-  pyexecdir=$am_cv_python_pyexecdir
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
 
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
 
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
 
-  pkgpyexecdir=\${pyexecdir}/$PACKAGE
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
 
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
 
-  fi
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
 
+# ### END LIBTOOL CONFIG
 
+_LT_EOF
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5
-$as_echo_n "checking for headers required to compile python extensions... " >&6; }
-if test "x$PYTHON_INCLUDES" = x; then
-  PYTHON_CONFIG=`which $PYTHON`-config
-  if test -x "$PYTHON_CONFIG"; then
-    PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
-  else
-    PYTHON_INCLUDES=`$PYTHON -c "import distutils.sysconfig, sys; sys.stdout.write(distutils.sysconfig.get_python_inc(True))"`
-    PYTHON_INCLUDES="-I$PYTHON_INCLUDES"
-  fi
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
 fi
+_LT_EOF
+    ;;
+  esac
 
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <Python.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
-$as_echo "found" >&6; }
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-as_fn_error $? "Python headers not found" "$LINENO" 5
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-CPPFLAGS="$save_CPPFLAGS"
+ltmain="$ac_aux_dir/ltmain.sh"
 
-if test "x$link_python_libs" = "xyes"; then
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libraries required to embed python" >&5
-$as_echo_n "checking for libraries required to embed python... " >&6; }
-py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
-if test "x$PYTHON_LIBS" = x; then
-  PYTHON_CONFIG=`which $PYTHON`-config
-  if test -x "$PYTHON_CONFIG"; then
-    PYTHON_LIBS=`$PYTHON_CONFIG --ldflags 2>/dev/null`
-  else
-    PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
-  fi
-fi
-if test "x$PYTHON_LIB_LOC" = x; then
-       PYTHON_LIB_LOC="${py_prefix}/lib"
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
 fi
 
 
-save_LIBS="$LIBS"
-LIBS="$LIBS $PYTHON_LIBS"
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+as_fn_exit 0
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec 5>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec 5>>config.log
+$lt_cl_success || as_fn_exit 1
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if ${ac_cv_search_strerror+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13661,132 +13100,71 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char Py_Initialize ();
+char strerror ();
 int
 main ()
 {
-return Py_Initialize ();
+return strerror ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-else
-           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; as_fn_error $? "Python libs not found. Windows requires Python modules to be explicitly linked to libpython." "$LINENO" 5
+for ac_lib in '' cposix; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_strerror=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-
-fi
-
-export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
-
-# Check whether --enable-glibtest was given.
-if test "${enable_glibtest+set}" = set; then :
-  enableval=$enable_glibtest;
-else
-  enable_glibtest=yes
+    conftest$ac_exeext
+  if ${ac_cv_search_strerror+:} false; then :
+  break
 fi
-
-
-  pkg_config_args=glib-2.0
-  for module in . gobject $extra_mods
-  do
-      case "$module" in
-         gmodule)
-             pkg_config_args="$pkg_config_args gmodule-2.0"
-         ;;
-         gmodule-no-export)
-             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
-         ;;
-         gobject)
-             pkg_config_args="$pkg_config_args gobject-2.0"
-         ;;
-         gthread)
-             pkg_config_args="$pkg_config_args gthread-2.0"
-         ;;
-         gio*)
-             pkg_config_args="$pkg_config_args $module-2.0"
-         ;;
-      esac
-  done
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-       if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
 done
-  done
-IFS=$as_save_IFS
+if ${ac_cv_search_strerror+:} false; then :
 
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_search_strerror=no
 fi
-
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
   done
 IFS=$as_save_IFS
 
-  ;;
-esac
 fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
 
 fi
-if test -n "$PKG_CONFIG"; then
-       _pkg_min_version=0.16
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       else
-               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-               PKG_CONFIG=""
-       fi
-fi
-
-  no_glib=""
-
-  if test "x$PKG_CONFIG" = x ; then
-    no_glib=yes
-    PKG_CONFIG=no
-  fi
-
-  min_glib_version=2.38.0
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
-$as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
-
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
-         enable_glibtest=no
-    fi
-
-    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
-         :
-    else
-         no_glib=yes
-    fi
-  fi
-
-  if test x"$no_glib" = x ; then
-    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
-    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
-    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
-    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
-
-    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
-    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
-    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
-    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
-    if test "x$enable_glibtest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GLIB_CFLAGS"
-      LIBS="$GLIB_LIBS $LIBS"
-      rm -f conf.glibtest
-      if test "$cross_compiling" = yes; then :
-  echo $ac_n "cross compiling; assumed OK... $ac_c"
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main ()
-{
-  unsigned int major, minor, micro;
-
-  fclose (fopen ("conf.glibtest", "w"));
-
-  if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_glib_version");
-     exit(1);
-   }
-
-  if ((glib_major_version != $glib_config_major_version) ||
-      (glib_minor_version != $glib_config_minor_version) ||
-      (glib_micro_version != $glib_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
-             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
-             glib_major_version, glib_minor_version, glib_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    }
-  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
-          (glib_minor_version != GLIB_MINOR_VERSION) ||
-           (glib_micro_version != GLIB_MICRO_VERSION))
-    {
-      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
-            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-            glib_major_version, glib_minor_version, glib_micro_version);
-    }
-  else
-    {
-      if ((glib_major_version > major) ||
-        ((glib_major_version == major) && (glib_minor_version > minor)) ||
-        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
-               glib_major_version, glib_minor_version, glib_micro_version);
-        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
-              major, minor, micro);
-        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  no_glib=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_glib" = x ; then
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
-$as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; }
-     :
-  else
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
-     else
-       if test -f conf.glibtest ; then
-        :
-       else
-          echo "*** Could not run GLIB test program, checking why..."
-          ac_save_CFLAGS="$CFLAGS"
-          ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GLIB_CFLAGS"
-          LIBS="$LIBS $GLIB_LIBS"
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#include <glib.h>
-#include <stdio.h>
-
-int
-main ()
-{
- return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-   echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
-          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-         echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
-   echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GLIB_CFLAGS=""
-     GLIB_LIBS=""
-     GLIB_GENMARSHAL=""
-     GOBJECT_QUERY=""
-     GLIB_MKENUMS=""
-     GLIB_COMPILE_RESOURCES=""
-     as_fn_error $? "maybe you want the pygobject-2-4 branch?" "$LINENO" 5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
+done
+  done
+IFS=$as_save_IFS
 
-
-
-
-
-
-  rm -f conf.glibtest
-
-if test -n "$export_dynamic"; then
-  GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-PYTHON_VALGRIND_SUPP=`$PYTHON -c "import sys; sys.stdout.write('python' + sys.version.__getitem__(0))"`
-
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFI" >&5
-$as_echo_n "checking for FFI... " >&6; }
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
 
-if test -n "$FFI_CFLAGS"; then
-    pkg_cv_FFI_CFLAGS="$FFI_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libffi >= 3.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  pkg_failed=yes
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
 fi
- else
-    pkg_failed=untried
 fi
-if test -n "$FFI_LIBS"; then
-    pkg_cv_FFI_LIBS="$FFI_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libffi >= 3.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi >= 3.0" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-        _pkg_short_errors_supported=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-        if test $_pkg_short_errors_supported = yes; then
-               FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
-        else
-               FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$FFI_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (libffi >= 3.0) were not met:
 
-$FFI_PKG_ERRORS
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-Alternatively, you may set the environment variables FFI_CFLAGS
-and FFI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+fi
 
-Alternatively, you may set the environment variables FFI_CFLAGS
-and FFI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-       FFI_CFLAGS=$pkg_cv_FFI_CFLAGS
-       FFI_LIBS=$pkg_cv_FFI_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-LIBFFI_PC=libffi
 
 
+  test -n "$ac_ct_CC" && break
+done
 
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
 
+fi
 
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5
-$as_echo_n "checking for GIO... " >&6; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
-if test -n "$GIO_CFLAGS"; then
-    pkg_cv_GIO_CFLAGS="$GIO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.38.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.38.0") 2>&5
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.38.0" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  pkg_failed=yes
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
 fi
- else
-    pkg_failed=untried
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
 fi
-if test -n "$GIO_LIBS"; then
-    pkg_cv_GIO_LIBS="$GIO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.38.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.38.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.38.0" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
 else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
+  GCC=
 fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
-
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
 else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.38.0" 2>&1`
-        else
-               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.38.0" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$GIO_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (gio-2.0 >= 2.38.0) were not met:
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-$GIO_PKG_ERRORS
+int
+main ()
+{
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-Alternatively, you may set the environment variables GIO_CFLAGS
-and GIO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-Alternatively, you may set the environment variables GIO_CFLAGS
-and GIO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
+int
+main ()
+{
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
 else
-       GIO_CFLAGS=$pkg_cv_GIO_CFLAGS
-       GIO_LIBS=$pkg_cv_GIO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 
-# Check whether --enable-cairo was given.
-if test "${enable_cairo+set}" = set; then :
-  enableval=$enable_cairo; enable_cairo=$enableval
-else
-  enable_cairo=yes
 fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GI" >&5
-$as_echo_n "checking for GI... " >&6; }
+depcc="$CC"   am_compiler_list=
 
-if test -n "$GI_CFLAGS"; then
-    pkg_cv_GI_CFLAGS="$GI_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
-if test -n "$GI_LIBS"; then
-    pkg_cv_GI_LIBS="$GI_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
-fi
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
 
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
 
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
+  cd ..
+  rm -rf conftest.dir
 else
-        _pkg_short_errors_supported=no
+  am_cv_CC_dependencies_compiler_type=none
 fi
-        if test $_pkg_short_errors_supported = yes; then
-               GI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-" 2>&1`
-        else
-               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$GI_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (glib-2.0 >= 2.38.0
-    gobject-introspection-1.0 >= 1.46.0
-) were not met:
-
-$GI_PKG_ERRORS
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
-Alternatively, you may set the environment variables GI_CFLAGS
-and GI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
 
-Alternatively, you may set the environment variables GI_CFLAGS
-and GI_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-       GI_CFLAGS=$pkg_cv_GI_CFLAGS
-       GI_LIBS=$pkg_cv_GI_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-
-
-
-
-                # Check whether --enable-introspection was given.
-if test "${enable_introspection+set}" = set; then :
-  enableval=$enable_introspection;
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  enable_introspection=auto
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gobject-introspection" >&5
-$as_echo_n "checking for gobject-introspection... " >&6; }
-
-        case $enable_introspection in #(
-  no) :
-            found_introspection="no (disabled, use --enable-introspection to enable)"
-     ;; #(
-      yes) :
-            if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  :
-else
-  as_fn_error $? "gobject-introspection-1.0 is not installed" "$LINENO" 5
 fi
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 1.46.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 1.46.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  found_introspection=yes
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
-  as_fn_error $? "You need to have gobject-introspection >= 1.46.0 installed to build pygobject" "$LINENO" 5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
 fi
-     ;; #(
-      auto) :
-            if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-introspection-1.0 >= 1.46.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gobject-introspection-1.0 >= 1.46.0") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  found_introspection=yes
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  found_introspection=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-               enable_introspection=$found_introspection
-     ;; #(
-  *) :
-                as_fn_error $? "invalid argument passed to --enable-introspection, should be one of [no/auto/yes]" "$LINENO" 5
-     ;;
-esac
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found_introspection" >&5
-$as_echo "$found_introspection" >&6; }
-
-    INTROSPECTION_SCANNER=
-    INTROSPECTION_COMPILER=
-    INTROSPECTION_GENERATE=
-    INTROSPECTION_GIRDIR=
-    INTROSPECTION_TYPELIBDIR=
-    if test "x$found_introspection" = "xyes"; then
-       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-    fi
-
-
-
 
-
-
-
-
-
-     if test "x$found_introspection" = "xyes"; then
-  HAVE_INTROSPECTION_TRUE=
-  HAVE_INTROSPECTION_FALSE='#'
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 else
-  HAVE_INTROSPECTION_TRUE='#'
-  HAVE_INTROSPECTION_FALSE=
+  CC="$ac_cv_prog_CC"
 fi
 
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-if test "$enable_cairo" != no; then
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
-$as_echo_n "checking for CAIRO... " >&6; }
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-if test -n "$CAIRO_CFLAGS"; then
-    pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo cairo-gobject\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo cairo-gobject" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  pkg_failed=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
- else
-    pkg_failed=untried
+
+
+    test -n "$CC" && break
+  done
 fi
-if test -n "$CAIRO_LIBS"; then
-    pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cairo cairo-gobject\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo cairo-gobject" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  pkg_failed=yes
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
 fi
- else
-    pkg_failed=untried
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+  test -n "$ac_ct_CC" && break
+done
 
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 fi
-        if test $_pkg_short_errors_supported = yes; then
-               CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
-        else
-               CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$CAIRO_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (cairo cairo-gobject) were not met:
-
-$CAIRO_PKG_ERRORS
+fi
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
 
-Alternatively, you may set the environment variables CAIRO_CFLAGS
-and CAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables CAIRO_CFLAGS
-and CAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+as_fn_error $? "no acceptable C compiler found in \$PATH
 See \`config.log' for more details" "$LINENO" 5; }
-else
-       CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
-       CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
 
-fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-    if test $build_py3k = true; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
-$as_echo_n "checking for PYCAIRO... " >&6; }
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
 
-if test -n "$PYCAIRO_CFLAGS"; then
-    pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.11.1
-        \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.11.1
-        ") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "py3cairo >= 1.11.1
-        " 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
 else
-  pkg_failed=yes
+  ac_compiler_gnu=no
 fi
- else
-    pkg_failed=untried
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
 fi
-if test -n "$PYCAIRO_LIBS"; then
-    pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.11.1
-        \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.11.1
-        ") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "py3cairo >= 1.11.1
-        " 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
 else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
+  GCC=
 fi
-
-
-
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "py3cairo >= 1.11.1
-        " 2>&1`
-        else
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "py3cairo >= 1.11.1
-        " 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$PYCAIRO_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (py3cairo >= 1.11.1
-        ) were not met:
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-$PYCAIRO_PKG_ERRORS
+int
+main ()
+{
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-Alternatively, you may set the environment variables PYCAIRO_CFLAGS
-and PYCAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+int
+main ()
+{
 
-Alternatively, you may set the environment variables PYCAIRO_CFLAGS
-and PYCAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
 else
-       PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
-       PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-fi
-    else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
-$as_echo_n "checking for PYCAIRO... " >&6; }
+int
+main ()
+{
 
-if test -n "$PYCAIRO_CFLAGS"; then
-    pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.11.1
-        \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pycairo >= 1.11.1
-        ") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pycairo >= 1.11.1
-        " 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
-else
-  pkg_failed=yes
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
 fi
- else
-    pkg_failed=untried
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-if test -n "$PYCAIRO_LIBS"; then
-    pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS"
- elif test -n "$PKG_CONFIG"; then
-    if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.11.1
-        \""; } >&5
-  ($PKG_CONFIG --exists --print-errors "pycairo >= 1.11.1
-        ") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "pycairo >= 1.11.1
-        " 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
 else
-  pkg_failed=yes
-fi
- else
-    pkg_failed=untried
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
 
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-if test $pkg_failed = yes; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
-        if test $_pkg_short_errors_supported = yes; then
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pycairo >= 1.11.1
-        " 2>&1`
-        else
-               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pycairo >= 1.11.1
-        " 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$PYCAIRO_PKG_ERRORS" >&5
-
-       as_fn_error $? "Package requirements (pycairo >= 1.11.1
-        ) were not met:
-
-$PYCAIRO_PKG_ERRORS
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
-Alternatively, you may set the environment variables PYCAIRO_CFLAGS
-and PYCAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details." "$LINENO" 5
-elif test $pkg_failed = untried; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
+fi
 
-Alternatively, you may set the environment variables PYCAIRO_CFLAGS
-and PYCAIRO_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See \`config.log' for more details" "$LINENO" 5; }
-else
-       PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
-       PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+depcc="$CC"   am_compiler_list=
 
-fi
-    fi
-fi
- if test "$enable_cairo" = "yes"; then
-  ENABLE_CAIRO_TRUE=
-  ENABLE_CAIRO_FALSE='#'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ENABLE_CAIRO_TRUE='#'
-  ENABLE_CAIRO_FALSE=
-fi
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
 
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-# Check whether --with-common was given.
-if test "${with_common+set}" = set; then :
-  withval=$with_common; with_common=$enableval
-else
-  with_common=yes
-fi
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
 
- if test "$with_common" = "yes"; then
-  WITH_COMMON_TRUE=
-  WITH_COMMON_FALSE='#'
+  cd ..
+  rm -rf conftest.dir
 else
-  WITH_COMMON_TRUE='#'
-  WITH_COMMON_FALSE=
+  am_cv_CC_dependencies_compiler_type=none
 fi
 
-
-# Disable -Werror always, see
-# https://mail.gnome.org/archives/desktop-devel-list/2017-April/msg00009.html
-
-    # C support is enabled by default.
-
-
-    # Only enable C++ support if AC_PROG_CXX is called. The redefinition of
-    # AC_PROG_CXX is so that a fatal error is emitted if this macro is called
-    # before AC_PROG_CXX, which would otherwise cause no C++ warnings to be
-    # checked.
-
-
-
-
-    # Default value for IS-RELEASE is $ax_is_release
-    ax_compiler_flags_is_release=yes
-
-    # Check whether --enable-compile-warnings was given.
-if test "${enable_compile_warnings+set}" = set; then :
-  enableval=$enable_compile_warnings;
-else
-  if test "$ax_compiler_flags_is_release" = "yes"; then :
-  enable_compile_warnings="yes"
-else
-  enable_compile_warnings="error"
-fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
-    # Check whether --enable-Werror was given.
-if test "${enable_Werror+set}" = set; then :
-  enableval=$enable_Werror;
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
 else
-  enable_Werror=maybe
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
 fi
 
 
-    # Return the user's chosen warning level
-    if test "$enable_Werror" = "no" -a \
-                "$enable_compile_warnings" = "error"; then :
 
-        enable_compile_warnings="yes"
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
 
+if test "x$CC" != xcc; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
-
-    ax_enable_compile_warnings=$enable_compile_warnings
-
-
-
-
-
-
-
-
-
-
-    # Variable names
-
-
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
-    # flags, otherwise they are always appended to the warn_cflags variable, and
-    # Clang warns on them for every compilation unit.
-    # If this is passed to GCC, it will explode, so the flag must be enabled
-    # conditionally.
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5
-$as_echo_n "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; }
-if ${ax_cv_check_cflags___Werror_unknown_warning_option+:} false; then :
+set dummy $CC; ac_cc=`$as_echo "$2" |
+                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -Werror=unknown-warning-option"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -14862,1479 +14503,1768 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_check_cflags___Werror_unknown_warning_option=yes
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+rm -f conftest2.*
+if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+then
+  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+  if test "x$CC" != xcc; then
+    # Test first that cc exists at all.
+    if { ac_try='cc -c conftest.$ac_ext >&5'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
+      rm -f conftest2.*
+      if { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
+      then
+       # cc works too.
+       :
+      else
+       # cc exists but doesn't like -o.
+       eval ac_cv_prog_cc_${ac_cc}_c_o=no
+      fi
+    fi
+  fi
 else
-  ax_cv_check_cflags___Werror_unknown_warning_option=no
+  eval ac_cv_prog_cc_${ac_cc}_c_o=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5
-$as_echo "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; }
-if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes; then :
-
-        ax_compiler_flags_test="-Werror=unknown-warning-option"
+rm -f core conftest*
 
+fi
+if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-        ax_compiler_flags_test=""
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
 
 fi
 
-
-    # Base flags
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
 
 
 
+# check that we have the minimum version of python necisary to build
 
-for flag in          -fno-strict-aliasing              ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
+        if test -n "$PYTHON"; then
+      # If the user set $PYTHON, use it and don't search something else.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.5.2" >&5
+$as_echo_n "checking whether $PYTHON version >= 2.5.2... " >&6; }
+      prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.5.2'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+   ($PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  eval "$as_CACHEVAR=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+  as_fn_error $? "too old" "$LINENO" 5
 fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
-
-if ${WARN_CFLAGS+:} false; then :
-
-  case " $WARN_CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5
-  (: WARN_CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
-
-     as_fn_append WARN_CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
-
+      am_display_PYTHON=$PYTHON
+    else
+      # Otherwise, try each interpreter until we find one that satisfies
+      # VERSION.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5.2" >&5
+$as_echo_n "checking for a Python interpreter with version >= 2.5.2... " >&6; }
+if ${am_cv_pathless_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
 
-  WARN_CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-
+       for am_cv_pathless_PYTHON in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+         test "$am_cv_pathless_PYTHON" = none && break
+         prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.5.2'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+   ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  break
 fi
-
-else
-  :
+       done
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+$as_echo "$am_cv_pathless_PYTHON" >&6; }
+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+      if test "$am_cv_pathless_PYTHON" = none; then
+       PYTHON=:
+      else
+        # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
+IFS=$as_save_IFS
 
-
-    if test "$ax_enable_compile_warnings" != "no"; then :
-
-        # "yes" flags
-
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+      fi
+      am_display_PYTHON=$am_cv_pathless_PYTHON
+    fi
 
-for flag in              -Wall             -Wextra             -Wundef             -Wnested-externs             -Wwrite-strings             -Wpointer-arith             -Wmissing-declarations             -Wmissing-prototypes             -Wstrict-prototypes             -Wredundant-decls             -Wno-unused-parameter             -Wno-missing-field-initializers             -Wdeclaration-after-statement             -Wformat=2             -Wold-style-definition             -Wcast-align             -Wformat-nonliteral             -Wformat-security             -Wsign-compare             -Wstrict-aliasing             -Wshadow             -Winline             -Wpacked             -Wmissing-format-attribute             -Wmissing-noreturn             -Winit-self             -Wredundant-decls             -Wmissing-include-dirs             -Wunused-but-set-variable             -Warray-bounds             -Wimplicit-function-declaration             -Wreturn-type             -Wswitch-enum             -Wswitch-default                                                                ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  if test "$PYTHON" = :; then
+      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
+  else
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
+if ${am_cv_python_version+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  eval "$as_CACHEVAR=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
 fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+$as_echo "$am_cv_python_version" >&6; }
+  PYTHON_VERSION=$am_cv_python_version
 
-if ${WARN_CFLAGS+:} false; then :
 
-  case " $WARN_CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5
-  (: WARN_CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
 
-     as_fn_append WARN_CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
+  PYTHON_PREFIX='${prefix}'
 
-else
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
 
-  WARN_CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
+if ${am_cv_python_platform+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  :
+  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+$as_echo "$am_cv_python_platform" >&6; }
+  PYTHON_PLATFORM=$am_cv_python_platform
+
 
-done
 
 
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
+if ${am_cv_python_pythondir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX'))" 2>/dev/null ||
+     echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
 fi
-    if test "$ax_enable_compile_warnings" = "error"; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+$as_echo "$am_cv_python_pythondir" >&6; }
+  pythondir=$am_cv_python_pythondir
 
-        # "error" flags; -Werror has to be appended unconditionally because
-        # it's not possible to test for
-        #
-        # suggest-attribute=format is disabled because it gives too many false
-        # positives
 
-if ${WARN_CFLAGS+:} false; then :
 
-  case " $WARN_CFLAGS " in #(
-  *" -Werror "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains -Werror"; } >&5
-  (: WARN_CFLAGS already contains -Werror) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
+  pkgpythondir=\${pythondir}/$PACKAGE
 
-     as_fn_append WARN_CFLAGS " -Werror"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
 
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
+if ${am_cv_python_pyexecdir+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-
-  WARN_CFLAGS=-Werror
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-
+  am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX'))" 2>/dev/null ||
+     echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+$as_echo "$am_cv_python_pyexecdir" >&6; }
+  pyexecdir=$am_cv_python_pyexecdir
 
 
 
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
 
 
 
-for flag in              -Wno-suggest-attribute=format         ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  fi
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
+# check if we are building for python 3
+prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.0'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+   ($PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  build_py3k=true
 else
-  eval "$as_CACHEVAR=no"
+  build_py3k=false
+fi
+
+# if building for python 3 make sure we have the minimum version supported
+if test $build_py3k = true ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $PYTHON >= 3.1" >&5
+$as_echo_n "checking for $PYTHON >= 3.1... " >&6; }
+  prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.1'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+  if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+   ($PYTHON -c "$prog") >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  as_fn_error $? "too old" "$LINENO" 5
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
 fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
 
-if ${WARN_CFLAGS+:} false; then :
 
-  case " $WARN_CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5
-  (: WARN_CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
 
-     as_fn_append WARN_CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
 
-else
 
-  WARN_CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
+        # Find any Python interpreter.
+    if test -z "$PYTHON"; then
+      for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHON+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  :
-fi
-
+  case $PYTHON in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
+IFS=$as_save_IFS
 
-
+  ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+$as_echo "$PYTHON" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-    # In the flags below, when disabling specific flags, always add *both*
-    # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)
-    # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall,
-    # which effectively turns that flag back on again as an error.
-    for flag in $WARN_CFLAGS; do
-        case $flag in #(
-  -Wno-*=*) :
-     ;; #(
-  -Wno-*) :
 
+  test -n "$PYTHON" && break
+done
+test -n "$PYTHON" || PYTHON=":"
+
+    fi
+    am_display_PYTHON=python
 
 
+  if test "$PYTHON" = :; then
+      as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
+  else
 
 
-for flag in -Wno-error=$($as_echo $flag | $SED 's/^-Wno-//'); do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
+if ${am_cv_python_version+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+$as_echo "$am_cv_python_version" >&6; }
+  PYTHON_VERSION=$am_cv_python_version
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
-else
-  eval "$as_CACHEVAR=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
-fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
+  PYTHON_PREFIX='${prefix}'
 
-if ${WARN_CFLAGS+:} false; then :
+  PYTHON_EXEC_PREFIX='${exec_prefix}'
 
-  case " $WARN_CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS already contains \$flag"; } >&5
-  (: WARN_CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
 
-     as_fn_append WARN_CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
+if ${am_cv_python_platform+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
+  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+$as_echo "$am_cv_python_platform" >&6; }
+  PYTHON_PLATFORM=$am_cv_python_platform
 
-  WARN_CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_CFLAGS=\"\$WARN_CFLAGS\""; } >&5
-  (: WARN_CFLAGS="$WARN_CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
-else
-  :
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
+if ${am_cv_python_pythondir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$prefix" = xNONE
+     then
+       am_py_prefix=$ac_default_prefix
+     else
+       am_py_prefix=$prefix
+     fi
+     am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
+     case $am_cv_python_pythondir in
+     $am_py_prefix*)
+       am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+       am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+       ;;
+     *)
+       case $am_py_prefix in
+         /usr|/System*) ;;
+         *)
+         am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+         ;;
+       esac
+       ;;
+     esac
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+$as_echo "$am_cv_python_pythondir" >&6; }
+  pythondir=$am_cv_python_pythondir
 
-done
 
-                 ;; #(
-  *) :
-     ;;
-esac
-    done
 
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  pkgpythondir=\${pythondir}/$PACKAGE
 
 
-    # Substitute the variables
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
+if ${am_cv_python_pyexecdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$exec_prefix" = xNONE
+     then
+       am_py_exec_prefix=$am_py_prefix
+     else
+       am_py_exec_prefix=$exec_prefix
+     fi
+     am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
+     case $am_cv_python_pyexecdir in
+     $am_py_exec_prefix*)
+       am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+       am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+       ;;
+     *)
+       case $am_py_exec_prefix in
+         /usr|/System*) ;;
+         *)
+          am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+          ;;
+       esac
+       ;;
+     esac
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+$as_echo "$am_cv_python_pyexecdir" >&6; }
+  pyexecdir=$am_cv_python_pyexecdir
 
 
 
+  pkgpyexecdir=\${pyexecdir}/$PACKAGE
 
 
 
+  fi
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for headers required to compile python extensions" >&5
+$as_echo_n "checking for headers required to compile python extensions... " >&6; }
+if test "x$PYTHON_INCLUDES" = x; then
+  PYTHON_CONFIG=`which $PYTHON`-config
+  if test -x "$PYTHON_CONFIG"; then
+    PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
+  else
+    py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+    py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+    PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+    if test "$py_prefix" != "$py_exec_prefix"; then
+      PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+    fi
+  fi
+fi
 
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <Python.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
+$as_echo "found" >&6; }
 
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+as_fn_error $? "Python headers not found" "$LINENO" 5
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+CPPFLAGS="$save_CPPFLAGS"
 
-    # Variable names
+if test "x$os_win32" = "xyes"; then
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libraries required to embed python" >&5
+$as_echo_n "checking for libraries required to embed python... " >&6; }
+py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
+if test "x$PYTHON_LIBS" = x; then
+       PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
+fi
+if test "x$PYTHON_LIB_LOC" = x; then
+       PYTHON_LIB_LOC="${py_prefix}/lib"
+fi
 
-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
-    # flags, otherwise they are always appended to the warn_ldflags variable,
-    # and Clang warns on them for every compilation unit.
-    # If this is passed to GCC, it will explode, so the flag must be enabled
-    # conditionally.
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Werror=unknown-warning-option" >&5
-$as_echo_n "checking whether C compiler accepts -Werror=unknown-warning-option... " >&6; }
-if ${ax_cv_check_cflags___Werror_unknown_warning_option+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  -Werror=unknown-warning-option"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+save_LIBS="$LIBS"
+LIBS="$LIBS $PYTHON_LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char Py_Initialize ();
 int
 main ()
 {
-
+return Py_Initialize ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ax_cv_check_cflags___Werror_unknown_warning_option=yes
+if ac_fn_c_try_link "$LINENO"; then :
+           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; };
 else
-  ax_cv_check_cflags___Werror_unknown_warning_option=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+           LIBS="$save_LIBS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }; as_fn_error $? "Python libs not found. Windows requires Python modules to be explicitly linked to libpython." "$LINENO" 5
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Werror_unknown_warning_option" >&5
-$as_echo "$ax_cv_check_cflags___Werror_unknown_warning_option" >&6; }
-if test "x$ax_cv_check_cflags___Werror_unknown_warning_option" = xyes; then :
-
-        ax_compiler_flags_test="-Werror=unknown-warning-option"
-
-else
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-        ax_compiler_flags_test=""
 
 fi
 
-
-    # macOS linker does not have --as-needed
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--no-as-needed" >&5
-$as_echo_n "checking whether the linker accepts -Wl,--no-as-needed... " >&6; }
-if ${ax_cv_check_ldflags___Wl___no_as_needed+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS  -Wl,--no-as-needed"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PySignal_SetWakeupFd in Python.h" >&5
+$as_echo_n "checking for PySignal_SetWakeupFd in Python.h... " >&6; }
+old_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <Python.h>
 int
 main ()
 {
-
+PySignal_SetWakeupFd(0);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_cv_check_ldflags___Wl___no_as_needed=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  setwakeupfd_ok=yes
 else
-  ax_cv_check_ldflags___Wl___no_as_needed=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
+  setwakeupfd_ok=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___no_as_needed" >&5
-$as_echo "$ax_cv_check_ldflags___Wl___no_as_needed" >&6; }
-if test "x$ax_cv_check_ldflags___Wl___no_as_needed" = xyes; then :
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $setwakeupfd_ok" >&5
+$as_echo "$setwakeupfd_ok" >&6; }
+if test "x$setwakeupfd_ok" != xno; then
 
-        ax_compiler_flags_as_needed_option="-Wl,--no-as-needed"
+$as_echo "#define HAVE_PYSIGNAL_SETWAKEUPFD 1" >>confdefs.h
 
-else
+fi
+CPPFLAGS=$old_CPPFLAGS
 
-        ax_compiler_flags_as_needed_option=""
+PLATFORM=`$PYTHON -c "import sys; from distutils import util; sys.stdout.write(util.get_platform())"`
 
+
+# Check whether --enable-thread was given.
+if test "${enable_thread+set}" = set; then :
+  enableval=$enable_thread;
+else
+  enable_thread=yes
 fi
 
 
-    # macOS linker speaks with a different accent
-    ax_compiler_flags_fatal_warnings_option=""
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--fatal-warnings" >&5
-$as_echo_n "checking whether the linker accepts -Wl,--fatal-warnings... " >&6; }
-if ${ax_cv_check_ldflags___Wl___fatal_warnings+:} false; then :
+
+py_mod_var=`echo thread'_' | sed 'y%./+-%__p_%'`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python module thread" >&5
+$as_echo_n "checking for python module thread... " >&6; }
+if eval \${py_cv_mod_$py_mod_var+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS  -Wl,--fatal-warnings"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+prog="
+import sys
+try:
+        import thread
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"
+if $PYTHON -c "$prog" 1>&5 2>&5
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_cv_check_ldflags___Wl___fatal_warnings=yes
-else
-  ax_cv_check_ldflags___Wl___fatal_warnings=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___fatal_warnings" >&5
-$as_echo "$ax_cv_check_ldflags___Wl___fatal_warnings" >&6; }
-if test "x$ax_cv_check_ldflags___Wl___fatal_warnings" = xyes; then :
-
-        ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings"
 
-else
-  :
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  enable_thread=check_for_py3_module
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-fatal_warnings" >&5
-$as_echo_n "checking whether the linker accepts -Wl,-fatal_warnings... " >&6; }
-if ${ax_cv_check_ldflags___Wl__fatal_warnings+:} false; then :
+if test "x$enable_thread" = xcheck_for_py3_module; then
+
+py_mod_var=`echo _thread'_' | sed 'y%./+-%__p_%'`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python module _thread" >&5
+$as_echo_n "checking for python module _thread... " >&6; }
+if eval \${py_cv_mod_$py_mod_var+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS  -Wl,-fatal_warnings"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+prog="
+import sys
+try:
+        import _thread
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"
+if $PYTHON -c "$prog" 1>&5 2>&5
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
 
-int
-main ()
-{
+fi
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ax_cv_check_ldflags___Wl__fatal_warnings=yes
-else
-  ax_cv_check_ldflags___Wl__fatal_warnings=no
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  enable_thread=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable threading in pygobject" >&5
+$as_echo_n "checking whether to enable threading in pygobject... " >&6; }
+if test "x$enable_thread" != xno; then
+  extra_mods=gthread
+  THREADING_CFLAGS=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  extra_mods=
+  THREADING_CFLAGS="-DDISABLE_THREADING"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__fatal_warnings" >&5
-$as_echo "$ax_cv_check_ldflags___Wl__fatal_warnings" >&6; }
-if test "x$ax_cv_check_ldflags___Wl__fatal_warnings" = xyes; then :
 
-        ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings"
+CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS"
 
+export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+
+# Check whether --enable-glibtest was given.
+if test "${enable_glibtest+set}" = set; then :
+  enableval=$enable_glibtest;
 else
-  :
+  enable_glibtest=yes
 fi
 
 
-    # Base flags
+  pkg_config_args=glib-2.0
+  for module in . gobject $extra_mods
+  do
+      case "$module" in
+         gmodule)
+             pkg_config_args="$pkg_config_args gmodule-2.0"
+         ;;
+         gmodule-no-export)
+             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
+         ;;
+         gobject)
+             pkg_config_args="$pkg_config_args gobject-2.0"
+         ;;
+         gthread)
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+         gio*)
+             pkg_config_args="$pkg_config_args $module-2.0"
+         ;;
+      esac
+  done
 
 
 
 
-for flag in          $ax_compiler_flags_as_needed_option              ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5
-$as_echo_n "checking whether the linker accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
 
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
-else
-  eval "$as_CACHEVAR=no"
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
 
-if ${WARN_LDFLAGS+:} false; then :
 
-  case " $WARN_LDFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5
-  (: WARN_LDFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-     as_fn_append WARN_LDFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
+  ;;
 esac
-
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
-
-  WARN_LDFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
 else
-  :
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
 fi
 
-done
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.16
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
 
+  no_glib=""
 
-    if test "$ax_enable_compile_warnings" != "no"; then :
+  if test "x$PKG_CONFIG" = x ; then
+    no_glib=yes
+    PKG_CONFIG=no
+  fi
 
-        # "yes" flags
+  min_glib_version=2.31.0
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
+$as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
 
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
+         enable_glibtest=no
+    fi
 
+    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
+         :
+    else
+         no_glib=yes
+    fi
+  fi
 
+  if test x"$no_glib" = x ; then
+    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
+    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
 
-for flag in       ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5
-$as_echo_n "checking whether the linker accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
+    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
+    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
+    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+    if test "x$enable_glibtest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GLIB_CFLAGS"
+      LIBS="$GLIB_LIBS $LIBS"
+      rm -f conf.glibtest
+      if test "$cross_compiling" = yes; then :
+  echo $ac_n "cross compiling; assumed OK... $ac_c"
 else
-
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#include <glib.h>
+#include <stdio.h>
+#include <stdlib.h>
+
 int
 main ()
 {
+  unsigned int major, minor, micro;
+  char *tmp_version;
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
-else
-  eval "$as_CACHEVAR=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
-fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
-
-if ${WARN_LDFLAGS+:} false; then :
-
-  case " $WARN_LDFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5
-  (: WARN_LDFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
-
-     as_fn_append WARN_LDFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
+  fclose (fopen ("conf.glibtest", "w"));
 
-else
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_glib_version");
+  if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_glib_version");
+     exit(1);
+   }
 
-  WARN_LDFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
+  if ((glib_major_version != $glib_config_major_version) ||
+      (glib_minor_version != $glib_config_minor_version) ||
+      (glib_micro_version != $glib_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
+             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
+             glib_major_version, glib_minor_version, glib_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    }
+  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
+          (glib_minor_version != GLIB_MINOR_VERSION) ||
+           (glib_micro_version != GLIB_MICRO_VERSION))
+    {
+      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
+            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            glib_major_version, glib_minor_version, glib_micro_version);
+    }
+  else
+    {
+      if ((glib_major_version > major) ||
+        ((glib_major_version == major) && (glib_minor_version > minor)) ||
+        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
+               glib_major_version, glib_minor_version, glib_micro_version);
+        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
+              major, minor, micro);
+        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
 
-fi
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
 
 else
-  :
+  no_glib=yes
 fi
-
-done
-
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-    if test "$ax_enable_compile_warnings" = "error"; then :
-
-        # "error" flags; -Werror has to be appended unconditionally because
-        # it's not possible to test for
-        #
-        # suggest-attribute=format is disabled because it gives too many false
-        # positives
-
-
-
 
-for flag in              $ax_compiler_flags_fatal_warnings_option         ; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_ldflags_$ax_compiler_flags_test_$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts $flag" >&5
-$as_echo_n "checking whether the linker accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS $ax_compiler_flags_test $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_glib" = x ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
+$as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; }
+     :
+  else
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
+     else
+       if test -f conf.glibtest ; then
+        :
+       else
+          echo "*** Could not run GLIB test program, checking why..."
+          ac_save_CFLAGS="$CFLAGS"
+          ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GLIB_CFLAGS"
+          LIBS="$LIBS $GLIB_LIBS"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#include <glib.h>
+#include <stdio.h>
+
 int
 main ()
 {
-
+ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
+   echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
+          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
 else
-  eval "$as_CACHEVAR=no"
+   echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-  LDFLAGS=$ax_check_save_flags
-fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GLIB_CFLAGS=""
+     GLIB_LIBS=""
+     GLIB_GENMARSHAL=""
+     GOBJECT_QUERY=""
+     GLIB_MKENUMS=""
+     GLIB_COMPILE_RESOURCES=""
+     as_fn_error $? "maybe you want the pygobject-2-4 branch?" "$LINENO" 5
+  fi
 
-if ${WARN_LDFLAGS+:} false; then :
 
-  case " $WARN_LDFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS already contains \$flag"; } >&5
-  (: WARN_LDFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
 
-     as_fn_append WARN_LDFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
 
-else
 
-  WARN_LDFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_LDFLAGS=\"\$WARN_LDFLAGS\""; } >&5
-  (: WARN_LDFLAGS="$WARN_LDFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
+  rm -f conf.glibtest
 
-else
-  :
+if test -n "$export_dynamic"; then
+  GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
 fi
+PYTHON_BASENAME=`basename $PYTHON`
 
-done
 
 
-fi
+  EXP_VAR=DATADIR
+  FROM_VAR=$datadir
 
-    # Substitute the variables
+    prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
 
+    if test "x$prefix" = "xNONE"; then
+    prefix=$ac_default_prefix
+  fi
+    if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
 
+  full_var="$FROM_VAR"
+    while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var"="x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
 
+    full_var=$new_full_var
+  DATADIR="$full_var"
 
 
+    prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
 
-    # Variable names
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi" >&5
+$as_echo_n "checking for ffi... " >&6; }
 
-    # Base flags
+# Check whether --with-ffi was given.
+if test "${with_ffi+set}" = set; then :
+  withval=$with_ffi; with_libffi=$withval
+else
+  with_libffi=auto
+fi
 
-if ${WARN_SCANNERFLAGS+:} false; then :
+if test x"$with_libffi" = xno ; then
+  have_libffi=false
+else
 
-  case " $WARN_SCANNERFLAGS " in #(
-  *"  "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains "; } >&5
-  (: WARN_SCANNERFLAGS already contains ) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FFI" >&5
+$as_echo_n "checking for FFI... " >&6; }
 
-     as_fn_append WARN_SCANNERFLAGS " "
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
+if test -n "$FFI_CFLAGS"; then
+    pkg_cv_FFI_CFLAGS="$FFI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libffi >= 3.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
-
+  test $ac_status = 0; }; then
+  pkg_cv_FFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-
-  WARN_SCANNERFLAGS=
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$FFI_LIBS"; then
+    pkg_cv_FFI_LIBS="$FFI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libffi >= 3.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-
+  test $ac_status = 0; }; then
+  pkg_cv_FFI_LIBS=`$PKG_CONFIG --libs "libffi >= 3.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
 fi
 
 
-    if test "$ax_enable_compile_warnings" != "no"; then :
-
-        # "yes" flags
-
-if ${WARN_SCANNERFLAGS+:} false; then :
 
-  case " $WARN_SCANNERFLAGS " in #(
-  *"              --warn-all                                                              "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains              --warn-all                                                             "; } >&5
-  (: WARN_SCANNERFLAGS already contains              --warn-all                                                             ) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-     as_fn_append WARN_SCANNERFLAGS "              --warn-all                                                             "
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               FFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
+        else
+               FFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi >= 3.0" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$FFI_PKG_ERRORS" >&5
 
+       have_libffi=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       have_libffi=no
+else
+       FFI_CFLAGS=$pkg_cv_FFI_CFLAGS
+       FFI_LIBS=$pkg_cv_FFI_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_libffi=yes
+fi
+fi
+if test x"$with_libffi" = xyes && test x"$have_libffi" = xno ; then
+  as_fn_error $? "ffi requested, but not found" "$LINENO" 5
+fi
+if test x"$have_libffi" = xyes; then
+  LIBFFI_PC=libffi
+fi
+ if test "$have_libffi" = "yes"; then
+  HAVE_LIBFFI_TRUE=
+  HAVE_LIBFFI_FALSE='#'
 else
+  HAVE_LIBFFI_TRUE='#'
+  HAVE_LIBFFI_FALSE=
+fi
 
-  WARN_SCANNERFLAGS=             --warn-all
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
 
-fi
-    if test "$ax_enable_compile_warnings" = "error"; then :
 
-        # "error" flags
 
-if ${WARN_SCANNERFLAGS+:} false; then :
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5
+$as_echo_n "checking for GIO... " >&6; }
 
-  case " $WARN_SCANNERFLAGS " in #(
-  *"              --warn-error          "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS already contains              --warn-error         "; } >&5
-  (: WARN_SCANNERFLAGS already contains              --warn-error         ) 2>&5
+if test -n "$GIO_CFLAGS"; then
+    pkg_cv_GIO_CFLAGS="$GIO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.31.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
-
-     as_fn_append WARN_SCANNERFLAGS "              --warn-error         "
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
+  test $ac_status = 0; }; then
+  pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.31.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$GIO_LIBS"; then
+    pkg_cv_GIO_LIBS="$GIO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.31.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
-
+  test $ac_status = 0; }; then
+  pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.31.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
 
-  WARN_SCANNERFLAGS=             --warn-error
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : WARN_SCANNERFLAGS=\"\$WARN_SCANNERFLAGS\""; } >&5
-  (: WARN_SCANNERFLAGS="$WARN_SCANNERFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
+        else
+               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GIO_PKG_ERRORS" >&5
 
-    # Substitute the variables
+       as_fn_error $? "Package requirements (gio-2.0 >= 2.31.0) were not met:
 
+$GIO_PKG_ERRORS
 
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
 
-# Disable some warnings, either because they get generated by headers of
-# dependencies we don't control or because it was hard to fix them.
-# Feel free and try to get rid of them.
-# For clang only:
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
 
+Alternatively, you may set the environment variables GIO_CFLAGS
+and GIO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
 
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
+else
+       GIO_CFLAGS=$pkg_cv_GIO_CFLAGS
+       GIO_LIBS=$pkg_cv_GIO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
+fi
 
-for flag in -Wno-unknown-warning-option -Wno-incompatible-pointer-types-discards-qualifiers -Wno-cast-align; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
+# Check whether --enable-cairo was given.
+if test "${enable_cairo+set}" = set; then :
+  enableval=$enable_cairo; enable_cairo=$enableval
 else
+  enable_cairo=yes
+fi
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GI" >&5
+$as_echo_n "checking for GI... " >&6; }
+
+if test -n "$GI_CFLAGS"; then
+    pkg_cv_GI_CFLAGS="$GI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  eval "$as_CACHEVAR=no"
+  pkg_failed=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
+ else
+    pkg_failed=untried
 fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
-
-if ${CFLAGS+:} false; then :
-
-  case " $CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
-  (: CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
-
-     as_fn_append CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
-  (: CFLAGS="$CFLAGS") 2>&5
+if test -n "$GI_LIBS"; then
+    pkg_cv_GI_LIBS="$GI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
-
+  test $ac_status = 0; }; then
+  pkg_cv_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
 
-  CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
-  (: CFLAGS="$CFLAGS") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
 
-fi
 
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
 else
-  :
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+               GI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+" 2>&1`
+        else
+               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$GI_PKG_ERRORS" >&5
 
-done
+       as_fn_error $? "Package requirements (glib-2.0 >= 2.31.0
+    gobject-introspection-1.0 >= 1.31.20
+) were not met:
 
-# For gcc + clang:
+$GI_PKG_ERRORS
 
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
 
+Alternatively, you may set the environment variables GI_CFLAGS
+and GI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
 
+Alternatively, you may set the environment variables GI_CFLAGS
+and GI_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
 
-for flag in -Wno-discarded-qualifiers -Wno-redundant-decls -Wno-switch-enum -Wno-undef; do
-  as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
-$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
-if eval \${$as_CACHEVAR+:} false; then :
-  $as_echo_n "(cached) " >&6
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
 else
+       GI_CFLAGS=$pkg_cv_GI_CFLAGS
+       GI_LIBS=$pkg_cv_GI_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-  ax_check_save_flags=$CFLAGS
-  CFLAGS="$CFLAGS  $flag"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+fi
 
-int
-main ()
-{
+GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_CACHEVAR=yes"
-else
-  eval "$as_CACHEVAR=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  CFLAGS=$ax_check_save_flags
-fi
-eval ac_res=\$$as_CACHEVAR
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
 
-if ${CFLAGS+:} false; then :
+if test "$enable_cairo" != no; then
+    if test $build_py3k = true; then
 
-  case " $CFLAGS " in #(
-  *" $flag "*) :
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
-  (: CFLAGS already contains $flag) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ;; #(
-  *) :
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
+$as_echo_n "checking for PYCAIRO... " >&6; }
 
-     as_fn_append CFLAGS " $flag"
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
-  (: CFLAGS="$CFLAGS") 2>&5
+if test -n "$PYCAIRO_CFLAGS"; then
+    pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.10.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.10.0
+        ") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-     ;;
-esac
-
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "py3cairo >= 1.10.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-
-  CFLAGS=$flag
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
-  (: CFLAGS="$CFLAGS") 2>&5
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PYCAIRO_LIBS"; then
+    pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"py3cairo >= 1.10.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "py3cairo >= 1.10.0
+        ") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-
-fi
-
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "py3cairo >= 1.10.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  :
+  pkg_failed=yes
 fi
-
-done
-
-
-
-
-
-       # allow to override gcov location
-
-# Check whether --with-gcov was given.
-if test "${with_gcov+set}" = set; then :
-  withval=$with_gcov; _AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov
-else
-  _AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov
+ else
+    pkg_failed=untried
 fi
 
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5
-$as_echo_n "checking whether to build with code coverage support... " >&6; }
-       # Check whether --enable-code-coverage was given.
-if test "${enable_code_coverage+set}" = set; then :
-  enableval=$enable_code_coverage;
-else
-  enable_code_coverage=no
-fi
 
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-        if test x$enable_code_coverage = xyes; then
-  CODE_COVERAGE_ENABLED_TRUE=
-  CODE_COVERAGE_ENABLED_FALSE='#'
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
 else
-  CODE_COVERAGE_ENABLED_TRUE='#'
-  CODE_COVERAGE_ENABLED_FALSE=
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "py3cairo >= 1.10.0
+        " 2>&1`
+        else
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "py3cairo >= 1.10.0
+        " 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$PYCAIRO_PKG_ERRORS" >&5
 
-       CODE_COVERAGE_ENABLED=$enable_code_coverage
-
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5
-$as_echo "$enable_code_coverage" >&6; }
+       as_fn_error $? "Package requirements (py3cairo >= 1.10.0
+        ) were not met:
 
-       if  test "$enable_code_coverage" = "yes" ; then :
+$PYCAIRO_PKG_ERRORS
 
-               # check for gcov
-               if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
-set dummy ${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$GCOV"; then
-  ac_cv_prog_GCOV="$GCOV" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_GCOV="${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
 
-fi
-fi
-GCOV=$ac_cv_prog_GCOV
-if test -n "$GCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5
-$as_echo "$GCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-fi
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
 
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
 
-fi
-if test -z "$ac_cv_prog_GCOV"; then
-  ac_ct_GCOV=$GCOV
-  # Extract the first word of "$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args.
-set dummy $_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_GCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_GCOV"; then
-  ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_GCOV="$_AX_CODE_COVERAGE_GCOV_PROG_WITH"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+       PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
+       PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
 fi
-fi
-ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV
-if test -n "$ac_ct_GCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5
-$as_echo "$ac_ct_GCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+    else
 
-  if test "x$ac_ct_GCOV" = x; then
-    GCOV=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    GCOV=$ac_ct_GCOV
-  fi
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PYCAIRO" >&5
+$as_echo_n "checking for PYCAIRO... " >&6; }
+
+if test -n "$PYCAIRO_CFLAGS"; then
+    pkg_cv_PYCAIRO_CFLAGS="$PYCAIRO_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.2.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "pycairo >= 1.2.0
+        ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_CFLAGS=`$PKG_CONFIG --cflags "pycairo >= 1.2.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$PYCAIRO_LIBS"; then
+    pkg_cv_PYCAIRO_LIBS="$PYCAIRO_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"pycairo >= 1.2.0
+        \""; } >&5
+  ($PKG_CONFIG --exists --print-errors "pycairo >= 1.2.0
+        ") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_PYCAIRO_LIBS=`$PKG_CONFIG --libs "pycairo >= 1.2.0
+        " 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  GCOV="$ac_cv_prog_GCOV"
+  pkg_failed=yes
 fi
-
-               if test "X$GCOV" = "X:"; then :
-  as_fn_error $? "gcov is needed to do coverage" "$LINENO" 5
+ else
+    pkg_failed=untried
 fi
 
 
-                               if  test "$GCC" = "no" ; then :
 
-                       as_fn_error $? "not compiling with gcc, which is required for gcov code coverage" "$LINENO" 5
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "pycairo >= 1.2.0
+        " 2>&1`
+        else
+               PYCAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "pycairo >= 1.2.0
+        " 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$PYCAIRO_PKG_ERRORS" >&5
 
-               # Extract the first word of "lcov", so it can be a program name with args.
-set dummy lcov; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LCOV+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$LCOV"; then
-  ac_cv_prog_LCOV="$LCOV" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_LCOV="lcov"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+       as_fn_error $? "Package requirements (pycairo >= 1.2.0
+        ) were not met:
 
-fi
-fi
-LCOV=$ac_cv_prog_LCOV
-if test -n "$LCOV"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5
-$as_echo "$LCOV" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$PYCAIRO_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-fi
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
 
+Alternatively, you may set the environment variables PYCAIRO_CFLAGS
+and PYCAIRO_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
 
-               # Extract the first word of "genhtml", so it can be a program name with args.
-set dummy genhtml; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GENHTML+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$GENHTML"; then
-  ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test.
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_GENHTML="genhtml"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
+       PYCAIRO_CFLAGS=$pkg_cv_PYCAIRO_CFLAGS
+       PYCAIRO_LIBS=$pkg_cv_PYCAIRO_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
 fi
+    fi
 fi
-GENHTML=$ac_cv_prog_GENHTML
-if test -n "$GENHTML"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5
-$as_echo "$GENHTML" >&6; }
+ if test "$enable_cairo" = "yes"; then
+  ENABLE_CAIRO_TRUE=
+  ENABLE_CAIRO_FALSE='#'
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-               if  test -z "$LCOV" ; then :
-
-                       as_fn_error $? "To enable code coverage reporting you must have lcov installed" "$LINENO" 5
-
+  ENABLE_CAIRO_TRUE='#'
+  ENABLE_CAIRO_FALSE=
 fi
 
-               if  test -z "$GENHTML" ; then :
 
-                       as_fn_error $? "Could not find genhtml from the lcov package" "$LINENO" 5
+INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
 
-fi
 
-                                               CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
-               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_LIBS="-lgcov"
-               CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"
 
 
+if test "x$GCC" = "xyes"; then
 
+case " $CFLAGS " in
+*[\    \ ]-Wall[\      \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Wall"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Wall" >&5
+$as_echo_n "checking whether $CC understands -Wall... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
 
+case " $CFLAGS " in
+*[\    \ ]-fno-strict-aliasing[\       \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-strict-aliasing"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -fno-strict-aliasing" >&5
+$as_echo_n "checking whether $CC understands -fno-strict-aliasing... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-               CODE_COVERAGE_RULES_CHECK='
-       -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
-       $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
-'
-               CODE_COVERAGE_RULES_CAPTURE='
-       $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
-       $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
-       -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
-       $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
-       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
-'
-               CODE_COVERAGE_RULES_CLEAN='
-clean: code-coverage-clean
-distclean: code-coverage-clean
-code-coverage-clean:
-       -$(LCOV) --directory $(top_builddir) -z
-       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-       -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
-'
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
 else
-
-               CODE_COVERAGE_RULES_CHECK='
-       @echo "Need to reconfigure with --enable-code-coverage"
-'
-               CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK"
-               CODE_COVERAGE_RULES_CLEAN=''
-
+  jh_has_option=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
 
-CODE_COVERAGE_RULES='
-# Code coverage
-#
-# Optional:
-#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
-#    Multiple directories may be specified, separated by whitespace.
-#    (Default: $(top_builddir))
-#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
-#    by lcov for code coverage. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
-#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
-#    reports to be created. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
-#  - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
-#    set to 0 to disable it and leave empty to stay with the default.
-#    (Default: empty)
-#  - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
-#    instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
-#    instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
-#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
-#    collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
-#    lcov instance. (Default: empty)
-#  - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-#  - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
-#    genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
-#    instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
-#
-# The generated report will be titled using the $(PACKAGE_NAME) and
-# $(PACKAGE_VERSION). In order to add the current git hash to the title,
-# use the git-version-gen script, available online.
-
-# Optional variables
-CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
-CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
-CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
-CODE_COVERAGE_BRANCH_COVERAGE ?=
-CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
-CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
-CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
-$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULTS)
-CODE_COVERAGE_IGNORE_PATTERN ?=
-
-code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
-code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_cap_0 = @echo "  LCOV   --capture"\
- $(CODE_COVERAGE_OUTPUT_FILE);
-code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
-code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_ign_0 = @echo "  LCOV   --remove /tmp/*"\
- $(CODE_COVERAGE_IGNORE_PATTERN);
-code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
-code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_genhtml_0 = @echo "  GEN   " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
-code_coverage_quiet = $(code_coverage_quiet_$(V))
-code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
-code_coverage_quiet_0 = --quiet
-
-# sanitizes the test-name: replaces with underscores: dashes and dots
-code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
-
-# Use recursive makes in order to ignore errors during check
-check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"'
-
-# Capture code coverage data
-code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"'
-
-# Hook rule executed before code-coverage-capture, overridable by the user
-code-coverage-capture-hook:
-
-'"$CODE_COVERAGE_RULES_CLEAN"'
-
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-
-A''M_DISTCHECK_CONFIGURE_FLAGS ?=
-A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
-
-.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
-'
+  case $host_os in
+  solaris*)
+    ;;
+  *)
 
+case " $CFLAGS " in
+*[\    \ ]-std=c9x[\   \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -std=c9x"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -std=c9x" >&5
+$as_echo_n "checking whether $CC understands -std=c9x... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  jh_has_option=yes
+else
+  jh_has_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $jh_has_option" >&5
+$as_echo "$jh_has_option" >&6; }
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac
+    ;;
+  esac
 
+fi
 
-ac_config_files="$ac_config_files Makefile pygobject-3.0.pc pygobject-3.0-uninstalled.pc gi/Makefile gi/repository/Makefile gi/overrides/Makefile examples/Makefile tests/Makefile pygtkcompat/Makefile PKG-INFO"
+ac_config_files="$ac_config_files Makefile pygobject-3.0.pc pygobject-3.0-uninstalled.pc gi/Makefile gi/repository/Makefile gi/overrides/Makefile gi/_glib/Makefile gi/_gobject/Makefile examples/Makefile tests/Makefile PKG-INFO"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -16445,14 +16375,6 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
-   if test -n "$am_sleep_pid"; then
-     # Hide warnings about reused PIDs.
-     wait $am_sleep_pid 2>/dev/null
-   fi
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -16461,6 +16383,14 @@ else
   am__EXEEXT_FALSE=
 fi
 
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then
+  as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then
   as_fn_error $? "conditional \"OS_WIN32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16477,20 +16407,16 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then
-  as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${ENABLE_CAIRO_TRUE}" && test -z "${ENABLE_CAIRO_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_CAIRO\" was never defined.
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${WITH_COMMON_TRUE}" && test -z "${WITH_COMMON_FALSE}"; then
-  as_fn_error $? "conditional \"WITH_COMMON\" was never defined.
+if test -z "${HAVE_LIBFFI_TRUE}" && test -z "${HAVE_LIBFFI_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_LIBFFI\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${CODE_COVERAGE_ENABLED_TRUE}" && test -z "${CODE_COVERAGE_ENABLED_FALSE}"; then
-  as_fn_error $? "conditional \"CODE_COVERAGE_ENABLED\" was never defined.
+if test -z "${ENABLE_CAIRO_TRUE}" && test -z "${ENABLE_CAIRO_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_CAIRO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
@@ -16791,16 +16717,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # In both cases, we have to default to `cp -p'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
+      as_ln_s='cp -p'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -pR'
+    as_ln_s='cp -p'
   fi
 else
-  as_ln_s='cp -pR'
+  as_ln_s='cp -p'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -16860,16 +16786,28 @@ else
   as_mkdir_p=false
 fi
 
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -16890,8 +16828,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pygobject $as_me 3.25.1, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+This file was extended by pygobject $as_me 3.3.1, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -16950,18 +16888,17 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
-pygobject home page: <https://wiki.gnome.org/Projects/PyGObject/>."
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-pygobject config.status 3.25.1
-configured by $0, generated by GNU Autoconf 2.69,
+pygobject config.status 3.3.1
+configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -17052,7 +16989,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -17086,16 +17023,15 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 sed_quote_subst='$sed_quote_subst'
 double_quote_subst='$double_quote_subst'
 delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
 AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
 DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
 OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
 PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
@@ -17143,13 +17079,10 @@ compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
 GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
 nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
 lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
 objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
 MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
 lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
@@ -17214,8 +17147,7 @@ finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
-configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
@@ -17267,12 +17199,9 @@ CFLAGS \
 compiler \
 lt_cv_sys_global_symbol_pipe \
 lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_import \
 lt_cv_sys_global_symbol_to_c_name_address \
 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-lt_cv_nm_interface \
 nm_file_list_spec \
-lt_cv_truncate_bin \
 lt_prog_compiler_no_builtin_flag \
 lt_prog_compiler_pic \
 lt_prog_compiler_wl \
@@ -17307,7 +17236,7 @@ old_striplib \
 striplib; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -17334,11 +17263,10 @@ postinstall_cmds \
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
-configure_time_dlsearch_path \
-configure_time_lt_sys_library_path; do
+sys_lib_dlsearch_path_spec; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -17347,19 +17275,23 @@ configure_time_lt_sys_library_path; do
 done
 
 ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
 
-# See if we are running on zsh, and set the options that allow our
+# See if we are running on zsh, and set the options which allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}"; then
+if test -n "\${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 
 
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'
 
+ac_aux_dir='$ac_aux_dir'
 
 
 
     "gi/Makefile") CONFIG_FILES="$CONFIG_FILES gi/Makefile" ;;
     "gi/repository/Makefile") CONFIG_FILES="$CONFIG_FILES gi/repository/Makefile" ;;
     "gi/overrides/Makefile") CONFIG_FILES="$CONFIG_FILES gi/overrides/Makefile" ;;
+    "gi/_glib/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_glib/Makefile" ;;
+    "gi/_gobject/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_gobject/Makefile" ;;
     "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
-    "pygtkcompat/Makefile") CONFIG_FILES="$CONFIG_FILES pygtkcompat/Makefile" ;;
     "PKG-INFO") CONFIG_FILES="$CONFIG_FILES PKG-INFO" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -17980,7 +17913,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Older Autoconf quotes --file arguments for eval, but not when files
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -17993,7 +17926,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
+    # We used to match only the files named `Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -18027,19 +17960,21 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
+    # from the Makefile without running `make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
+    test -z "am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
@@ -18074,58 +18009,60 @@ $as_echo X"$file" |
  ;;
     "libtool":C)
 
-    # See if we are running on zsh, and set the options that allow our
+    # See if we are running on zsh, and set the options which allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}"; then
+    if test -n "${ZSH_VERSION+set}" ; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile=${ofile}T
+    cfgfile="${ofile}T"
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-# Generated automatically by $as_me ($PACKAGE) $VERSION
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit, 1996
-
-# Copyright (C) 2014 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of of the License, or
-# (at your option) any later version.
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
 #
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program or library that is built
-# using GNU Libtool, you may include this file under the  same
-# distribution terms that you use for the rest of that program.
+#   This file is part of GNU Libtool.
 #
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 
 # The names of the tagged configurations supported by this script.
-available_tags=''
-
-# Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+available_tags=""
 
 # ### BEGIN LIBTOOL CONFIG
 
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
 
 # Assembler program.
 AS=$lt_AS
@@ -18136,8 +18073,9 @@ DLLTOOL=$lt_DLLTOOL
 # Object dumper program.
 OBJDUMP=$lt_OBJDUMP
 
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
 
 # Whether or not to build shared libraries.
 build_libtool_libs=$enable_shared
@@ -18148,9 +18086,6 @@ pic_mode=$pic_mode
 # Whether or not to optimize for fast installation.
 fast_install=$enable_fast_install
 
-# Shared archive member basename,for filename based shared library versioning on AIX.
-shared_archive_member_spec=$shared_archive_member_spec
-
 # Shell to use when invoking shell scripts.
 SHELL=$lt_SHELL
 
@@ -18262,27 +18197,18 @@ global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 # Transform the output of nm in a proper C declaration.
 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
-# Transform the output of nm into a list of symbols to manually relocate.
-global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
-
 # Transform the output of nm in a C name address pair.
 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
 # Transform the output of nm in a C name address pair when lib prefix is needed.
 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
-# The name lister interface.
-nm_interface=$lt_lt_cv_nm_interface
-
 # Specify filename containing input files for \$NM.
 nm_file_list_spec=$lt_nm_file_list_spec
 
-# The root where to search for dependent libraries,and where our libraries should be installed.
+# The root where to search for dependent libraries,and in which our libraries should be installed.
 lt_sysroot=$lt_sysroot
 
-# Command to truncate a binary pipe.
-lt_truncate_bin=$lt_lt_cv_truncate_bin
-
 # The name of the directory that contains temporary libtool files.
 objdir=$objdir
 
@@ -18373,11 +18299,8 @@ hardcode_into_libs=$hardcode_into_libs
 # Compile-time system search path for libraries.
 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
-# Detected run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
-
-# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
-configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Whether dlopen is supported.
 dlopen_support=$enable_dlopen
@@ -18470,13 +18393,13 @@ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct
 
-# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute
 
@@ -18528,72 +18451,13 @@ hardcode_action=$hardcode_action
 
 _LT_EOF
 
-    cat <<'_LT_EOF' >> "$cfgfile"
-
-# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
-
-# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x$2 in
-    x)
-        ;;
-    *:)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
-        ;;
-    x:*)
-        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
-        ;;
-    *)
-        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-
-
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in $*""; do
-      case $cc_temp in
-        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-
-
-# ### END FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_EOF
-
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test set != "${COLLECT_NAMES+set}"; then
+if test "X${COLLECT_NAMES+set}" != Xset; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -18602,7 +18466,7 @@ _LT_EOF
   esac
 
 
-ltmain=$ac_aux_dir/ltmain.sh
+ltmain="$ac_aux_dir/ltmain.sh"
 
 
   # We use sed instead of cat because bash on DJGPP gets confused if
@@ -18612,6 +18476,165 @@ ltmain=$ac_aux_dir/ltmain.sh
   sed '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
    mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
@@ -18656,20 +18679,6 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
-       pygobject $VERSION
-
-       Is release:                     $ax_is_release
-       Using python interpreter:       $PYTHON
-       cairo support:                  $enable_cairo
-       code coverage support:          $enable_code_coverage
-" >&5
-$as_echo "
-       pygobject $VERSION
-
-       Is release:                     $ax_is_release
-       Using python interpreter:       $PYTHON
-       cairo support:                  $enable_cairo
-       code coverage support:          $enable_code_coverage
-" >&6; }
-
+echo
+echo "libffi support: $have_libffi"
+echo
index 68351ca..92d518d 100644 (file)
@@ -1,36 +1,30 @@
 -*- mode: m4 -*-
-AC_PREREQ([2.68])
-
-# The version of python used is determined by the executable pointed to by the
-# --with-python switch, or if that's not set, by the PYTHON environment
-# variable.  For instance if your system installs Python 3 as python3 to
-# configure to compile pygobject under Python 3 you would do this:
-#   $ ./configure --with-python=python3
-# or
-#   $ PYTHON=python3 ./configure
-#
-# You can also build against a full interpreter path, such as
-#   $ ./configure --with-python=~/my-patched-python/python
-
-m4_define(python_min_ver, 2.7)
-m4_define(python3_min_ver, 3.3)
+AC_PREREQ(2.52)
+
+# The version of python used is determined by the executable pointed to by
+# the PYTHON environment variable.  For instance if your system installs
+# Python 3 as python3 to configure to compile pygobject under Python 3
+# you would do this:
+# $> PYTHON=python3 ./configure
+m4_define(python_min_ver, 2.5.2)
+m4_define(python3_min_ver, 3.1)
 
 dnl the pygobject version number
 m4_define(pygobject_major_version, 3)
-m4_define(pygobject_minor_version, 25)
+m4_define(pygobject_minor_version, 3)
 m4_define(pygobject_micro_version, 1)
 m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
 
 dnl versions of packages we require ...
-m4_define(introspection_required_version, 1.46.0)
-m4_define(pycairo_required_version, 1.11.1)
-m4_define(glib_required_version, 2.38.0)
-m4_define(gio_required_version, 2.38.0)
-
-AC_INIT([pygobject],[pygobject_version],
-       [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject],
-       [pygobject],[https://wiki.gnome.org/Projects/PyGObject/])
-AX_IS_RELEASE([minor-version])
+m4_define(introspection_required_version, 1.31.20)
+m4_define(py2cairo_required_version, 1.2.0)
+m4_define(py3cairo_required_version, 1.10.0)
+m4_define(glib_required_version, 2.31.0)
+m4_define(gio_required_version, 2.31.0)
+
+AC_INIT(pygobject, pygobject_version,
+        [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject])
+AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR([gi/gimodule.c])
 
@@ -41,83 +35,117 @@ AC_SUBST(PYGOBJECT_MINOR_VERSION, pygobject_minor_version)
 AC_DEFINE(PYGOBJECT_MICRO_VERSION, pygobject_micro_version, [pygobject micro version])
 AC_SUBST(PYGOBJECT_MICRO_VERSION, pygobject_micro_version)
 
-AC_CONFIG_HEADERS(config.h)
+AM_CONFIG_HEADER(config.h)
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
-AM_INIT_AUTOMAKE([1.13 foreign no-dist-gzip dist-xz])
+AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
+AM_MAINTAINER_MODE([enable])
+
+dnl put the ACLOCAL flags in the makefile
+ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
 
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
-AC_MSG_CHECKING([for build time linking with Python (Win32)])
+AC_MSG_CHECKING([for some Win32 platform])
 case "$host" in
   *-*-mingw*|*-*-cygwin*)
-    os_win32=yes
-    link_python_libs=yes
-    OS_EXT=dll
+    platform_win32=yes
     ;;
-  *-*-darwin*)
-    os_win32=no
-    link_python_libs=no
-    OS_EXT=dylib
+  *)
+    platform_win32=no
+    ;;
+esac
+AC_MSG_RESULT([$platform_win32])
+AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
+
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+  *-*-mingw*)
+    os_win32=yes
     ;;
   *)
     os_win32=no
-    link_python_libs=no
-    OS_EXT=so
     ;;
 esac
-AC_MSG_RESULT([$link_python_libs])
+AC_MSG_RESULT([$os_win32])
 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
 
-AC_SUBST(OS_EXT)
-AC_DEFINE_UNQUOTED(OS_EXT, "$OS_EXT", [Define shared library extension])
+AC_DISABLE_STATIC
 
-LT_PREREQ([2.2.6])
-LT_INIT([dlopen win32-dll disable-static])
+dnl XXXX hack to kill off all the libtool tags ...
+dnl it isn't like we are using C++ or Fortran.
+dnl (copied from libglade/configure.in)
+m4_define([_LT_AC_TAGCONFIG],[])
 
-AC_SEARCH_LIBS([strerror],[cposix])
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_LIBTOOL
+dnl when using libtool 2.x create libtool early, because it's used in configure
+m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
+AC_ISC_POSIX
 AC_PROG_CC
+AM_PROG_CC_STDC
 AM_PROG_CC_C_O
 
-# option to specify python interpreter to use; this just sets $PYTHON, so that
-# we will fallback to reading $PYTHON if --with-python is not given, and
-# python.m4 will get the expected input
-AC_ARG_WITH(python,
-  AS_HELP_STRING([--with-python=PATH],[Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
-  [PYTHON="$withval"], [])
-if test x"$PYTHON" = xyes; then
-       AC_MSG_ERROR([--with-python option requires a path or program argument])
-fi
-if test -n "$PYTHON" && ! which "$PYTHON"; then
-       AC_MSG_ERROR([Python interpreter $PYTHON does not exist])
-fi
-
-# check that we have the minimum version of python necessary to build
+# check that we have the minimum version of python necisary to build
 JD_PATH_PYTHON(python_min_ver)
 
 # check if we are building for python 3
-AM_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
+JD_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
                         build_py3k=true,
                         build_py3k=false)
 
 # if building for python 3 make sure we have the minimum version supported
 if test $build_py3k = true ; then
   AC_MSG_CHECKING([for $PYTHON >=] python3_min_ver)
-  AM_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
+  JD_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
                          [AC_MSG_RESULT(yes)],
                          [AC_MSG_ERROR(too old)])
 fi
 
-# - 'SO' for PyPy, CPython 2.7-3.2
-# - 'EXT_SUFFIX' for CPython3.3+ (http://bugs.python.org/issue16754)
-# - fallback to '.so'
-PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfig.get_config_var; sys.stdout.write(get('EXT_SUFFIX') or get('SO') or '.so');"`
-AC_SUBST(PYTHON_SO)
+AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
+if test "x$os_win32" = "xyes"; then
+  AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
+fi
+
+AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
+old_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
+AC_TRY_COMPILE([#include <Python.h>],
+  [PySignal_SetWakeupFd(0);],
+  setwakeupfd_ok=yes,
+  setwakeupfd_ok=no)
+AC_MSG_RESULT($setwakeupfd_ok)
+if test "x$setwakeupfd_ok" != xno; then
+  AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
+                [Define to 1 if PySignal_SetWakeupFd is available])
+fi
+CPPFLAGS=$old_CPPFLAGS
+
+PLATFORM=`$PYTHON -c "import sys; from distutils import util; sys.stdout.write(util.get_platform())"`
+AC_SUBST(PLATFORM)
+
+AC_ARG_ENABLE(thread,
+  AC_HELP_STRING([--disable-thread], [Disable pygobject threading support]),,
+  enable_thread=yes)
 
-PYG_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
-if test "x$link_python_libs" = "xyes"; then
-  PYG_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
+AM_CHECK_PYMOD(thread,,,enable_thread=check_for_py3_module)
+if test "x$enable_thread" = xcheck_for_py3_module; then
+  dnl Python 3 uses the _thread module so check for that
+  AM_CHECK_PYMOD(_thread,,,enable_thread=no)
 fi
 
+AC_MSG_CHECKING(whether to enable threading in pygobject)
+if test "x$enable_thread" != xno; then
+  extra_mods=gthread
+  THREADING_CFLAGS=
+  AC_MSG_RESULT(yes)
+else
+  extra_mods=
+  THREADING_CFLAGS="-DDISABLE_THREADING"
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST(THREADING_CFLAGS)
+CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS"
+
 dnl get rid of the -export-dynamic stuff from the configure flags ...
 export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
 
@@ -126,14 +154,29 @@ AM_PATH_GLIB_2_0(glib_required_version,,[AC_MSG_ERROR(maybe you want the pygobje
 if test -n "$export_dynamic"; then
   GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
 fi
+PYTHON_BASENAME=`basename $PYTHON`
+AC_SUBST([PYTHON_BASENAME])
 
-PYTHON_VALGRIND_SUPP=`$PYTHON -c "import sys; sys.stdout.write('python' + sys.version.__getitem__(0))"`
-AC_SUBST([PYTHON_VALGRIND_SUPP])
+AS_AC_EXPAND(DATADIR, $datadir)
 
 dnl libffi
-PKG_CHECK_MODULES(FFI, libffi >= 3.0)
-LIBFFI_PC=libffi
-
+AC_MSG_CHECKING(for ffi)
+AC_ARG_WITH(ffi,
+  AC_HELP_STRING([--without-ffi], [Disable libffi support]),
+  with_libffi=$withval,
+  with_libffi=auto)
+if test x"$with_libffi" = xno ; then
+  have_libffi=false
+else
+  PKG_CHECK_MODULES(FFI, libffi >= 3.0, have_libffi=yes, have_libffi=no)
+fi
+if test x"$with_libffi" = xyes && test x"$have_libffi" = xno ; then
+  AC_MSG_ERROR([ffi requested, but not found])
+fi
+if test x"$have_libffi" = xyes; then
+  LIBFFI_PC=libffi
+fi
+AM_CONDITIONAL(HAVE_LIBFFI, test "$have_libffi" = "yes")
 AC_SUBST(FFI_CFLAGS)
 AC_SUBST(FFI_LIBS)
 AC_SUBST(LIBFFI_PC)
@@ -142,7 +185,7 @@ dnl gio
 PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version)
 
 AC_ARG_ENABLE(cairo,
-    AS_HELP_STRING([--enable-cairo],[Enable Cairo bindings using introspection information]),
+    AC_HELP_STRING([--enable-cairo], [Enable Cairo bindings using introspection information]),
     enable_cairo=$enableval,
     enable_cairo=yes)
 
@@ -151,45 +194,42 @@ PKG_CHECK_MODULES(GI,
     gobject-introspection-1.0 >= introspection_required_version
 )
 
-GOBJECT_INTROSPECTION_CHECK(introspection_required_version)
-
 GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
 AC_SUBST(GI_DATADIR)
 
 if test "$enable_cairo" != no; then
-    PKG_CHECK_MODULES(CAIRO, cairo cairo-gobject)
-
     if test $build_py3k = true; then
         PKG_CHECK_MODULES(PYCAIRO,
-            py3cairo >= pycairo_required_version
+            py3cairo >= py3cairo_required_version
         )
     else
         PKG_CHECK_MODULES(PYCAIRO,
-            pycairo >= pycairo_required_version
+            pycairo >= py2cairo_required_version
         )
     fi
 fi
 AM_CONDITIONAL(ENABLE_CAIRO, test "$enable_cairo" = "yes")
 
-AC_ARG_WITH(common,
-    AS_HELP_STRING([--without-common],
-        [For package maintainers: do not install Python version independent files]),
-    with_common=$enableval,
-    with_common=yes)
-AM_CONDITIONAL(WITH_COMMON, test "$with_common" = "yes")
-
-# Disable -Werror always, see
-# https://mail.gnome.org/archives/desktop-devel-list/2017-April/msg00009.html
-AX_COMPILER_FLAGS(,, [yes])
-# Disable some warnings, either because they get generated by headers of
-# dependencies we don't control or because it was hard to fix them.
-# Feel free and try to get rid of them.
-# For clang only:
-AX_APPEND_COMPILE_FLAGS([-Wno-unknown-warning-option -Wno-incompatible-pointer-types-discards-qualifiers -Wno-cast-align])
-# For gcc + clang:
-AX_APPEND_COMPILE_FLAGS([-Wno-discarded-qualifiers -Wno-redundant-decls -Wno-switch-enum -Wno-undef])
-
-AX_CODE_COVERAGE()
+INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
+INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
+
+AC_SUBST(INTROSPECTION_SCANNER)
+AC_SUBST(INTROSPECTION_COMPILER)
+
+dnl add required cflags ...
+if test "x$GCC" = "xyes"; then
+  JH_ADD_CFLAG([-Wall])
+  JH_ADD_CFLAG([-fno-strict-aliasing])
+
+  case $host_os in
+  solaris*)
+    ;;
+  *)
+    JH_ADD_CFLAG([-std=c9x])
+    ;;
+  esac
+
+fi
 
 AC_CONFIG_FILES(
   Makefile
@@ -198,18 +238,13 @@ AC_CONFIG_FILES(
   gi/Makefile
   gi/repository/Makefile
   gi/overrides/Makefile
+  gi/_glib/Makefile
+  gi/_gobject/Makefile
   examples/Makefile
   tests/Makefile
-  pygtkcompat/Makefile
   PKG-INFO)
 AC_OUTPUT
 
-AC_MSG_RESULT([
-       pygobject $VERSION
-
-       Is release:                     $ax_is_release
-       Using python interpreter:       $PYTHON
-       cairo support:                  $enable_cairo
-       code coverage support:          $enable_code_coverage
-])
-
+echo
+echo "libffi support: $have_libffi"
+echo
diff --git a/depcomp b/depcomp
index fc98710..bd0ac08 100755 (executable)
--- a/depcomp
+++ b/depcomp
@@ -1,9 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2011-12-04.11; # UTC
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,9 +28,9 @@ scriptversion=2013-05-30.07; # UTC
 
 case $1 in
   '')
-    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-    exit 1;
-    ;;
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -39,8 +40,8 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by 'PROGRAMS ARGS'.
-  object      Object file output by 'PROGRAMS ARGS'.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
   tmpdepfile  Temporary file to use when outputting dependencies.
@@ -56,66 +57,6 @@ EOF
     ;;
 esac
 
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'.  Note that this directory component will
-# be either empty or ending with a '/' character.  This is deliberate.
-set_dir_from ()
-{
-  case $1 in
-    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
-      *) dir=;;
-  esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
-  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
-  echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
-  # If the compiler actually managed to produce a dependency file,
-  # post-process it.
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependency.h'.
-    # Do two passes, one to just change these to
-    #   $object: dependency.h
-    # and one to simply output
-    #   dependency.h:
-    # which is needed to avoid the deleted-header problem.
-    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
-      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
-    } > "$depfile"
-    rm -f "$tmpdepfile"
-  else
-    make_dummy_depfile
-  fi
-}
-
-# A tabulation character.
-tab='  '
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -128,9 +69,6 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -142,32 +80,26 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-  # This is just like dashmstdout with a different argument.
-  dashmflag=-xM
-  depmode=dashmstdout
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-  # This is just like msvisualcpp but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvisualcpp
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvisualcpp
 fi
 
 if test "$depmode" = msvc7msys; then
-  # This is just like msvc7 but w/o cygpath translation.
-  # Just convert the backslash-escaped backslashes to single forward
-  # slashes to satisfy depend.m4
-  cygpath_u='sed s,\\\\,/,g'
-  depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
-  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
-  gccflag=-qmakedep=gcc,-MF
-  depmode=gcc
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
 fi
 
 case "$depmode" in
@@ -190,7 +122,8 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -198,17 +131,13 @@ gcc3)
   ;;
 
 gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).  Also, it might not be
-##   supported by the other compilers which use the 'gcc' depmode.
+##   -MM, not -M (despite what the docs say).
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -216,31 +145,33 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  # The second -e expression handles DOS-style file names with drive
-  # letters.
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
+## This next piece of magic avoids the `deleted header file' problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-## Some versions of gcc put a space before the ':'.  On the theory
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
 ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -258,7 +189,8 @@ sgi)
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -266,41 +198,43 @@ sgi)
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
+
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
+    # the IRIX cc adds comments like `#:fec' to the end of the
     # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
-      | tr "$nl" ' ' >> "$depfile"
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
     echo >> "$depfile"
+
     # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-      >> "$depfile"
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
   else
-    make_dummy_depfile
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
   fi
   rm -f "$tmpdepfile"
   ;;
 
-xlc)
-  # This case exists only to let depend.m4 do its work.  It works by
-  # looking at the text of this script.  This case will never be run,
-  # since it is checked for above.
-  exit 1
-  ;;
-
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts '$object:' at the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  set_dir_from "$object"
-  set_base_from "$object"
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -313,7 +247,9 @@ aix)
     "$@" -M
   fi
   stat=$?
-  if test $stat -ne 0; then
+
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -322,100 +258,44 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  aix_post_process_depfile
-  ;;
-
-tcc)
-  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
-  # FIXME: That version still under development at the moment of writing.
-  #        Make that this statement remains true also for stable, released
-  #        versions.
-  # It will wrap lines (doesn't matter whether long or short) with a
-  # trailing '\', as in:
-  #
-  #   foo.o : \
-  #    foo.c \
-  #    foo.h \
-  #
-  # It will put a trailing '\' even on the last line, and will use leading
-  # spaces rather than leading tabs (at least since its commit 0394caf7
-  # "Emit spaces for -MD").
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile"
-    exit $stat
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
   fi
-  rm -f "$depfile"
-  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
-  # We have to change lines of the first kind to '$object: \'.
-  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
-  # And for each line of the second kind, we have to emit a 'dep.h:'
-  # dummy dependency, to avoid the deleted-header problem.
-  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file.  A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
-  # Portland's C compiler understands '-MD'.
-  # Will always output deps to 'file.d' where file is the root name of the
-  # source file under compilation, even if file resides in a subdirectory.
-  # The object file name does not affect the name of the '.d' file.
-  # pgcc 10.2 will output
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\' :
+  # and will wrap long lines using \ :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-  set_dir_from "$object"
-  # Use the source, not the object, to determine the base name, since
-  # that's sadly what pgcc will do too.
-  set_base_from "$source"
-  tmpdepfile=$base.d
-
-  # For projects that build the same source file twice into different object
-  # files, the pgcc approach of using the *source* file root name can cause
-  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-  # the same $tmpdepfile.
-  lockdir=$base.d-lock
-  trap "
-    echo '$0: caught signal, cleaning up...' >&2
-    rmdir '$lockdir'
-    exit 1
-  " 1 2 13 15
-  numtries=100
-  i=$numtries
-  while test $i -gt 0; do
-    # mkdir is a portable test-and-set.
-    if mkdir "$lockdir" 2>/dev/null; then
-      # This process acquired the lock.
-      "$@" -MD
-      stat=$?
-      # Release the lock.
-      rmdir "$lockdir"
-      break
-    else
-      # If the lock is being held by a different process, wait
-      # until the winning process is done or we timeout.
-      while test -d "$lockdir" && test $i -gt 0; do
-        sleep 1
-        i=`expr $i - 1`
-      done
-    fi
-    i=`expr $i - 1`
-  done
-  trap - 1 2 13 15
-  if test $i -le 0; then
-    echo "$0: failed to acquire lock after $numtries attempts" >&2
-    echo "$0: check lockdir '$lockdir'" >&2
-    exit 1
-  fi
 
-  if test $stat -ne 0; then
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -427,8 +307,8 @@ pgcc)
   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
   # Some versions of the HPUX 10.20 sed can't process this invocation
   # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
-    sed -e 's/$/ :/' >> "$depfile"
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -439,8 +319,9 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  set_dir_from  "$object"
-  set_base_from "$object"
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -451,7 +332,8 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -ne 0; then
+  if test $stat -eq 0; then :
+  else
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -461,61 +343,77 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add 'dependent.h:' lines.
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
     sed -ne '2,${
-               s/^ *//
-               s/ \\*$//
-               s/$/:/
-               p
-             }' "$tmpdepfile" >> "$depfile"
+              s/^ *//
+              s/ \\*$//
+              s/$/:/
+              p
+            }' "$tmpdepfile" >> "$depfile"
   else
-    make_dummy_depfile
+    echo "#dummy" > "$depfile"
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-  # The Tru64 compiler uses -MD to generate dependencies as a side
-  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-  # dependencies in 'foo.d' instead, so we check for that too.
-  # Subdirectories are respected.
-  set_dir_from  "$object"
-  set_base_from "$object"
-
-  if test "$libtool" = yes; then
-    # Libtool generates 2 separate objects for the 2 libraries.  These
-    # two compilations output dependencies in $dir.libs/$base.o.d and
-    # in $dir$base.o.d.  We have to check for both files, because
-    # one of the two compilations can be disabled.  We should prefer
-    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-    # automatically cleaned when .libs/ is deleted, while ignoring
-    # the former would cause a distcleancheck panic.
-    tmpdepfile1=$dir$base.o.d          # libtool 1.5
-    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
-    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
-    "$@" -Wc,-MD
-  else
-    tmpdepfile1=$dir$base.d
-    tmpdepfile2=$dir$base.d
-    tmpdepfile3=$dir$base.d
-    "$@" -MD
-  fi
-
-  stat=$?
-  if test $stat -ne 0; then
-    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-    exit $stat
-  fi
-
-  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
-  do
-    test -f "$tmpdepfile" && break
-  done
-  # Same post-processing that is required for AIX mode.
-  aix_post_process_depfile
-  ;;
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
 
 msvc7)
   if test "$libtool" = yes; then
@@ -526,7 +424,8 @@ msvc7)
   "$@" $showIncludes > "$tmpdepfile"
   stat=$?
   grep -v '^Note: including file: ' "$tmpdepfile"
-  if test $stat -ne 0; then
+  if test "$stat" = 0; then :
+  else
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -544,15 +443,14 @@ msvc7)
   p
 }' | $cygpath_u | sort -u | sed -n '
 s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
+s/\(.*\)/      \1 \\/p
 s/.\(.*\) \\/\1:/
 H
 $ {
-  s/.*/'"$tab"'/
+  s/.*/        /
   G
   p
 }' >> "$depfile"
-  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
   rm -f "$tmpdepfile"
   ;;
 
@@ -580,7 +478,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove '-o $object'.
+  # Remove `-o $object'.
   IFS=" "
   for arg
   do
@@ -600,18 +498,18 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for ':'
+  # Require at least two characters before searching for `:'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
   "$@" $dashmflag |
-    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this sed invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -664,12 +562,11 @@ makedepend)
   # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process the last invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed '1,2d' "$tmpdepfile" \
-    | tr ' ' "$nl" \
-    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
-    | sed -e 's/$/ :/' >> "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -686,7 +583,7 @@ cpp)
     shift
   fi
 
-  # Remove '-o $object'.
+  # Remove `-o $object'.
   IFS=" "
   for arg
   do
@@ -705,10 +602,10 @@ cpp)
     esac
   done
 
-  "$@" -E \
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -740,23 +637,23 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-        set fnord "$@"
-        shift
-        shift
-        ;;
+       set fnord "$@"
+       shift
+       shift
+       ;;
     *)
-        set fnord "$@" "$arg"
-        shift
-        shift
-        ;;
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
     esac
   done
   "$@" -E 2>/dev/null |
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
-  echo "$tab" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::     \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
index af9f3d7..b680b90 100644 (file)
@@ -1 +1,4 @@
 EXTRA_DIST = properties.py signal.py option.py cairo-demo.py
+
+
+-include $(top_srcdir)/git.mk
index fb648c3..7931d4b 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -88,54 +34,30 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
+am__v_GEN_0 = @echo "  GEN   " $@;
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
-am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -144,20 +66,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -171,8 +86,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -190,15 +103,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -208,7 +114,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -216,7 +122,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -230,30 +135,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -302,7 +205,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -315,7 +217,7 @@ EXTRA_DIST = properties.py signal.py option.py cairo-demo.py
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -327,6 +229,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign examples/Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -339,9 +242,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -350,11 +253,11 @@ mostlyclean-libtool:
 
 clean-libtool:
        -rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
+tags: TAGS
+TAGS:
 
-cscope cscopelist:
+ctags: CTAGS
+CTAGS:
 
 
 distdir: $(DISTFILES)
@@ -490,19 +393,18 @@ uninstall-am:
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       cscopelist-am ctags-am distclean distclean-generic \
-       distclean-libtool distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+-include $(top_srcdir)/git.mk
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index ee33cdd..7b90ec3 100755 (executable)
@@ -126,6 +126,5 @@ def main():
     win.show_all()
     Gtk.main()
 
-
 if __name__ == '__main__':
     main()
index 73860f5..4c61602 100644 (file)
@@ -1,28 +1,29 @@
 #!/usr/bin/env python
+# gnome-python/pygobject/examples/option.py
 
-from gi.repository import GLib
+from gobject.option import OptionGroup, OptionParser, make_option
 
-group = GLib.option.OptionGroup(
-    "example", "OptionGroup Example", "Shows all example options",
-    option_list=[GLib.option.make_option("--example",
-                                         action="store_true",
-                                         dest="example",
-                                         help="An example option."),
-                ])
-
-parser = GLib.option.OptionParser(
-    "NAMES ...", description="A simple gobject.option example.",
-    option_list=[GLib.option.make_option("--file", "-f",
-                                         type="filename",
-                                         action="store",
-                                         dest="file",
-                                         help="A filename option"),
-                 # ...
-                ])
+group = OptionGroup("example", "OptionGroup Example", "Shows all example options",
+    option_list=[
+        make_option("--example",
+                    action="store_true",
+                    dest="example",
+                    help="An example option."),
+    ])
+parser = OptionParser("NAMES ...",
+    description="A simple gobject.option example.",
+    option_list=[
+        make_option("--file", "-f",
+                    type="filename",
+                    action="store",
+                    dest="file",
+                    help="A filename option"),
+        # ...
+    ])
 
 parser.add_option_group(group)
 
 parser.parse_args()
 
-print("group: example " + str(group.values.example))
-print("parser: file " + str(parser.values.file))
+print "group: example ", group.values.example
+print "parser: file", parser.values.file
index 257e80a..465b3c3 100644 (file)
@@ -13,21 +13,20 @@ class MyObject(GObject.GObject):
     def readonly(self):
         return 'readonly'
 
-
 GObject.type_register(MyObject)
 
-print("MyObject properties: ", list(MyObject.props))
+print "MyObject properties: ", list(MyObject.props)
 
 obj = MyObject()
 
-print("obj.foo ==", obj.foo)
+print "obj.foo ==", obj.foo
 
 obj.foo = 'spam'
-print("obj.foo = spam")
+print "obj.foo = spam"
 
-print("obj.foo == ", obj.foo)
+print "obj.foo == ", obj.foo
 
-print("obj.boolprop == ", obj.boolprop)
+print "obj.boolprop == ", obj.boolprop
 
-print(obj.readonly)
+print obj.readonly
 obj.readonly = 'does-not-work'
index 69c1d62..057adda 100644 (file)
@@ -1,42 +1,29 @@
-from __future__ import print_function
-
 from gi.repository import GObject
 
 
 class C(GObject.GObject):
-    @GObject.Signal(arg_types=(int,))
-    def my_signal(self, arg):
-        """Decorator style signal which uses the method name as signal name and
-        the method as the closure.
-
-        Note that with python3 annotations can be used for argument types as follows:
-            @GObject.Signal
-            def my_signal(self, arg:int):
-                pass
-        """
-        print("C: class closure for `my_signal' called with argument", arg)
+    __gsignals__ = {
+        'my_signal': (GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE,
+                      (GObject.TYPE_INT,))
+    }
 
-    @GObject.Signal
-    def noarg_signal(self):
-        """Decoration of a signal using all defaults and no arguments."""
-        print("C: class closure for `noarg_signal' called")
+    def do_my_signal(self, arg):
+        print "C: class closure for `my_signal' called with argument", arg
 
 
 class D(C):
     def do_my_signal(self, arg):
-        print("D: class closure for `my_signal' called.  Chaining up to C")
-        C.my_signal(self, arg)
-
+        print "D: class closure for `my_signal' called.  Chaining up to C"
+        C.do_my_signal(self, arg)
 
-def my_signal_handler(obj, arg, *extra):
-    print("handler for `my_signal' called with argument", arg, "and extra args", extra)
 
+def my_signal_handler(object, arg, *extra):
+    print "handler for `my_signal' called with argument", arg, \
+          "and extra args", extra
 
 inst = C()
 inst2 = D()
 
 inst.connect("my_signal", my_signal_handler, 1, 2, 3)
-inst.connect("noarg_signal", my_signal_handler, 1, 2, 3)
 inst.emit("my_signal", 42)
-inst.emit("noarg_signal")
 inst2.emit("my_signal", 42)
index 3841075..c51d551 100644 (file)
@@ -1,8 +1,8 @@
-PLATFORM_VERSION = 3.0
-
 SUBDIRS = \
        repository \
-       overrides
+       overrides \
+        _glib \
+       _gobject
 
 extension_cppflags = \
        $(PYTHON_INCLUDES) \
@@ -10,8 +10,7 @@ extension_cppflags = \
 
 extension_ldflags = \
        -module \
-       -avoid-version \
-       -shrext $(PYTHON_SO)
+       -avoid-version
 
 if OS_WIN32
 # Windows requires Python modules to be explicitly linked to libpython.
@@ -21,64 +20,34 @@ extension_libadd = \
        $(PYTHON_LIBS)
 
 extension_ldflags += \
-       -no-undefined
-endif
-
-pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
-if WITH_COMMON
-pkginclude_HEADERS = pygobject.h
+       -no-undefined \
+       -shrext ".pyd"
 endif
 
 pygidir = $(pyexecdir)/gi
 
+pygi_PYTHON = \
+       __init__.py \
+       types.py \
+       module.py \
+       importer.py \
+       pygtkcompat.py
+
 pygi_LTLIBRARIES = _gi.la
 
 _gi_la_SOURCES = \
-       gobjectmodule.c \
-       gobjectmodule.h \
-       pygboxed.c \
-       pygboxed.h \
-       pygenum.c \
-       pygenum.h \
-       pygflags.c \
-       pygflags.h \
-       pyginterface.c \
-       pyginterface.h \
-       pygobject.h \
-       pygobject-internal.h \
-       pygobject-object.c \
-       pygobject-object.h \
-       pygparamspec.c \
-       pygparamspec.h \
-       pygpointer.c \
-       pygpointer.h \
-       pygtype.c \
-       pygtype.h \
-       pygoptioncontext.c \
-       pygoptioncontext.h \
-       pygoptiongroup.c \
-       pygoptiongroup.h \
-       pygspawn.c \
-       pygspawn.h \
-       pyglib.c \
-       pyglib.h \
-       pyglib-python-compat.h \
-       gimodule.c \
        pygi-repository.c \
        pygi-repository.h \
        pygi-info.c \
        pygi-info.h \
        pygi-foreign.c \
        pygi-foreign.h \
-       pygi-foreign-api.h \
+       pygi-foreign-gvariant.c \
+       pygi-foreign-gvariant.h \
        pygi-struct.c \
        pygi-struct.h \
-       pygi-source.c \
-       pygi-source.h \
        pygi-argument.c \
        pygi-argument.h \
-       pygi-resulttuple.c \
-       pygi-resulttuple.h \
        pygi-type.c \
        pygi-type.h \
        pygi-boxed.c \
@@ -87,54 +56,38 @@ _gi_la_SOURCES = \
        pygi-closure.h \
        pygi-ccallback.c \
        pygi-ccallback.h \
-       pygi-util.c \
-       pygi-util.h \
+       pygi-callbacks.c \
+       pygi-callbacks.h \
+       pygi.h \
+       pygi-private.h \
        pygi-property.c \
        pygi-property.h \
        pygi-signal-closure.c \
        pygi-signal-closure.h \
+       pygobject-external.h \
+       gimodule.c \
        pygi-invoke.c \
        pygi-invoke.h \
        pygi-invoke-state-struct.h \
        pygi-cache.h \
        pygi-cache.c \
+       pygi-marshal-from-py.c \
+       pygi-marshal-from-py.h \
+       pygi-marshal-to-py.c \
+       pygi-marshal-to-py.h \
        pygi-marshal-cleanup.c \
-       pygi-marshal-cleanup.h \
-       pygi-basictype.c \
-       pygi-basictype.h \
-       pygi-list.c \
-       pygi-list.h \
-       pygi-array.c \
-       pygi-array.h \
-       pygi-error.c \
-       pygi-error.h \
-       pygi-object.c \
-       pygi-object.h \
-       pygi-value.c \
-       pygi-value.h \
-       pygi-enum-marshal.c \
-       pygi-enum-marshal.h \
-       pygi-struct-marshal.c \
-       pygi-struct-marshal.h \
-       pygi-hashtable.c \
-       pygi-hashtable.h
+       pygi-marshal-cleanup.h
 _gi_la_CFLAGS = \
-       $(CODE_COVERAGE_CFLAGS) \
-       $(WARN_CFLAGS) \
-       $(extension_cppflags) \
-       $(GLIB_CFLAGS) \
        $(GI_CFLAGS)
 _gi_la_CPPFLAGS = \
-       $(CODE_COVERAGE_CPPFLAGS) \
-       $(extension_cppflags)
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 _gi_la_LIBADD = \
-       $(CODE_COVERAGE_LIBS) \
        $(extension_libadd) \
-       $(GLIB_LIBS) \
        $(GI_LIBS) \
-       $(FFI_LIBS)
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
 _gi_la_LDFLAGS = \
-       $(WARN_LDFLAGS) \
        $(extension_ldflags) \
        -export-symbols-regex "init_gi|PyInit__gi"
 
@@ -145,22 +98,17 @@ endif
 _gi_cairo_la_SOURCES = \
        pygi-foreign-cairo.c
 _gi_cairo_la_CFLAGS = \
-       $(CODE_COVERAGE_CFLAGS) \
-       $(WARN_CFLAGS) \
        $(GI_CFLAGS) \
-       $(CAIRO_CFLAGS) \
        $(PYCAIRO_CFLAGS)
 _gi_cairo_la_CPPFLAGS = \
-       $(CODE_COVERAGE_CPPFLAGS) \
-       $(extension_cppflags)
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 _gi_cairo_la_LIBADD = \
-       $(CODE_COVERAGE_LIBS) \
        $(extension_libadd) \
        $(GI_LIBS) \
-       $(CAIRO_LIBS) \
        $(PYCAIRO_LIBS)
 _gi_cairo_la_LDFLAGS = \
-       $(WARN_LDFLAGS) \
        $(extension_ldflags) \
        -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
 
@@ -168,11 +116,22 @@ _gi_cairo_la_LDFLAGS = \
 # This is to ensure we have a symlink to the .so in the
 # build directory, which the Python interpreter can load
 # directly without having to know how to parse .la files.
-%$(PYTHON_SO): %.la
-       $(LN_S) -f .libs/$@ $@
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
 
-all-local: $(LTLIBRARIES:.la=$(PYTHON_SO))
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygi_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
 
-check-local: $(LTLIBRARIES:.la=$(PYTHON_SO))
+all-local: $(LTLIBRARIES:.la=.so) build_pylinks
+
+check-local: $(LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
-       rm -f $(LTLIBRARIES:.la=$(PYTHON_SO))
+       rm -f $(LTLIBRARIES:.la=.so)
+
+
+-include $(top_srcdir)/git.mk
index 6382c76..87ad450 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 
-
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
 pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -89,32 +35,21 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 @OS_WIN32_TRUE@am__append_1 = \
-@OS_WIN32_TRUE@        -no-undefined
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
 
 @ENABLE_CAIRO_TRUE@am__append_2 = _gi_cairo.la
 subdir = gi
+DIST_COMMON = $(pygi_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__pkginclude_HEADERS_DIST) \
-       $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -146,42 +81,30 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pkgincludedir)"
+am__installdirs = "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pygidir)"
 LTLIBRARIES = $(pygi_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 @OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-_gi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
-am__gi_la_OBJECTS = _gi_la-gobjectmodule.lo _gi_la-pygboxed.lo \
-       _gi_la-pygenum.lo _gi_la-pygflags.lo _gi_la-pyginterface.lo \
-       _gi_la-pygobject-object.lo _gi_la-pygparamspec.lo \
-       _gi_la-pygpointer.lo _gi_la-pygtype.lo \
-       _gi_la-pygoptioncontext.lo _gi_la-pygoptiongroup.lo \
-       _gi_la-pygspawn.lo _gi_la-pyglib.lo _gi_la-gimodule.lo \
-       _gi_la-pygi-repository.lo _gi_la-pygi-info.lo \
-       _gi_la-pygi-foreign.lo _gi_la-pygi-struct.lo \
-       _gi_la-pygi-source.lo _gi_la-pygi-argument.lo \
-       _gi_la-pygi-resulttuple.lo _gi_la-pygi-type.lo \
-       _gi_la-pygi-boxed.lo _gi_la-pygi-closure.lo \
-       _gi_la-pygi-ccallback.lo _gi_la-pygi-util.lo \
-       _gi_la-pygi-property.lo _gi_la-pygi-signal-closure.lo \
+_gi_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+am__gi_la_OBJECTS = _gi_la-pygi-repository.lo _gi_la-pygi-info.lo \
+       _gi_la-pygi-foreign.lo _gi_la-pygi-foreign-gvariant.lo \
+       _gi_la-pygi-struct.lo _gi_la-pygi-argument.lo \
+       _gi_la-pygi-type.lo _gi_la-pygi-boxed.lo \
+       _gi_la-pygi-closure.lo _gi_la-pygi-ccallback.lo \
+       _gi_la-pygi-callbacks.lo _gi_la-pygi-property.lo \
+       _gi_la-pygi-signal-closure.lo _gi_la-gimodule.lo \
        _gi_la-pygi-invoke.lo _gi_la-pygi-cache.lo \
-       _gi_la-pygi-marshal-cleanup.lo _gi_la-pygi-basictype.lo \
-       _gi_la-pygi-list.lo _gi_la-pygi-array.lo _gi_la-pygi-error.lo \
-       _gi_la-pygi-object.lo _gi_la-pygi-value.lo \
-       _gi_la-pygi-enum-marshal.lo _gi_la-pygi-struct-marshal.lo \
-       _gi_la-pygi-hashtable.lo
+       _gi_la-pygi-marshal-from-py.lo _gi_la-pygi-marshal-to-py.lo \
+       _gi_la-pygi-marshal-cleanup.lo
 _gi_la_OBJECTS = $(am__gi_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
-am__v_lt_1 = 
 _gi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gi_la_CFLAGS) $(CFLAGS) \
        $(_gi_la_LDFLAGS) $(LDFLAGS) -o $@
-_gi_cairo_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+_gi_cairo_la_DEPENDENCIES = $(am__DEPENDENCIES_2) \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am__gi_cairo_la_OBJECTS = _gi_cairo_la-pygi-foreign-cairo.lo
 _gi_cairo_la_OBJECTS = $(am__gi_cairo_la_OBJECTS)
@@ -189,18 +112,6 @@ _gi_cairo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gi_cairo_la_CFLAGS) \
        $(CFLAGS) $(_gi_cairo_la_LDFLAGS) $(LDFLAGS) -o $@
 @ENABLE_CAIRO_TRUE@am__gi_cairo_la_rpath = -rpath $(pygidir)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -213,62 +124,39 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(_gi_la_SOURCES) $(_gi_cairo_la_SOURCES)
 DIST_SOURCES = $(_gi_la_SOURCES) $(_gi_cairo_la_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
-       ctags-recursive dvi-recursive html-recursive info-recursive \
-       install-data-recursive install-dvi-recursive \
-       install-exec-recursive install-html-recursive \
-       install-info-recursive install-pdf-recursive \
-       install-ps-recursive install-recursive installcheck-recursive \
-       installdirs-recursive pdf-recursive ps-recursive \
-       tags-recursive uninstall-recursive
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__pkginclude_HEADERS_DIST = pygobject.h
-HEADERS = $(pkginclude_HEADERS)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+       html-recursive info-recursive install-data-recursive \
+       install-dvi-recursive install-exec-recursive \
+       install-html-recursive install-info-recursive \
+       install-pdf-recursive install-ps-recursive install-recursive \
+       installcheck-recursive installdirs-recursive pdf-recursive \
+       ps-recursive uninstall-recursive
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
+py_compile = $(top_srcdir)/py-compile
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
-  $(RECURSIVE_TARGETS) \
-  $(RECURSIVE_CLEAN_TARGETS) \
-  $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
        distdir
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 am__relativize = \
   dir0=`pwd`; \
@@ -295,8 +183,8 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -305,20 +193,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -332,8 +213,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -351,15 +230,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -369,7 +241,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -377,7 +249,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -391,30 +262,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -463,7 +332,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -472,17 +340,17 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-PLATFORM_VERSION = 3.0
 SUBDIRS = \
        repository \
-       overrides
+       overrides \
+        _glib \
+       _gobject
 
 extension_cppflags = \
        $(PYTHON_INCLUDES) \
        -DPY_SSIZE_T_CLEAN
 
-extension_ldflags = -module -avoid-version -shrext $(PYTHON_SO) \
-       $(am__append_1)
+extension_ldflags = -module -avoid-version $(am__append_1)
 
 # Windows requires Python modules to be explicitly linked to libpython.
 # Extension modules are shared libaries (.dll), but need to be
@@ -490,55 +358,28 @@ extension_ldflags = -module -avoid-version -shrext $(PYTHON_SO) \
 @OS_WIN32_TRUE@extension_libadd = \
 @OS_WIN32_TRUE@        $(PYTHON_LIBS)
 
-@WITH_COMMON_TRUE@pkginclude_HEADERS = pygobject.h
 pygidir = $(pyexecdir)/gi
+pygi_PYTHON = \
+       __init__.py \
+       types.py \
+       module.py \
+       importer.py \
+       pygtkcompat.py
+
 pygi_LTLIBRARIES = _gi.la $(am__append_2)
 _gi_la_SOURCES = \
-       gobjectmodule.c \
-       gobjectmodule.h \
-       pygboxed.c \
-       pygboxed.h \
-       pygenum.c \
-       pygenum.h \
-       pygflags.c \
-       pygflags.h \
-       pyginterface.c \
-       pyginterface.h \
-       pygobject.h \
-       pygobject-internal.h \
-       pygobject-object.c \
-       pygobject-object.h \
-       pygparamspec.c \
-       pygparamspec.h \
-       pygpointer.c \
-       pygpointer.h \
-       pygtype.c \
-       pygtype.h \
-       pygoptioncontext.c \
-       pygoptioncontext.h \
-       pygoptiongroup.c \
-       pygoptiongroup.h \
-       pygspawn.c \
-       pygspawn.h \
-       pyglib.c \
-       pyglib.h \
-       pyglib-python-compat.h \
-       gimodule.c \
        pygi-repository.c \
        pygi-repository.h \
        pygi-info.c \
        pygi-info.h \
        pygi-foreign.c \
        pygi-foreign.h \
-       pygi-foreign-api.h \
+       pygi-foreign-gvariant.c \
+       pygi-foreign-gvariant.h \
        pygi-struct.c \
        pygi-struct.h \
-       pygi-source.c \
-       pygi-source.h \
        pygi-argument.c \
        pygi-argument.h \
-       pygi-resulttuple.c \
-       pygi-resulttuple.h \
        pygi-type.c \
        pygi-type.h \
        pygi-boxed.c \
@@ -547,58 +388,42 @@ _gi_la_SOURCES = \
        pygi-closure.h \
        pygi-ccallback.c \
        pygi-ccallback.h \
-       pygi-util.c \
-       pygi-util.h \
+       pygi-callbacks.c \
+       pygi-callbacks.h \
+       pygi.h \
+       pygi-private.h \
        pygi-property.c \
        pygi-property.h \
        pygi-signal-closure.c \
        pygi-signal-closure.h \
+       pygobject-external.h \
+       gimodule.c \
        pygi-invoke.c \
        pygi-invoke.h \
        pygi-invoke-state-struct.h \
        pygi-cache.h \
        pygi-cache.c \
+       pygi-marshal-from-py.c \
+       pygi-marshal-from-py.h \
+       pygi-marshal-to-py.c \
+       pygi-marshal-to-py.h \
        pygi-marshal-cleanup.c \
-       pygi-marshal-cleanup.h \
-       pygi-basictype.c \
-       pygi-basictype.h \
-       pygi-list.c \
-       pygi-list.h \
-       pygi-array.c \
-       pygi-array.h \
-       pygi-error.c \
-       pygi-error.h \
-       pygi-object.c \
-       pygi-object.h \
-       pygi-value.c \
-       pygi-value.h \
-       pygi-enum-marshal.c \
-       pygi-enum-marshal.h \
-       pygi-struct-marshal.c \
-       pygi-struct-marshal.h \
-       pygi-hashtable.c \
-       pygi-hashtable.h
+       pygi-marshal-cleanup.h
 
 _gi_la_CFLAGS = \
-       $(CODE_COVERAGE_CFLAGS) \
-       $(WARN_CFLAGS) \
-       $(extension_cppflags) \
-       $(GLIB_CFLAGS) \
        $(GI_CFLAGS)
 
 _gi_la_CPPFLAGS = \
-       $(CODE_COVERAGE_CPPFLAGS) \
-       $(extension_cppflags)
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 
 _gi_la_LIBADD = \
-       $(CODE_COVERAGE_LIBS) \
        $(extension_libadd) \
-       $(GLIB_LIBS) \
        $(GI_LIBS) \
-       $(FFI_LIBS)
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
 
 _gi_la_LDFLAGS = \
-       $(WARN_LDFLAGS) \
        $(extension_ldflags) \
        -export-symbols-regex "init_gi|PyInit__gi"
 
@@ -606,33 +431,28 @@ _gi_cairo_la_SOURCES = \
        pygi-foreign-cairo.c
 
 _gi_cairo_la_CFLAGS = \
-       $(CODE_COVERAGE_CFLAGS) \
-       $(WARN_CFLAGS) \
        $(GI_CFLAGS) \
-       $(CAIRO_CFLAGS) \
        $(PYCAIRO_CFLAGS)
 
 _gi_cairo_la_CPPFLAGS = \
-       $(CODE_COVERAGE_CPPFLAGS) \
-       $(extension_cppflags)
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi/_gobject
 
 _gi_cairo_la_LIBADD = \
-       $(CODE_COVERAGE_LIBS) \
        $(extension_libadd) \
        $(GI_LIBS) \
-       $(CAIRO_LIBS) \
        $(PYCAIRO_LIBS)
 
 _gi_cairo_la_LDFLAGS = \
-       $(WARN_LDFLAGS) \
        $(extension_ldflags) \
        -export-symbols-regex "init_gi_cairo|PyInit__gi_cairo"
 
 all: all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+.SUFFIXES: .c .la .lo .o .obj .so
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -644,6 +464,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign gi/Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -656,14 +477,14 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-
 install-pygiLTLIBRARIES: $(pygi_LTLIBRARIES)
        @$(NORMAL_INSTALL)
+       test -z "$(pygidir)" || $(MKDIR_P) "$(DESTDIR)$(pygidir)"
        @list='$(pygi_LTLIBRARIES)'; test -n "$(pygidir)" || list=; \
        list2=; for p in $$list; do \
          if test -f $$p; then \
@@ -671,8 +492,6 @@ install-pygiLTLIBRARIES: $(pygi_LTLIBRARIES)
          else :; fi; \
        done; \
        test -z "$$list2" || { \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pygidir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pygidir)" || exit 1; \
          echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pygidir)'"; \
          $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pygidir)"; \
        }
@@ -688,18 +507,14 @@ uninstall-pygiLTLIBRARIES:
 
 clean-pygiLTLIBRARIES:
        -test -z "$(pygi_LTLIBRARIES)" || rm -f $(pygi_LTLIBRARIES)
-       @list='$(pygi_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
-
+       @list='$(pygi_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
 _gi.la: $(_gi_la_OBJECTS) $(_gi_la_DEPENDENCIES) $(EXTRA__gi_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_gi_la_LINK) -rpath $(pygidir) $(_gi_la_OBJECTS) $(_gi_la_LIBADD) $(LIBS)
-
 _gi_cairo.la: $(_gi_cairo_la_OBJECTS) $(_gi_cairo_la_DEPENDENCIES) $(EXTRA__gi_cairo_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(_gi_cairo_la_LINK) $(am__gi_cairo_la_rpath) $(_gi_cairo_la_OBJECTS) $(_gi_cairo_la_LIBADD) $(LIBS)
 
@@ -711,59 +526,38 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-gimodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-gobjectmodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygboxed.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygenum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygflags.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-argument.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-array.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-basictype.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-boxed.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-cache.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-callbacks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-ccallback.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-closure.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-enum-marshal.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-foreign-gvariant.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-foreign.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-hashtable.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-info.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-invoke.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-list.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-object.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-property.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-repository.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-resulttuple.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-signal-closure.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-source.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-struct-marshal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-struct.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-type.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-value.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pyginterface.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pyglib.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygobject-object.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygoptioncontext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygoptiongroup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygparamspec.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygpointer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygspawn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygtype.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -772,104 +566,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-_gi_la-gobjectmodule.lo: gobjectmodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gobjectmodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gobjectmodule.Tpo -c -o _gi_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gobjectmodule.Tpo $(DEPDIR)/_gi_la-gobjectmodule.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gobjectmodule.c' object='_gi_la-gobjectmodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
-
-_gi_la-pygboxed.lo: pygboxed.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygboxed.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygboxed.Tpo -c -o _gi_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygboxed.Tpo $(DEPDIR)/_gi_la-pygboxed.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygboxed.c' object='_gi_la-pygboxed.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
-
-_gi_la-pygenum.lo: pygenum.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygenum.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygenum.Tpo -c -o _gi_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygenum.Tpo $(DEPDIR)/_gi_la-pygenum.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygenum.c' object='_gi_la-pygenum.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
-
-_gi_la-pygflags.lo: pygflags.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygflags.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygflags.Tpo -c -o _gi_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygflags.Tpo $(DEPDIR)/_gi_la-pygflags.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygflags.c' object='_gi_la-pygflags.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
-
-_gi_la-pyginterface.lo: pyginterface.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pyginterface.lo -MD -MP -MF $(DEPDIR)/_gi_la-pyginterface.Tpo -c -o _gi_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pyginterface.Tpo $(DEPDIR)/_gi_la-pyginterface.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyginterface.c' object='_gi_la-pyginterface.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
-
-_gi_la-pygobject-object.lo: pygobject-object.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygobject-object.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygobject-object.Tpo -c -o _gi_la-pygobject-object.lo `test -f 'pygobject-object.c' || echo '$(srcdir)/'`pygobject-object.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygobject-object.Tpo $(DEPDIR)/_gi_la-pygobject-object.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygobject-object.c' object='_gi_la-pygobject-object.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygobject-object.lo `test -f 'pygobject-object.c' || echo '$(srcdir)/'`pygobject-object.c
-
-_gi_la-pygparamspec.lo: pygparamspec.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygparamspec.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygparamspec.Tpo -c -o _gi_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygparamspec.Tpo $(DEPDIR)/_gi_la-pygparamspec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygparamspec.c' object='_gi_la-pygparamspec.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
-
-_gi_la-pygpointer.lo: pygpointer.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygpointer.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygpointer.Tpo -c -o _gi_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygpointer.Tpo $(DEPDIR)/_gi_la-pygpointer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygpointer.c' object='_gi_la-pygpointer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
-
-_gi_la-pygtype.lo: pygtype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygtype.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygtype.Tpo -c -o _gi_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygtype.Tpo $(DEPDIR)/_gi_la-pygtype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygtype.c' object='_gi_la-pygtype.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
-
-_gi_la-pygoptioncontext.lo: pygoptioncontext.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygoptioncontext.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygoptioncontext.Tpo -c -o _gi_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygoptioncontext.Tpo $(DEPDIR)/_gi_la-pygoptioncontext.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptioncontext.c' object='_gi_la-pygoptioncontext.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
-
-_gi_la-pygoptiongroup.lo: pygoptiongroup.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygoptiongroup.Tpo -c -o _gi_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygoptiongroup.Tpo $(DEPDIR)/_gi_la-pygoptiongroup.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptiongroup.c' object='_gi_la-pygoptiongroup.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
-
-_gi_la-pygspawn.lo: pygspawn.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygspawn.Tpo -c -o _gi_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygspawn.Tpo $(DEPDIR)/_gi_la-pygspawn.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygspawn.c' object='_gi_la-pygspawn.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
-
-_gi_la-pyglib.lo: pyglib.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pyglib.lo -MD -MP -MF $(DEPDIR)/_gi_la-pyglib.Tpo -c -o _gi_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pyglib.Tpo $(DEPDIR)/_gi_la-pyglib.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyglib.c' object='_gi_la-pyglib.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
-
-_gi_la-gimodule.lo: gimodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gimodule.Tpo $(DEPDIR)/_gi_la-gimodule.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
-
 _gi_la-pygi-repository.lo: pygi-repository.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-repository.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-repository.Tpo -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-repository.Tpo $(DEPDIR)/_gi_la-pygi-repository.Plo
@@ -891,6 +587,13 @@ _gi_la-pygi-foreign.lo: pygi-foreign.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign.lo `test -f 'pygi-foreign.c' || echo '$(srcdir)/'`pygi-foreign.c
 
+_gi_la-pygi-foreign-gvariant.lo: pygi-foreign-gvariant.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-foreign-gvariant.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Tpo -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Tpo $(DEPDIR)/_gi_la-pygi-foreign-gvariant.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-foreign-gvariant.c' object='_gi_la-pygi-foreign-gvariant.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-foreign-gvariant.lo `test -f 'pygi-foreign-gvariant.c' || echo '$(srcdir)/'`pygi-foreign-gvariant.c
+
 _gi_la-pygi-struct.lo: pygi-struct.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-struct.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-struct.Tpo -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-struct.Tpo $(DEPDIR)/_gi_la-pygi-struct.Plo
@@ -898,13 +601,6 @@ _gi_la-pygi-struct.lo: pygi-struct.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
 
-_gi_la-pygi-source.lo: pygi-source.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-source.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-source.Tpo -c -o _gi_la-pygi-source.lo `test -f 'pygi-source.c' || echo '$(srcdir)/'`pygi-source.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-source.Tpo $(DEPDIR)/_gi_la-pygi-source.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-source.c' object='_gi_la-pygi-source.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-source.lo `test -f 'pygi-source.c' || echo '$(srcdir)/'`pygi-source.c
-
 _gi_la-pygi-argument.lo: pygi-argument.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-argument.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-argument.Tpo -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-argument.Tpo $(DEPDIR)/_gi_la-pygi-argument.Plo
@@ -912,13 +608,6 @@ _gi_la-pygi-argument.lo: pygi-argument.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-argument.lo `test -f 'pygi-argument.c' || echo '$(srcdir)/'`pygi-argument.c
 
-_gi_la-pygi-resulttuple.lo: pygi-resulttuple.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-resulttuple.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-resulttuple.Tpo -c -o _gi_la-pygi-resulttuple.lo `test -f 'pygi-resulttuple.c' || echo '$(srcdir)/'`pygi-resulttuple.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-resulttuple.Tpo $(DEPDIR)/_gi_la-pygi-resulttuple.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-resulttuple.c' object='_gi_la-pygi-resulttuple.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-resulttuple.lo `test -f 'pygi-resulttuple.c' || echo '$(srcdir)/'`pygi-resulttuple.c
-
 _gi_la-pygi-type.lo: pygi-type.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-type.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-type.Tpo -c -o _gi_la-pygi-type.lo `test -f 'pygi-type.c' || echo '$(srcdir)/'`pygi-type.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-type.Tpo $(DEPDIR)/_gi_la-pygi-type.Plo
@@ -947,12 +636,12 @@ _gi_la-pygi-ccallback.lo: pygi-ccallback.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-ccallback.lo `test -f 'pygi-ccallback.c' || echo '$(srcdir)/'`pygi-ccallback.c
 
-_gi_la-pygi-util.lo: pygi-util.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-util.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-util.Tpo -c -o _gi_la-pygi-util.lo `test -f 'pygi-util.c' || echo '$(srcdir)/'`pygi-util.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-util.Tpo $(DEPDIR)/_gi_la-pygi-util.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-util.c' object='_gi_la-pygi-util.lo' libtool=yes @AMDEPBACKSLASH@
+_gi_la-pygi-callbacks.lo: pygi-callbacks.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-callbacks.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-callbacks.Tpo -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-callbacks.Tpo $(DEPDIR)/_gi_la-pygi-callbacks.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-callbacks.c' object='_gi_la-pygi-callbacks.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-util.lo `test -f 'pygi-util.c' || echo '$(srcdir)/'`pygi-util.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-callbacks.lo `test -f 'pygi-callbacks.c' || echo '$(srcdir)/'`pygi-callbacks.c
 
 _gi_la-pygi-property.lo: pygi-property.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-property.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-property.Tpo -c -o _gi_la-pygi-property.lo `test -f 'pygi-property.c' || echo '$(srcdir)/'`pygi-property.c
@@ -968,6 +657,13 @@ _gi_la-pygi-signal-closure.lo: pygi-signal-closure.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
 
+_gi_la-gimodule.lo: gimodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gimodule.Tpo $(DEPDIR)/_gi_la-gimodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+
 _gi_la-pygi-invoke.lo: pygi-invoke.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-invoke.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-invoke.Tpo -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-invoke.Tpo $(DEPDIR)/_gi_la-pygi-invoke.Plo
@@ -982,6 +678,20 @@ _gi_la-pygi-cache.lo: pygi-cache.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-cache.lo `test -f 'pygi-cache.c' || echo '$(srcdir)/'`pygi-cache.c
 
+_gi_la-pygi-marshal-from-py.lo: pygi-marshal-from-py.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-from-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-marshal-from-py.c' object='_gi_la-pygi-marshal-from-py.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
+
+_gi_la-pygi-marshal-to-py.lo: pygi-marshal-to-py.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-to-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-marshal-to-py.c' object='_gi_la-pygi-marshal-to-py.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
+
 _gi_la-pygi-marshal-cleanup.lo: pygi-marshal-cleanup.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-cleanup.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo -c -o _gi_la-pygi-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo
@@ -989,69 +699,6 @@ _gi_la-pygi-marshal-cleanup.lo: pygi-marshal-cleanup.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
 
-_gi_la-pygi-basictype.lo: pygi-basictype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-basictype.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-basictype.Tpo -c -o _gi_la-pygi-basictype.lo `test -f 'pygi-basictype.c' || echo '$(srcdir)/'`pygi-basictype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-basictype.Tpo $(DEPDIR)/_gi_la-pygi-basictype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-basictype.c' object='_gi_la-pygi-basictype.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-basictype.lo `test -f 'pygi-basictype.c' || echo '$(srcdir)/'`pygi-basictype.c
-
-_gi_la-pygi-list.lo: pygi-list.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-list.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-list.Tpo -c -o _gi_la-pygi-list.lo `test -f 'pygi-list.c' || echo '$(srcdir)/'`pygi-list.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-list.Tpo $(DEPDIR)/_gi_la-pygi-list.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-list.c' object='_gi_la-pygi-list.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-list.lo `test -f 'pygi-list.c' || echo '$(srcdir)/'`pygi-list.c
-
-_gi_la-pygi-array.lo: pygi-array.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-array.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-array.Tpo -c -o _gi_la-pygi-array.lo `test -f 'pygi-array.c' || echo '$(srcdir)/'`pygi-array.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-array.Tpo $(DEPDIR)/_gi_la-pygi-array.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-array.c' object='_gi_la-pygi-array.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-array.lo `test -f 'pygi-array.c' || echo '$(srcdir)/'`pygi-array.c
-
-_gi_la-pygi-error.lo: pygi-error.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-error.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-error.Tpo -c -o _gi_la-pygi-error.lo `test -f 'pygi-error.c' || echo '$(srcdir)/'`pygi-error.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-error.Tpo $(DEPDIR)/_gi_la-pygi-error.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-error.c' object='_gi_la-pygi-error.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-error.lo `test -f 'pygi-error.c' || echo '$(srcdir)/'`pygi-error.c
-
-_gi_la-pygi-object.lo: pygi-object.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-object.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-object.Tpo -c -o _gi_la-pygi-object.lo `test -f 'pygi-object.c' || echo '$(srcdir)/'`pygi-object.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-object.Tpo $(DEPDIR)/_gi_la-pygi-object.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-object.c' object='_gi_la-pygi-object.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-object.lo `test -f 'pygi-object.c' || echo '$(srcdir)/'`pygi-object.c
-
-_gi_la-pygi-value.lo: pygi-value.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-value.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-value.Tpo -c -o _gi_la-pygi-value.lo `test -f 'pygi-value.c' || echo '$(srcdir)/'`pygi-value.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-value.Tpo $(DEPDIR)/_gi_la-pygi-value.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-value.c' object='_gi_la-pygi-value.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-value.lo `test -f 'pygi-value.c' || echo '$(srcdir)/'`pygi-value.c
-
-_gi_la-pygi-enum-marshal.lo: pygi-enum-marshal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-enum-marshal.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-enum-marshal.Tpo -c -o _gi_la-pygi-enum-marshal.lo `test -f 'pygi-enum-marshal.c' || echo '$(srcdir)/'`pygi-enum-marshal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-enum-marshal.Tpo $(DEPDIR)/_gi_la-pygi-enum-marshal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-enum-marshal.c' object='_gi_la-pygi-enum-marshal.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-enum-marshal.lo `test -f 'pygi-enum-marshal.c' || echo '$(srcdir)/'`pygi-enum-marshal.c
-
-_gi_la-pygi-struct-marshal.lo: pygi-struct-marshal.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-struct-marshal.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-struct-marshal.Tpo -c -o _gi_la-pygi-struct-marshal.lo `test -f 'pygi-struct-marshal.c' || echo '$(srcdir)/'`pygi-struct-marshal.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-struct-marshal.Tpo $(DEPDIR)/_gi_la-pygi-struct-marshal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-struct-marshal.c' object='_gi_la-pygi-struct-marshal.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-struct-marshal.lo `test -f 'pygi-struct-marshal.c' || echo '$(srcdir)/'`pygi-struct-marshal.c
-
-_gi_la-pygi-hashtable.lo: pygi-hashtable.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-hashtable.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-hashtable.Tpo -c -o _gi_la-pygi-hashtable.lo `test -f 'pygi-hashtable.c' || echo '$(srcdir)/'`pygi-hashtable.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-hashtable.Tpo $(DEPDIR)/_gi_la-pygi-hashtable.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-hashtable.c' object='_gi_la-pygi-hashtable.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-hashtable.lo `test -f 'pygi-hashtable.c' || echo '$(srcdir)/'`pygi-hashtable.c
-
 _gi_cairo_la-pygi-foreign-cairo.lo: pygi-foreign-cairo.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_cairo_la_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -MT _gi_cairo_la-pygi-foreign-cairo.lo -MD -MP -MF $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Plo
@@ -1064,48 +711,59 @@ mostlyclean-libtool:
 
 clean-libtool:
        -rm -rf .libs _libs
-install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+install-pygiPYTHON: $(pygi_PYTHON)
        @$(NORMAL_INSTALL)
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
-       fi; \
+       test -z "$(pygidir)" || $(MKDIR_P) "$(DESTDIR)$(pygidir)"
+       @list='$(pygi_PYTHON)'; dlist=; list2=; test -n "$(pygidir)" || list=; \
        for p in $$list; do \
-         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         echo "$$d$$p"; \
-       done | $(am__base_list) | \
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
        while read files; do \
-         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
-         $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
-       done
-
-uninstall-pkgincludeHEADERS:
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pygidir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pygidir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         $(am__py_compile) --destdir "$(DESTDIR)" \
+                           --basedir "$(pygidir)" $$dlist; \
+       else :; fi
+
+uninstall-pygiPYTHON:
        @$(NORMAL_UNINSTALL)
-       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+       @list='$(pygi_PYTHON)'; test -n "$(pygidir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+       test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygidir)'; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-#     (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
-       @fail=; \
-       if $(am__make_keepgoing); then \
-         failcom='fail=yes'; \
-       else \
-         failcom='exit 1'; \
-       fi; \
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       case "$@" in \
-         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-         *) list='$(SUBDIRS)' ;; \
-       esac; \
-       for subdir in $$list; do \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -1120,12 +778,57 @@ $(am__recursive_targets):
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
 
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
+$(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
+       for f in x $$MAKEFLAGS; do \
+         case $$f in \
+           *=* | --[!k]*);; \
+           *k*) failcom='fail=yes';; \
+         esac; \
+       done; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -1141,7 +844,12 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       $(am__define_uniq_tagged_files); \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1153,11 +861,15 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
              $$unique; \
          fi; \
        fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1166,21 +878,6 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -1217,10 +914,13 @@ distdir: $(DISTFILES)
        done
        @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
-           $(am__make_dryrun) \
-             || test -d "$(distdir)/$$subdir" \
-             || $(MKDIR_P) "$(distdir)/$$subdir" \
-             || exit 1; \
+           test -d "$(distdir)/$$subdir" \
+           || $(MKDIR_P) "$(distdir)/$$subdir" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
            dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
            $(am__relativize); \
            new_distdir=$$reldir; \
@@ -1243,10 +943,10 @@ distdir: $(DISTFILES)
 check-am: all-am
        $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-recursive
-all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local
+all-am: Makefile $(LTLIBRARIES) all-local
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pkgincludedir)"; do \
+       for dir in "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pygidir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
@@ -1302,7 +1002,7 @@ info: info-recursive
 
 info-am:
 
-install-data-am: install-pkgincludeHEADERS install-pygiLTLIBRARIES
+install-data-am: install-pygiLTLIBRARIES install-pygiPYTHON
 
 install-dvi: install-dvi-recursive
 
@@ -1348,41 +1048,50 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-pkgincludeHEADERS uninstall-pygiLTLIBRARIES
-
-.MAKE: $(am__recursive_targets) check-am install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \
-       check check-am check-local clean clean-generic clean-libtool \
-       clean-local clean-pygiLTLIBRARIES cscopelist-am ctags ctags-am \
-       distclean distclean-compile distclean-generic \
-       distclean-libtool distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-pkgincludeHEADERS install-ps install-ps-am \
-       install-pygiLTLIBRARIES install-strip installcheck \
-       installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags tags-am uninstall uninstall-am \
-       uninstall-pkgincludeHEADERS uninstall-pygiLTLIBRARIES
-
-.PRECIOUS: Makefile
+uninstall-am: uninstall-pygiLTLIBRARIES uninstall-pygiPYTHON
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
+       ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am all-local check check-am check-local clean \
+       clean-generic clean-libtool clean-local clean-pygiLTLIBRARIES \
+       ctags ctags-recursive distclean distclean-compile \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am \
+       install-pygiLTLIBRARIES install-pygiPYTHON install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+       uninstall-pygiLTLIBRARIES uninstall-pygiPYTHON
 
 
 # This is to ensure we have a symlink to the .so in the
 # build directory, which the Python interpreter can load
 # directly without having to know how to parse .la files.
-%$(PYTHON_SO): %.la
-       $(LN_S) -f .libs/$@ $@
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygi_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
 
-all-local: $(LTLIBRARIES:.la=$(PYTHON_SO))
+all-local: $(LTLIBRARIES:.la=.so) build_pylinks
 
-check-local: $(LTLIBRARIES:.la=$(PYTHON_SO))
+check-local: $(LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
-       rm -f $(LTLIBRARIES:.la=$(PYTHON_SO))
+       rm -f $(LTLIBRARIES:.la=.so)
+
+-include $(top_srcdir)/git.mk
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 9fefc79..dcd876d 100644 (file)
 
 from __future__ import absolute_import
 
-# support overrides in different directories than our gi module
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
+from ._gi import _API, Repository
 
-import sys
-import os
-import importlib
-import types
-
-_static_binding_error = ('When using gi.repository you must not import static '
-                         'modules like "gobject". Please change all occurrences '
-                         'of "import gobject" to "from gi.repository import GObject". '
-                         'See: https://bugzilla.gnome.org/show_bug.cgi?id=709183')
-
-# we can't have pygobject 2 loaded at the same time we load the internal _gobject
-if 'gobject' in sys.modules:
-    raise ImportError(_static_binding_error)
-
-
-from . import _gi
-from ._gi import _API
-from ._gi import Repository
-from ._gi import PyGIDeprecationWarning
-from ._gi import PyGIWarning
+# Force loading the GObject typelib so we have available the wrappers for
+# base classes such as GInitiallyUnowned
+import gi._gobject
+gi  # pyflakes
 
 _API = _API  # pyflakes
-PyGIDeprecationWarning = PyGIDeprecationWarning
-PyGIWarning = PyGIWarning
+
+import os
 
 _versions = {}
 _overridesdir = os.path.join(os.path.dirname(__file__), 'overrides')
 
-# Needed for compatibility with "pygobject.h"/pygobject_init()
-_gobject = types.ModuleType("gi._gobject")
-sys.modules[_gobject.__name__] = _gobject
-_gobject._PyGObject_API = _gi._PyGObject_API
-_gobject.pygobject_version = _gi.pygobject_version
-
-version_info = _gi.pygobject_version[:]
-__version__ = "{0}.{1}.{2}".format(*version_info)
-
-
-class _DummyStaticModule(types.ModuleType):
-    __path__ = None
-
-    def __getattr__(self, name):
-        raise AttributeError(_static_binding_error)
-
-
-sys.modules['glib'] = _DummyStaticModule('glib', _static_binding_error)
-sys.modules['gobject'] = _DummyStaticModule('gobject', _static_binding_error)
-sys.modules['gio'] = _DummyStaticModule('gio', _static_binding_error)
-sys.modules['gtk'] = _DummyStaticModule('gtk', _static_binding_error)
-sys.modules['gtk.gdk'] = _DummyStaticModule('gtk.gdk', _static_binding_error)
-
-
-def check_version(version):
-    if isinstance(version, str):
-        version_list = tuple(map(int, version.split(".")))
-    else:
-        version_list = version
-
-    if version_list > version_info:
-        raise ValueError((
-            "pygobject's version %s required, and available version "
-            "%s is not recent enough") % (version, __version__)
-        )
-
 
 def require_version(namespace, version):
-    """ Ensures the correct versions are loaded when importing `gi` modules.
-
-    :param namespace: The name of module to require.
-    :type namespace: str
-    :param version: The version of module to require.
-    :type version: str
-    :raises ValueError: If module/version is already loaded, already required, or unavailable.
-
-    :Example:
-
-    .. code-block:: python
-
-        import gi
-        gi.require_version('Gtk', '3.0')
-
-    """
     repository = Repository.get_default()
 
     if namespace in repository.get_loaded_namespaces():
         loaded_version = repository.get_version(namespace)
         if loaded_version != version:
-            raise ValueError('Namespace %s is already loaded with version %s' %
+            raise ValueError('Namespace %s is already loaded with version %s' % \
                              (namespace, loaded_version))
 
     if namespace in _versions and _versions[namespace] != version:
-        raise ValueError('Namespace %s already requires version %s' %
+        raise ValueError('Namespace %s already requires version %s' % \
                          (namespace, _versions[namespace]))
 
     available_versions = repository.enumerate_versions(namespace)
@@ -123,54 +53,11 @@ def require_version(namespace, version):
         raise ValueError('Namespace %s not available' % namespace)
 
     if version not in available_versions:
-        raise ValueError('Namespace %s not available for version %s' %
+        raise ValueError('Namespace %s not available for version %s' % \
                          (namespace, version))
 
     _versions[namespace] = version
 
 
-def require_versions(requires):
-    """ Utility function for consolidating multiple `gi.require_version()` calls.
-
-    :param requires: The names and versions of modules to require.
-    :type requires: dict
-
-    :Example:
-
-    .. code-block:: python
-
-        import gi
-        gi.require_versions({'Gtk': '3.0', 'GLib': '2.0', 'Gio': '2.0'})
-    """
-    for module_name, module_version in requires.items():
-        require_version(module_name, module_version)
-
-
 def get_required_version(namespace):
     return _versions.get(namespace, None)
-
-
-def require_foreign(namespace, symbol=None):
-    """Ensure the given foreign marshaling module is available and loaded.
-
-    :param str namespace:
-        Introspection namespace of the foreign module (e.g. "cairo")
-    :param symbol:
-        Optional symbol typename to ensure a converter exists.
-    :type symbol: str or None
-    :raises: ImportError
-
-    :Example:
-
-    .. code-block:: python
-
-        import gi
-        import cairo
-        gi.require_foreign('cairo')
-
-    """
-    try:
-        _gi.require_foreign(namespace, symbol)
-    except Exception as e:
-        raise ImportError(str(e))
-    importlib.import_module('gi.repository', namespace)
diff --git a/gi/_constants.py b/gi/_constants.py
deleted file mode 100644 (file)
index 2153f90..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2006-2007 Johan Dahlin
-#
-#   gi/_constants.py: GObject type constants
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
-
-from . import _gi
-
-TYPE_INVALID = _gi.TYPE_INVALID
-TYPE_NONE = _gi.type_from_name('void')
-TYPE_INTERFACE = _gi.type_from_name('GInterface')
-TYPE_CHAR = _gi.type_from_name('gchar')
-TYPE_UCHAR = _gi.type_from_name('guchar')
-TYPE_BOOLEAN = _gi.type_from_name('gboolean')
-TYPE_INT = _gi.type_from_name('gint')
-TYPE_UINT = _gi.type_from_name('guint')
-TYPE_LONG = _gi.type_from_name('glong')
-TYPE_ULONG = _gi.type_from_name('gulong')
-TYPE_INT64 = _gi.type_from_name('gint64')
-TYPE_UINT64 = _gi.type_from_name('guint64')
-TYPE_ENUM = _gi.type_from_name('GEnum')
-TYPE_FLAGS = _gi.type_from_name('GFlags')
-TYPE_FLOAT = _gi.type_from_name('gfloat')
-TYPE_DOUBLE = _gi.type_from_name('gdouble')
-TYPE_STRING = _gi.type_from_name('gchararray')
-TYPE_POINTER = _gi.type_from_name('gpointer')
-TYPE_BOXED = _gi.type_from_name('GBoxed')
-TYPE_PARAM = _gi.type_from_name('GParam')
-TYPE_OBJECT = _gi.type_from_name('GObject')
-TYPE_PYOBJECT = _gi.type_from_name('PyObject')
-TYPE_GTYPE = _gi.type_from_name('GType')
-TYPE_STRV = _gi.type_from_name('GStrv')
-TYPE_VARIANT = _gi.type_from_name('GVariant')
-TYPE_UNICHAR = TYPE_UINT
diff --git a/gi/_error.py b/gi/_error.py
deleted file mode 100644 (file)
index 6b684ce..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
-#
-#   _error.py: GError Python implementation
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-
-# NOTE: This file should not have any dependencies on introspection libs
-# like gi.repository.GLib because it would cause a circular dependency.
-# Developers wanting to use the GError class in their applications should
-# use gi.repository.GLib.GError
-
-
-class GError(RuntimeError):
-    def __init__(self, message='unknown error', domain='pygi-error', code=0):
-        super(GError, self).__init__(message)
-        self.message = message
-        self.domain = domain
-        self.code = code
-
-    def __str__(self):
-        return "%s: %s (%d)" % (self.domain, self.message, self.code)
-
-    def __repr__(self):
-        return "%s.%s('%s', '%s', %d)" % (GError.__module__, GError.__name__,
-                                          self.message, self.domain, self.code)
-
-    def copy(self):
-        return GError(self.message, self.domain, self.code)
-
-    def matches(self, domain, code):
-        """Placeholder that will be monkey patched in GLib overrides."""
-        raise NotImplementedError
-
-    @staticmethod
-    def new_literal(domain, message, code):
-        """Placeholder that will be monkey patched in GLib overrides."""
-        raise NotImplementedError
diff --git a/gi/_glib/Makefile.am b/gi/_glib/Makefile.am
new file mode 100644 (file)
index 0000000..c152039
--- /dev/null
@@ -0,0 +1,102 @@
+AUTOMAKE_OPTIONS = 1.7
+
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = \
+       -module \
+       -avoid-version
+
+if OS_WIN32
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+extension_libadd = \
+       $(PYTHON_LIBS)
+
+extension_ldflags += \
+       -no-undefined \
+       -shrext ".pyd"
+endif
+
+
+pyglibdir = $(pyexecdir)/gi/_glib
+
+pyglib_PYTHON = \
+       __init__.py \
+       option.py
+
+lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
+       pyglib.c \
+       pyglib.h \
+       pyglib-private.h \
+       pyglib-python-compat.h
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
+       $(extension_cppflags)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
+       $(extension_libadd) \
+       $(FFI_LIBS) \
+       $(GLIB_LIBS)
+
+if OS_WIN32
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
+       -no-undefined
+endif
+
+pyglib_LTLIBRARIES = _glib.la
+
+_glib_la_SOURCES = \
+       glibmodule.c \
+       pygiochannel.c \
+       pygiochannel.h \
+       pygoptioncontext.c \
+       pygoptioncontext.h \
+       pygoptiongroup.c \
+       pygoptiongroup.h \
+       pygmaincontext.c \
+       pygmaincontext.h \
+       pygmainloop.c \
+       pygmainloop.h \
+       pygsource.c \
+       pygsource.h \
+       pygspawn.c \
+       pygspawn.h
+_glib_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+_glib_la_CPPFLAGS = \
+       $(extension_cppflags)
+_glib_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+_glib_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_glib|PyInit__glib"
+
+if PLATFORM_WIN32
+_glib_la_CFLAGS += -DPLATFORM_WIN32
+endif
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pyglib_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+
+all: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pyglib_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
+
+
+-include $(top_srcdir)/git.mk
diff --git a/gi/_glib/Makefile.in b/gi/_glib/Makefile.in
new file mode 100644 (file)
index 0000000..950f540
--- /dev/null
@@ -0,0 +1,849 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@OS_WIN32_TRUE@am__append_1 = \
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
+
+@PLATFORM_WIN32_TRUE@am__append_2 = -DPLATFORM_WIN32
+subdir = gi/_glib
+DIST_COMMON = $(pyglib_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" \
+       "$(DESTDIR)$(pyglibdir)"
+LTLIBRARIES = $(lib_LTLIBRARIES) $(pyglib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+_glib_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+am__glib_la_OBJECTS = _glib_la-glibmodule.lo _glib_la-pygiochannel.lo \
+       _glib_la-pygoptioncontext.lo _glib_la-pygoptiongroup.lo \
+       _glib_la-pygmaincontext.lo _glib_la-pygmainloop.lo \
+       _glib_la-pygsource.lo _glib_la-pygspawn.lo
+_glib_la_OBJECTS = $(am__glib_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+_glib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_glib_la_CFLAGS) \
+       $(CFLAGS) $(_glib_la_LDFLAGS) $(LDFLAGS) -o $@
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES =  \
+       $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
+       libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS =  \
+       $(am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS)
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
+       --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+       $(CCLD) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) \
+       $(CFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS) \
+       $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(_glib_la_SOURCES) \
+       $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
+DIST_SOURCES = $(_glib_la_SOURCES) \
+       $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
+py_compile = $(top_srcdir)/py-compile
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GI_CFLAGS = @GI_CFLAGS@
+GI_DATADIR = @GI_DATADIR@
+GI_LIBS = @GI_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBFFI_PC = @LIBFFI_PC@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
+PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
+PYCAIRO_LIBS = @PYCAIRO_LIBS@
+PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
+PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
+PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
+PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.7
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = -module -avoid-version $(am__append_1)
+
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+@OS_WIN32_TRUE@extension_libadd = \
+@OS_WIN32_TRUE@        $(PYTHON_LIBS)
+
+pyglibdir = $(pyexecdir)/gi/_glib
+pyglib_PYTHON = \
+       __init__.py \
+       option.py
+
+lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
+       pyglib.c \
+       pyglib.h \
+       pyglib-private.h \
+       pyglib-python-compat.h
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
+       $(extension_cppflags)
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
+       $(GLIB_CFLAGS)
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
+       $(extension_libadd) \
+       $(FFI_LIBS) \
+       $(GLIB_LIBS)
+
+@OS_WIN32_TRUE@libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
+@OS_WIN32_TRUE@        -no-undefined
+
+pyglib_LTLIBRARIES = _glib.la
+_glib_la_SOURCES = \
+       glibmodule.c \
+       pygiochannel.c \
+       pygiochannel.h \
+       pygoptioncontext.c \
+       pygoptioncontext.h \
+       pygoptiongroup.c \
+       pygoptiongroup.h \
+       pygmaincontext.c \
+       pygmaincontext.h \
+       pygmainloop.c \
+       pygmainloop.h \
+       pygsource.c \
+       pygsource.h \
+       pygspawn.c \
+       pygspawn.h
+
+_glib_la_CFLAGS = $(GLIB_CFLAGS) $(am__append_2)
+_glib_la_CPPFLAGS = \
+       $(extension_cppflags)
+
+_glib_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+_glib_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_glib|PyInit__glib"
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .la .lo .o .obj .so
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/_glib/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign gi/_glib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+       }
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+install-pyglibLTLIBRARIES: $(pyglib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(pyglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pyglibdir)"
+       @list='$(pyglib_LTLIBRARIES)'; test -n "$(pyglibdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyglibdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyglibdir)"; \
+       }
+
+uninstall-pyglibLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pyglib_LTLIBRARIES)'; test -n "$(pyglibdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyglibdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyglibdir)/$$f"; \
+       done
+
+clean-pyglibLTLIBRARIES:
+       -test -z "$(pyglib_LTLIBRARIES)" || rm -f $(pyglib_LTLIBRARIES)
+       @list='$(pyglib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+_glib.la: $(_glib_la_OBJECTS) $(_glib_la_DEPENDENCIES) $(EXTRA__glib_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(_glib_la_LINK) -rpath $(pyglibdir) $(_glib_la_OBJECTS) $(_glib_la_LIBADD) $(LIBS)
+libpyglib-gi-2.0-@PYTHON_BASENAME@.la: $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) $(EXTRA_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK) -rpath $(libdir) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-glibmodule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygiochannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygmaincontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygmainloop.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygoptioncontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygoptiongroup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygsource.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygspawn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+_glib_la-glibmodule.lo: glibmodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-glibmodule.lo -MD -MP -MF $(DEPDIR)/_glib_la-glibmodule.Tpo -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-glibmodule.Tpo $(DEPDIR)/_glib_la-glibmodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='glibmodule.c' object='_glib_la-glibmodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+
+_glib_la-pygiochannel.lo: pygiochannel.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygiochannel.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygiochannel.Tpo -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygiochannel.Tpo $(DEPDIR)/_glib_la-pygiochannel.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygiochannel.c' object='_glib_la-pygiochannel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygiochannel.lo `test -f 'pygiochannel.c' || echo '$(srcdir)/'`pygiochannel.c
+
+_glib_la-pygoptioncontext.lo: pygoptioncontext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptioncontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptioncontext.Tpo -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygoptioncontext.Tpo $(DEPDIR)/_glib_la-pygoptioncontext.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptioncontext.c' object='_glib_la-pygoptioncontext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+
+_glib_la-pygoptiongroup.lo: pygoptiongroup.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptiongroup.Tpo -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygoptiongroup.Tpo $(DEPDIR)/_glib_la-pygoptiongroup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygoptiongroup.c' object='_glib_la-pygoptiongroup.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+
+_glib_la-pygmaincontext.lo: pygmaincontext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmaincontext.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmaincontext.Tpo -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygmaincontext.Tpo $(DEPDIR)/_glib_la-pygmaincontext.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygmaincontext.c' object='_glib_la-pygmaincontext.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmaincontext.lo `test -f 'pygmaincontext.c' || echo '$(srcdir)/'`pygmaincontext.c
+
+_glib_la-pygmainloop.lo: pygmainloop.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygmainloop.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygmainloop.Tpo -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygmainloop.Tpo $(DEPDIR)/_glib_la-pygmainloop.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygmainloop.c' object='_glib_la-pygmainloop.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygmainloop.lo `test -f 'pygmainloop.c' || echo '$(srcdir)/'`pygmainloop.c
+
+_glib_la-pygsource.lo: pygsource.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygsource.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygsource.Tpo -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygsource.Tpo $(DEPDIR)/_glib_la-pygsource.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygsource.c' object='_glib_la-pygsource.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygsource.lo `test -f 'pygsource.c' || echo '$(srcdir)/'`pygsource.c
+
+_glib_la-pygspawn.lo: pygspawn.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygspawn.Tpo -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygspawn.Tpo $(DEPDIR)/_glib_la-pygspawn.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygspawn.c' object='_glib_la-pygspawn.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+
+libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo: pyglib.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -MT libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo -MD -MP -MF $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyglib.c' object='libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-pyglibPYTHON: $(pyglib_PYTHON)
+       @$(NORMAL_INSTALL)
+       test -z "$(pyglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pyglibdir)"
+       @list='$(pyglib_PYTHON)'; dlist=; list2=; test -n "$(pyglibdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pyglibdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pyglibdir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         $(am__py_compile) --destdir "$(DESTDIR)" \
+                           --basedir "$(pyglibdir)" $$dlist; \
+       else :; fi
+
+uninstall-pyglibPYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pyglib_PYTHON)'; test -n "$(pyglibdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pyglibdir)'; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pyglibdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+       clean-pyglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pyglibLTLIBRARIES install-pyglibPYTHON
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
+       uninstall-pyglibPYTHON
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
+       clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+       clean-pyglibLTLIBRARIES ctags distclean distclean-compile \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-libLTLIBRARIES \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-pyglibLTLIBRARIES install-pyglibPYTHON \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+       pdf pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
+       uninstall-pyglibPYTHON
+
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pyglib_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pyglib_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
+
+-include $(top_srcdir)/git.mk
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gi/_glib/__init__.py b/gi/_glib/__init__.py
new file mode 100644 (file)
index 0000000..b0d2212
--- /dev/null
@@ -0,0 +1,121 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2006-2012 Johan Dahlin
+#
+#   glib/__init__.py: initialisation file for glib module
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+from . import _glib
+
+# Internal API
+_PyGLib_API = _glib._PyGLib_API
+
+# Types
+GError = _glib.GError
+IOChannel = _glib.IOChannel
+Idle = _glib.Idle
+MainContext = _glib.MainContext
+MainLoop = _glib.MainLoop
+OptionContext = _glib.OptionContext
+OptionGroup = _glib.OptionGroup
+Pid = _glib.Pid
+PollFD = _glib.PollFD
+Source = _glib.Source
+Timeout = _glib.Timeout
+
+# Constants
+IO_ERR = _glib.IO_ERR
+IO_FLAG_APPEND = _glib.IO_FLAG_APPEND
+IO_FLAG_GET_MASK = _glib.IO_FLAG_GET_MASK
+IO_FLAG_IS_READABLE = _glib.IO_FLAG_IS_READABLE
+IO_FLAG_IS_SEEKABLE = _glib.IO_FLAG_IS_SEEKABLE
+IO_FLAG_IS_WRITEABLE = _glib.IO_FLAG_IS_WRITEABLE
+IO_FLAG_MASK = _glib.IO_FLAG_MASK
+IO_FLAG_NONBLOCK = _glib.IO_FLAG_NONBLOCK
+IO_FLAG_SET_MASK = _glib.IO_FLAG_SET_MASK
+IO_HUP = _glib.IO_HUP
+IO_IN = _glib.IO_IN
+IO_NVAL = _glib.IO_NVAL
+IO_OUT = _glib.IO_OUT
+IO_PRI = _glib.IO_PRI
+IO_STATUS_AGAIN = _glib.IO_STATUS_AGAIN
+IO_STATUS_EOF = _glib.IO_STATUS_EOF
+IO_STATUS_ERROR = _glib.IO_STATUS_ERROR
+IO_STATUS_NORMAL = _glib.IO_STATUS_NORMAL
+OPTION_ERROR = _glib.OPTION_ERROR
+OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
+OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
+OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
+OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
+OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
+OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
+OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
+OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
+OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
+OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
+OPTION_REMAINING = _glib.OPTION_REMAINING
+PRIORITY_DEFAULT = _glib.PRIORITY_DEFAULT
+PRIORITY_DEFAULT_IDLE = _glib.PRIORITY_DEFAULT_IDLE
+PRIORITY_HIGH = _glib.PRIORITY_HIGH
+PRIORITY_HIGH_IDLE = _glib.PRIORITY_HIGH_IDLE
+PRIORITY_LOW = _glib.PRIORITY_LOW
+SPAWN_CHILD_INHERITS_STDIN = _glib.SPAWN_CHILD_INHERITS_STDIN
+SPAWN_DO_NOT_REAP_CHILD = _glib.SPAWN_DO_NOT_REAP_CHILD
+SPAWN_FILE_AND_ARGV_ZERO = _glib.SPAWN_FILE_AND_ARGV_ZERO
+SPAWN_LEAVE_DESCRIPTORS_OPEN = _glib.SPAWN_LEAVE_DESCRIPTORS_OPEN
+SPAWN_SEARCH_PATH = _glib.SPAWN_SEARCH_PATH
+SPAWN_STDERR_TO_DEV_NULL = _glib.SPAWN_STDERR_TO_DEV_NULL
+SPAWN_STDOUT_TO_DEV_NULL = _glib.SPAWN_STDOUT_TO_DEV_NULL
+USER_DIRECTORY_DESKTOP = _glib.USER_DIRECTORY_DESKTOP
+USER_DIRECTORY_DOCUMENTS = _glib.USER_DIRECTORY_DOCUMENTS
+USER_DIRECTORY_DOWNLOAD = _glib.USER_DIRECTORY_DOWNLOAD
+USER_DIRECTORY_MUSIC = _glib.USER_DIRECTORY_MUSIC
+USER_DIRECTORY_PICTURES = _glib.USER_DIRECTORY_PICTURES
+USER_DIRECTORY_PUBLIC_SHARE = _glib.USER_DIRECTORY_PUBLIC_SHARE
+USER_DIRECTORY_TEMPLATES = _glib.USER_DIRECTORY_TEMPLATES
+USER_DIRECTORY_VIDEOS = _glib.USER_DIRECTORY_VIDEOS
+
+# Functions
+child_watch_add = _glib.child_watch_add
+filename_display_basename = _glib.filename_display_basename
+filename_display_name = _glib.filename_display_name
+filename_from_utf8 = _glib.filename_from_utf8
+find_program_in_path = _glib.find_program_in_path
+get_application_name = _glib.get_application_name
+get_current_time = _glib.get_current_time
+get_prgname = _glib.get_prgname
+get_system_config_dirs = _glib.get_system_config_dirs
+get_system_data_dirs = _glib.get_system_data_dirs
+get_user_cache_dir = _glib.get_user_cache_dir
+get_user_config_dir = _glib.get_user_config_dir
+get_user_data_dir = _glib.get_user_data_dir
+get_user_special_dir = _glib.get_user_special_dir
+glib_version = _glib.glib_version
+idle_add = _glib.idle_add
+io_add_watch = _glib.io_add_watch
+main_context_default = _glib.main_context_default
+main_depth = _glib.main_depth
+markup_escape_text = _glib.markup_escape_text
+pyglib_version = _glib.pyglib_version
+set_application_name = _glib.set_application_name
+set_prgname = _glib.set_prgname
+source_remove = _glib.source_remove
+spawn_async = _glib.spawn_async
+threads_init = _glib.threads_init
+timeout_add = _glib.timeout_add
+timeout_add_seconds = _glib.timeout_add_seconds
+uri_list_extract_uris = _glib.uri_list_extract_uris
diff --git a/gi/_glib/glibmodule.c b/gi/_glib/glibmodule.c
new file mode 100644 (file)
index 0000000..f01ee77
--- /dev/null
@@ -0,0 +1,969 @@
+/* -*- Mode: C; c-set-style: python; c-basic-offset: 4  -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ *   glibmodule.c: wrapper for the glib library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <Python.h>
+#include <glib.h>
+#include "pyglib.h"
+#include "pyglib-private.h"
+#include "pygiochannel.h"
+#include "pygmaincontext.h"
+#include "pygmainloop.h"
+#include "pygoptioncontext.h"
+#include "pygoptiongroup.h"
+#include "pygsource.h"
+#include "pygspawn.h"
+
+#define PYGLIB_MAJOR_VERSION PYGOBJECT_MAJOR_VERSION
+#define PYGLIB_MINOR_VERSION PYGOBJECT_MINOR_VERSION
+#define PYGLIB_MICRO_VERSION PYGOBJECT_MICRO_VERSION
+
+
+/* ---------------- glib module functions -------------------- */
+
+struct _PyGChildData {
+    PyObject *func;
+    PyObject *data;
+};
+
+static gint
+get_handler_priority(gint *priority, PyObject *kwargs)
+{
+    Py_ssize_t len, pos;
+    PyObject *key, *val;
+
+    /* no keyword args? leave as default */
+    if (kwargs == NULL)        return 0;
+
+    len = PyDict_Size(kwargs);
+    if (len == 0) return 0;
+
+    if (len != 1) {
+       PyErr_SetString(PyExc_TypeError,
+                       "expecting at most one keyword argument");
+       return -1;
+    }
+    pos = 0;
+    PyDict_Next(kwargs, &pos, &key, &val);
+    if (!PYGLIB_PyUnicode_Check(key)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "keyword argument name is not a string");
+       return -1;
+    }
+
+    if (strcmp(PYGLIB_PyUnicode_AsString(key), "priority") != 0) {
+       PyErr_SetString(PyExc_TypeError,
+                       "only 'priority' keyword argument accepted");
+       return -1;
+    }
+
+    *priority = PYGLIB_PyLong_AsLong(val);
+    if (PyErr_Occurred()) {
+       PyErr_Clear();
+       PyErr_SetString(PyExc_ValueError, "could not get priority value");
+       return -1;
+    }
+    return 0;
+}
+
+static PyObject *
+pyglib_threads_init(PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    if (!pyglib_enable_threads())
+        return NULL;
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyglib_idle_add(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    PyObject *first, *callback, *cbargs = NULL, *data;
+    gint len, priority = G_PRIORITY_DEFAULT_IDLE;
+    guint handler_id;
+
+    len = PyTuple_Size(args);
+    if (len < 1) {
+       PyErr_SetString(PyExc_TypeError,
+                       "idle_add requires at least 1 argument");
+       return NULL;
+    }
+    first = PySequence_GetSlice(args, 0, 1);
+    if (!PyArg_ParseTuple(first, "O:idle_add", &callback)) {
+       Py_DECREF(first);
+        return NULL;
+    }
+    Py_DECREF(first);
+    if (!PyCallable_Check(callback)) {
+        PyErr_SetString(PyExc_TypeError, "first argument not callable");
+        return NULL;
+    }
+    if (get_handler_priority(&priority, kwargs) < 0)
+       return NULL;
+
+    cbargs = PySequence_GetSlice(args, 1, len);
+    if (cbargs == NULL)
+       return NULL;
+
+    data = Py_BuildValue("(ON)", callback, cbargs);
+    if (data == NULL)
+       return NULL;
+    handler_id = g_idle_add_full(priority,
+                                _pyglib_handler_marshal, data,
+                                _pyglib_destroy_notify);
+    return PYGLIB_PyLong_FromLong(handler_id);
+}
+
+
+static PyObject *
+pyglib_timeout_add(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    PyObject *first, *callback, *cbargs = NULL, *data;
+    gint len, priority = G_PRIORITY_DEFAULT;
+    guint interval, handler_id;
+
+    len = PyTuple_Size(args);
+    if (len < 2) {
+       PyErr_SetString(PyExc_TypeError,
+                       "timeout_add requires at least 2 args");
+       return NULL;
+    }
+    first = PySequence_GetSlice(args, 0, 2);
+    if (!PyArg_ParseTuple(first, "IO:timeout_add", &interval, &callback)) {
+       Py_DECREF(first);
+        return NULL;
+    }
+    Py_DECREF(first);
+    if (!PyCallable_Check(callback)) {
+        PyErr_SetString(PyExc_TypeError, "second argument not callable");
+        return NULL;
+    }
+    if (get_handler_priority(&priority, kwargs) < 0)
+       return NULL;
+
+    cbargs = PySequence_GetSlice(args, 2, len);
+    if (cbargs == NULL)
+       return NULL;
+
+    data = Py_BuildValue("(ON)", callback, cbargs);
+    if (data == NULL)
+       return NULL;
+    handler_id = g_timeout_add_full(priority, interval,
+                                   _pyglib_handler_marshal, data,
+                                   _pyglib_destroy_notify);
+    return PYGLIB_PyLong_FromLong(handler_id);
+}
+
+static PyObject *
+pyglib_timeout_add_seconds(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    PyObject *first, *callback, *cbargs = NULL, *data;
+    gint len, priority = G_PRIORITY_DEFAULT;
+    guint interval, handler_id;
+
+    len = PyTuple_Size(args);
+    if (len < 2) {
+       PyErr_SetString(PyExc_TypeError,
+                       "timeout_add_seconds requires at least 2 args");
+       return NULL;
+    }
+    first = PySequence_GetSlice(args, 0, 2);
+    if (!PyArg_ParseTuple(first, "IO:timeout_add_seconds", &interval, &callback)) {
+       Py_DECREF(first);
+        return NULL;
+    }
+    Py_DECREF(first);
+    if (!PyCallable_Check(callback)) {
+        PyErr_SetString(PyExc_TypeError, "second argument not callable");
+        return NULL;
+    }
+    if (get_handler_priority(&priority, kwargs) < 0)
+       return NULL;
+
+    cbargs = PySequence_GetSlice(args, 2, len);
+    if (cbargs == NULL)
+       return NULL;
+
+    data = Py_BuildValue("(ON)", callback, cbargs);
+    if (data == NULL)
+       return NULL;
+    handler_id = g_timeout_add_seconds_full(priority, interval,
+                                            _pyglib_handler_marshal, data,
+                                            _pyglib_destroy_notify);
+    return PYGLIB_PyLong_FromLong(handler_id);
+}
+
+static gboolean
+iowatch_marshal(GIOChannel *source,
+               GIOCondition condition,
+               gpointer user_data)
+{
+    PyGILState_STATE state;
+    PyObject *tuple, *func, *firstargs, *args, *ret;
+    gboolean res;
+
+    g_return_val_if_fail(user_data != NULL, FALSE);
+
+    state = pyglib_gil_state_ensure();
+
+    tuple = (PyObject *)user_data;
+    func = PyTuple_GetItem(tuple, 0);
+
+    /* arg vector is (fd, condtion, *args) */
+    firstargs = Py_BuildValue("(Oi)", PyTuple_GetItem(tuple, 1), condition);
+    args = PySequence_Concat(firstargs, PyTuple_GetItem(tuple, 2));
+    Py_DECREF(firstargs);
+
+    ret = PyObject_CallObject(func, args);
+    Py_DECREF(args);
+    if (!ret) {
+       PyErr_Print();
+       res = FALSE;
+    } else {
+        if (ret == Py_None) {
+            if (PyErr_Warn(PyExc_Warning,
+                          "_glib.io_add_watch callback returned None; "
+                           "should return True/False")) {
+                PyErr_Print();
+            }
+        }
+       res = PyObject_IsTrue(ret);
+       Py_DECREF(ret);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return res;
+}
+
+static PyObject *
+pyglib_io_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    PyObject *first, *pyfd, *callback, *cbargs = NULL, *data;
+    gint fd, priority = G_PRIORITY_DEFAULT, condition;
+    Py_ssize_t len;
+    GIOChannel *iochannel;
+    guint handler_id;
+
+    len = PyTuple_Size(args);
+    if (len < 3) {
+       PyErr_SetString(PyExc_TypeError,
+                       "io_add_watch requires at least 3 args");
+       return NULL;
+    }
+    first = PySequence_GetSlice(args, 0, 3);
+    if (!PyArg_ParseTuple(first, "OiO:io_add_watch", &pyfd, &condition,
+                         &callback)) {
+       Py_DECREF(first);
+        return NULL;
+    }
+    Py_DECREF(first);
+    fd = PyObject_AsFileDescriptor(pyfd);
+    if (fd < 0) {
+       return NULL;
+    }
+    if (!PyCallable_Check(callback)) {
+        PyErr_SetString(PyExc_TypeError, "third argument not callable");
+        return NULL;
+    }
+    if (get_handler_priority(&priority, kwargs) < 0)
+       return NULL;
+
+    cbargs = PySequence_GetSlice(args, 3, len);
+    if (cbargs == NULL)
+      return NULL;
+    data = Py_BuildValue("(OON)", callback, pyfd, cbargs);
+    if (data == NULL)
+      return NULL;
+    iochannel = g_io_channel_unix_new(fd);
+    handler_id = g_io_add_watch_full(iochannel, priority, condition,
+                                    iowatch_marshal, data,
+                                    (GDestroyNotify)_pyglib_destroy_notify);
+    g_io_channel_unref(iochannel);
+    
+    return PYGLIB_PyLong_FromLong(handler_id);
+}
+
+static PyObject *
+pyglib_source_remove(PyObject *self, PyObject *args)
+{
+    guint tag;
+
+    if (!PyArg_ParseTuple(args, "i:source_remove", &tag))
+       return NULL;
+
+    return PyBool_FromLong(g_source_remove(tag));
+}
+
+static PyObject *
+pyglib_main_context_default(PyObject *unused)
+{
+    return pyglib_main_context_new(g_main_context_default());
+}
+
+static void
+child_watch_func(GPid pid, gint status, gpointer data)
+{
+    struct _PyGChildData *child_data = (struct _PyGChildData *) data;
+    PyObject *retval;
+    PyGILState_STATE gil;
+
+    gil = pyglib_gil_state_ensure();
+    if (child_data->data)
+        retval = PyObject_CallFunction(child_data->func, "iiO", pid, status,
+                                       child_data->data);
+    else
+        retval = PyObject_CallFunction(child_data->func, "ii", pid, status);
+
+    if (retval)
+       Py_DECREF(retval);
+    else
+       PyErr_Print();
+
+    pyglib_gil_state_release(gil);
+}
+
+static void
+child_watch_dnotify(gpointer data)
+{
+    struct _PyGChildData *child_data = (struct _PyGChildData *) data;
+    Py_DECREF(child_data->func);
+    Py_XDECREF(child_data->data);
+    g_slice_free(struct _PyGChildData, child_data);
+}
+
+
+static PyObject *
+pyglib_child_watch_add(PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "pid", "function", "data", "priority", NULL };
+    guint id;
+    gint priority = G_PRIORITY_DEFAULT;
+    int pid;
+    PyObject *func, *user_data = NULL;
+    struct _PyGChildData *child_data;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "iO|Oi:glib.child_watch_add", kwlist,
+                                     &pid, &func, &user_data, &priority))
+        return NULL;
+    if (!PyCallable_Check(func)) {
+        PyErr_SetString(PyExc_TypeError,
+                        "_glib.child_watch_add: second argument must be callable");
+        return NULL;
+    }
+
+    child_data = g_slice_new(struct _PyGChildData);
+    child_data->func = func;
+    child_data->data = user_data;
+    Py_INCREF(child_data->func);
+    if (child_data->data)
+        Py_INCREF(child_data->data);
+    id = g_child_watch_add_full(priority, pid, child_watch_func,
+                                child_data, child_watch_dnotify);
+    return PYGLIB_PyLong_FromLong(id);
+}
+
+static PyObject *
+pyglib_markup_escape_text(PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "text", NULL };
+    char *text_in, *text_out;
+    Py_ssize_t text_size;
+    PyObject *retval;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "s#:glib.markup_escape_text", kwlist,
+                                     &text_in, &text_size))
+        return NULL;
+
+    text_out = g_markup_escape_text(text_in, text_size);
+    retval = PYGLIB_PyUnicode_FromString(text_out);
+    g_free(text_out);
+    return retval;
+}
+
+static PyObject *
+pyglib_get_current_time(PyObject *unused)
+{
+    GTimeVal timeval;
+
+    g_get_current_time(&timeval);
+    return pyglib_float_from_timeval(timeval);
+}
+
+static PyObject*
+get_user_dir(const char *path)
+{
+    if (path)
+        return PYGLIB_PyUnicode_FromString(path);
+    else {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+}
+
+static PyObject*
+pyglib_get_user_config_dir(PyObject *self)
+{
+    return get_user_dir(g_get_user_config_dir());
+}
+
+static PyObject*
+pyglib_get_user_cache_dir(PyObject *self)
+{
+    return get_user_dir(g_get_user_cache_dir());
+}
+
+static PyObject*
+pyglib_get_user_data_dir(PyObject *self)
+{
+    return get_user_dir(g_get_user_data_dir());
+}
+
+static PyObject *
+pyglib_get_user_special_dir(PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "directory", NULL };
+    guint directory;
+    const char *path;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "i:glib.get_user_special_dir", kwlist,
+                                     &directory))
+        return NULL;
+
+    path = g_get_user_special_dir(directory);
+    if (path)
+        return PYGLIB_PyUnicode_FromString(path);
+    else {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+}
+
+static PyObject *
+pyglib_main_depth(PyObject *unused)
+{
+    return PYGLIB_PyLong_FromLong(g_main_depth());
+}
+
+static PyObject *
+pyglib_filename_display_name(PyObject *self, PyObject *args)
+{
+    PyObject *py_display_name;
+    char *filename, *display_name;
+    
+    if (!PyArg_ParseTuple(args, "s:glib.filename_display_name",
+                         &filename))
+       return NULL;
+
+    display_name = g_filename_display_name(filename);
+    py_display_name = PyUnicode_DecodeUTF8(display_name,
+                                          strlen(display_name), NULL);
+    g_free(display_name);
+    return py_display_name;
+}
+
+static PyObject *
+pyglib_filename_display_basename(PyObject *self, PyObject *args)
+{
+    PyObject *py_display_basename;
+    char *filename, *display_basename;
+    
+    if (!PyArg_ParseTuple(args, "s:glib.filename_display_basename",
+                         &filename))
+       return NULL;
+
+    display_basename = g_filename_display_basename(filename);
+    py_display_basename = PyUnicode_DecodeUTF8(display_basename,
+                                              strlen(display_basename), NULL);
+    g_free(display_basename);
+    return py_display_basename;
+}
+
+static PyObject *
+pyglib_filename_from_utf8(PyObject *self, PyObject *args)
+{
+    char *filename, *utf8string;
+    Py_ssize_t utf8string_len;
+    gsize bytes_written;
+    GError *error = NULL;
+    PyObject *py_filename;
+    
+    if (!PyArg_ParseTuple(args, "s#:glib.filename_from_utf8",
+                         &utf8string, &utf8string_len))
+       return NULL;
+
+    filename = g_filename_from_utf8(utf8string, utf8string_len,
+                                   NULL, &bytes_written, &error);
+    if (pyglib_error_check(&error)) {
+        g_free(filename);
+        return NULL;
+    }
+    py_filename = PYGLIB_PyUnicode_FromStringAndSize(filename, bytes_written);
+    g_free(filename);
+    return py_filename;
+}
+
+
+static PyObject*
+pyglib_get_application_name(PyObject *self)
+{
+    const char *name;
+
+    name = g_get_application_name();
+    if (!name) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    return PYGLIB_PyUnicode_FromString(name);
+}
+
+static PyObject*
+pyglib_set_application_name(PyObject *self, PyObject *arg)
+{
+    if (!PYGLIB_PyUnicode_Check(arg)) {
+       PyErr_Format(PyExc_TypeError,
+                    "first argument must be a string, not '%s'",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr(arg)));
+       return NULL;
+    }
+    g_set_application_name(PYGLIB_PyUnicode_AsString(arg));
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+pyglib_get_prgname(PyObject *self)
+{
+    char *name;
+
+    name = g_get_prgname();
+    if (!name) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+    return PYGLIB_PyUnicode_FromString(name);
+}
+
+static PyObject*
+pyglib_set_prgname(PyObject *self, PyObject *arg)
+{
+    if (!PYGLIB_PyUnicode_Check(arg)) {
+       PyErr_Format(PyExc_TypeError,
+                    "first argument must be a string, not '%s'",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr(arg)));
+       return NULL;
+    }
+    g_set_prgname(PYGLIB_PyUnicode_AsString(arg));
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyglib_find_program_in_path(PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "program", NULL };
+    char *program, *ret;
+    PyObject *retval;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "s:glib.find_program_in_path", kwlist,
+                                     &program))
+        return NULL;
+
+    ret = g_find_program_in_path(program);
+    retval = PYGLIB_PyUnicode_FromString(ret);
+    g_free(ret);
+    return retval;
+}
+
+static PyObject *
+pyglib_uri_list_extract_uris(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "uri_list", NULL };
+    char *uri_list;
+    char **uris, **tmp;
+    int i = 0, j;
+    PyObject *ret;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"s:uri_list_extract_uris", kwlist, &uri_list))
+        return NULL;
+
+    uris = (char **)g_uri_list_extract_uris(uri_list);
+    if (!uris) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    tmp = uris;
+    while (*tmp)
+        tmp++, i++;
+
+    ret = PyTuple_New(i);
+    for (j = 0; j < i; j++)
+        PyTuple_SetItem(ret, j, PYGLIB_PyUnicode_FromString(uris[j]));
+
+    g_strfreev(uris);
+
+    return ret;
+}
+
+/* FIXME: we should use strv_to_pylist (in pygio-utils.h) here, but that
+ * function should be moved into pyglib first. See
+ * https://bugzilla.gnome.org/show_bug.cgi?id=630508
+ */
+static PyObject *
+tuple_of_strings_from_dirs(const gchar* const *dirs)
+{
+    char **tmp;
+    int i = 0, j;
+    PyObject *ret;
+
+    if (!dirs) {
+        Py_INCREF(Py_None);
+        return Py_None;
+    }
+
+    tmp = (char **)dirs;
+    while (*tmp)
+        tmp++, i++;
+
+    ret = PyTuple_New(i);
+    for (j = 0; j < i; j++)
+        PyTuple_SetItem(ret, j, PYGLIB_PyUnicode_FromString(dirs[j]));
+
+    return ret;
+}
+
+static PyObject*
+pyglib_get_system_config_dirs(PyObject *self)
+{
+    return tuple_of_strings_from_dirs(g_get_system_config_dirs());
+}
+
+static PyObject*
+pyglib_get_system_data_dirs(PyObject *self)
+{
+    return tuple_of_strings_from_dirs(g_get_system_data_dirs());
+}
+
+static PyMethodDef _glib_functions[] = {
+    { "threads_init",
+      (PyCFunction) pyglib_threads_init, METH_NOARGS,
+      "threads_init()\n"
+      "Initialize GLib for use from multiple threads. If you also use GTK+\n"
+      "itself (i.e. GUI, not just PyGObject), use gtk.gdk.threads_init()\n"
+      "instead." },
+    { "idle_add",
+      (PyCFunction)pyglib_idle_add, METH_VARARGS|METH_KEYWORDS,
+      "idle_add(callable, user_data=None, priority=None) -> source id\n"
+      "  callable receives (user_data)\n"
+      "Adds a callable to be called whenever there are no higher priority\n"
+      "events pending to the default main loop." },
+    { "timeout_add",
+      (PyCFunction)pyglib_timeout_add, METH_VARARGS|METH_KEYWORDS,
+      "timeout_add(interval, callable, user_data=None,\n"
+      "            priority=None) -> source id\n"
+      "  callable receives (user_data)\n"
+      "Sets a callable be called repeatedly until it returns False." },
+    { "timeout_add_seconds",
+      (PyCFunction)pyglib_timeout_add_seconds, METH_VARARGS|METH_KEYWORDS,
+      "timeout_add(interval, callable, user_data=None,\n"
+      "            priority=None) -> source_id\n"
+      "  callable receives (user_data)\n"
+      "Sets a callable be called repeatedly until it returns False.\n"
+      "Use this if you want to have a timer in the \"seconds\" range\n"
+      "and do not care about the exact time of the first call of the\n"
+      "timer, use this for more efficient system power usage." },
+    { "io_add_watch",
+      (PyCFunction)pyglib_io_add_watch, METH_VARARGS|METH_KEYWORDS,
+      "io_add_watch(fd, condition, callback, user_data=None) -> source id\n"
+      "  callable receives (fd, condition, user_data)\n"
+      "Arranges for the fd to be monitored by the main loop for the\n"
+      "specified condition. Condition is a combination of glib.IO_IN,\n"
+      "glib.IO_OUT, glib.IO_PRI, gio.IO_ERR and gio.IO_HUB.\n" },
+    { "child_watch_add",
+      (PyCFunction)pyglib_child_watch_add, METH_VARARGS|METH_KEYWORDS,
+      "child_watch_add(pid, callable, user_data=None,\n"
+                       "priority=None) -> source id\n"
+      "  callable receives (pid, condition, user_data)\n"
+      "Sets the function specified by function to be called with the user\n"
+      "data specified by data when the child indicated by pid exits.\n"
+      "Condition is a combination of glib.IO_IN, glib.IO_OUT, glib.IO_PRI,\n"
+      "gio.IO_ERR and gio.IO_HUB." },
+    { "source_remove",
+      (PyCFunction)pyglib_source_remove, METH_VARARGS,
+      "source_remove(source_id) -> True if removed\n"
+      "Removes the event source specified by source id as returned by the\n"
+      "glib.idle_add(), glib.timeout_add() or glib.io_add_watch()\n"
+      "functions." },
+    { "spawn_async",
+      (PyCFunction)pyglib_spawn_async, METH_VARARGS|METH_KEYWORDS,
+      "spawn_async(argv, envp=None, working_directory=None,\n"
+      "            flags=0, child_setup=None, user_data=None,\n"
+      "            standard_input=None, standard_output=None,\n"
+      "            standard_error=None) -> (pid, stdin, stdout, stderr)\n"
+      "Execute a child program asynchronously within a glib.MainLoop()\n"
+      "See the reference manual for a complete reference." },
+    { "main_context_default",
+      (PyCFunction)pyglib_main_context_default, METH_NOARGS,
+      "main_context_default() -> a main context\n"
+      "Returns the default main context. This is the main context used\n"
+      "for main loop functions when a main loop is not explicitly specified." },
+    { "main_depth",
+      (PyCFunction)pyglib_main_depth, METH_NOARGS,
+      "main_depth() -> stack depth\n"
+      "Returns the depth of the stack of calls in the main context." },
+    { "filename_display_name",
+      (PyCFunction)pyglib_filename_display_name, METH_VARARGS },
+    { "filename_display_basename",
+      (PyCFunction)pyglib_filename_display_basename, METH_VARARGS },
+    { "filename_from_utf8",
+      (PyCFunction)pyglib_filename_from_utf8, METH_VARARGS },
+    { "get_application_name",
+      (PyCFunction)pyglib_get_application_name, METH_NOARGS },
+    { "set_application_name",
+      (PyCFunction)pyglib_set_application_name, METH_O },
+    { "get_prgname",
+      (PyCFunction)pyglib_get_prgname, METH_NOARGS },
+    { "set_prgname",
+      (PyCFunction)pyglib_set_prgname, METH_O },
+    { "get_current_time",
+      (PyCFunction)pyglib_get_current_time, METH_NOARGS },
+    { "get_user_cache_dir",
+      (PyCFunction)pyglib_get_user_cache_dir, METH_NOARGS },
+    { "get_user_config_dir",
+      (PyCFunction)pyglib_get_user_config_dir, METH_NOARGS },
+    { "get_user_data_dir",
+      (PyCFunction)pyglib_get_user_data_dir, METH_NOARGS },
+    { "get_user_special_dir",
+      (PyCFunction)pyglib_get_user_special_dir, METH_VARARGS|METH_KEYWORDS },
+    { "markup_escape_text",
+      (PyCFunction)pyglib_markup_escape_text, METH_VARARGS|METH_KEYWORDS },
+    { "find_program_in_path",
+      (PyCFunction)pyglib_find_program_in_path, METH_VARARGS|METH_KEYWORDS },
+    { "uri_list_extract_uris",
+      (PyCFunction)pyglib_uri_list_extract_uris, METH_VARARGS|METH_KEYWORDS,
+      "uri_list_extract_uris(uri_list) -> tuple of strings holding URIs\n"
+      "Splits an string containing an URI list conforming to the \n"
+      "text/uri-list mime type defined in RFC 2483 into individual URIs, \n"
+      "discarding any comments. The URIs are not validated." },
+    { "get_system_config_dirs",
+      (PyCFunction)pyglib_get_system_config_dirs, METH_NOARGS },
+    { "get_system_data_dirs",
+      (PyCFunction)pyglib_get_system_data_dirs, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+/* ----------------- glib module initialisation -------------- */
+
+static struct _PyGLib_Functions pyglib_api = {
+    FALSE, /* threads_enabled */
+    NULL,  /* gerror_exception */
+    NULL,  /* block_threads */
+    NULL,  /* unblock_threads */
+    pyg_main_context_new,
+    pyg_option_context_new,
+    pyg_option_group_new,
+};
+
+static void
+pyglib_register_api(PyObject *d)
+{
+    PyObject *o;
+
+    /* for addon libraries ... */
+    PyDict_SetItemString(d, "_PyGLib_API",
+                        o=PYGLIB_CPointer_WrapPointer(&pyglib_api,"gi._glib._PyGLib_API"));
+    Py_DECREF(o);
+    
+    pyglib_init_internal(o);
+}
+
+static void
+pyglib_register_error(PyObject *d)
+{
+    PyObject *dict;
+    PyObject *gerror_class;
+    dict = PyDict_New();
+    /* This is a hack to work around the deprecation warning of
+     * BaseException.message in Python 2.6+.
+     * GError has also an "message" attribute.
+     */
+    PyDict_SetItemString(dict, "message", Py_None);
+    gerror_class = PyErr_NewException("gi._glib.GError", PyExc_RuntimeError, dict);
+    Py_DECREF(dict);
+
+    PyDict_SetItemString(d, "GError", gerror_class);
+    pyglib_api.gerror_exception = gerror_class;
+}
+
+static void
+pyglib_register_version_tuples(PyObject *d)
+{
+    PyObject *o;
+
+    /* glib version */
+    o = Py_BuildValue("(iii)", glib_major_version, glib_minor_version,
+                     glib_micro_version);
+    PyDict_SetItemString(d, "glib_version", o);
+    Py_DECREF(o);
+
+    /* pyglib version */
+    o = Py_BuildValue("(iii)",
+                     PYGLIB_MAJOR_VERSION,
+                     PYGLIB_MINOR_VERSION,
+                     PYGLIB_MICRO_VERSION);
+    PyDict_SetItemString(d, "pyglib_version", o);
+    Py_DECREF(o);
+}
+
+static void
+pyglib_register_constants(PyObject *m)
+{
+    PyModule_AddIntConstant(m, "SPAWN_LEAVE_DESCRIPTORS_OPEN",
+                           G_SPAWN_LEAVE_DESCRIPTORS_OPEN);
+    PyModule_AddIntConstant(m, "SPAWN_DO_NOT_REAP_CHILD",
+                           G_SPAWN_DO_NOT_REAP_CHILD);
+    PyModule_AddIntConstant(m, "SPAWN_SEARCH_PATH",
+                           G_SPAWN_SEARCH_PATH);
+    PyModule_AddIntConstant(m, "SPAWN_STDOUT_TO_DEV_NULL",
+                           G_SPAWN_STDOUT_TO_DEV_NULL);
+    PyModule_AddIntConstant(m, "SPAWN_STDERR_TO_DEV_NULL",
+                           G_SPAWN_STDERR_TO_DEV_NULL);
+    PyModule_AddIntConstant(m, "SPAWN_CHILD_INHERITS_STDIN",
+                           G_SPAWN_CHILD_INHERITS_STDIN);
+    PyModule_AddIntConstant(m, "SPAWN_FILE_AND_ARGV_ZERO",
+                           G_SPAWN_FILE_AND_ARGV_ZERO);
+
+    PyModule_AddIntConstant(m, "PRIORITY_HIGH",
+                           G_PRIORITY_HIGH);
+    PyModule_AddIntConstant(m, "PRIORITY_DEFAULT",
+                           G_PRIORITY_DEFAULT);
+    PyModule_AddIntConstant(m, "PRIORITY_HIGH_IDLE",
+                           G_PRIORITY_HIGH_IDLE);
+    PyModule_AddIntConstant(m, "PRIORITY_DEFAULT_IDLE",
+                           G_PRIORITY_DEFAULT_IDLE);
+    PyModule_AddIntConstant(m, "PRIORITY_LOW",
+                           G_PRIORITY_LOW);
+
+    PyModule_AddIntConstant(m, "IO_IN",   G_IO_IN);
+    PyModule_AddIntConstant(m, "IO_OUT",  G_IO_OUT);
+    PyModule_AddIntConstant(m, "IO_PRI",  G_IO_PRI);
+    PyModule_AddIntConstant(m, "IO_ERR",  G_IO_ERR);
+    PyModule_AddIntConstant(m, "IO_HUP",  G_IO_HUP);
+    PyModule_AddIntConstant(m, "IO_NVAL", G_IO_NVAL);
+
+    PyModule_AddIntConstant(m, "IO_STATUS_ERROR",
+                           G_IO_STATUS_ERROR);
+    PyModule_AddIntConstant(m, "IO_STATUS_NORMAL",
+                           G_IO_STATUS_NORMAL);
+    PyModule_AddIntConstant(m, "IO_STATUS_EOF",
+                           G_IO_STATUS_EOF);
+    PyModule_AddIntConstant(m, "IO_STATUS_AGAIN",
+                           G_IO_STATUS_AGAIN);
+    PyModule_AddIntConstant(m, "IO_FLAG_APPEND",
+                           G_IO_FLAG_APPEND);
+    PyModule_AddIntConstant(m, "IO_FLAG_NONBLOCK",
+                           G_IO_FLAG_NONBLOCK);
+    PyModule_AddIntConstant(m, "IO_FLAG_IS_READABLE",
+                           G_IO_FLAG_IS_READABLE);
+    PyModule_AddIntConstant(m, "IO_FLAG_IS_WRITEABLE",
+                           G_IO_FLAG_IS_WRITEABLE);
+    PyModule_AddIntConstant(m, "IO_FLAG_IS_SEEKABLE",
+                           G_IO_FLAG_IS_SEEKABLE);
+    PyModule_AddIntConstant(m, "IO_FLAG_MASK",
+                           G_IO_FLAG_MASK);
+    PyModule_AddIntConstant(m, "IO_FLAG_GET_MASK",
+                           G_IO_FLAG_GET_MASK);
+    PyModule_AddIntConstant(m, "IO_FLAG_SET_MASK",
+                           G_IO_FLAG_SET_MASK);
+
+    PyModule_AddIntConstant(m, "OPTION_FLAG_HIDDEN",
+                           G_OPTION_FLAG_HIDDEN);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_IN_MAIN",
+                           G_OPTION_FLAG_IN_MAIN);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_REVERSE",
+                           G_OPTION_FLAG_REVERSE);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_NO_ARG",
+                           G_OPTION_FLAG_NO_ARG);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_FILENAME",
+                           G_OPTION_FLAG_FILENAME);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_OPTIONAL_ARG",
+                           G_OPTION_FLAG_OPTIONAL_ARG);
+    PyModule_AddIntConstant(m, "OPTION_FLAG_NOALIAS",
+                           G_OPTION_FLAG_NOALIAS); 
+
+    PyModule_AddIntConstant(m, "OPTION_ERROR_UNKNOWN_OPTION",
+                           G_OPTION_ERROR_UNKNOWN_OPTION);
+    PyModule_AddIntConstant(m, "OPTION_ERROR_BAD_VALUE",
+                           G_OPTION_ERROR_BAD_VALUE);
+    PyModule_AddIntConstant(m, "OPTION_ERROR_FAILED",
+                           G_OPTION_ERROR_FAILED);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_DESKTOP",
+                            G_USER_DIRECTORY_DESKTOP);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_DOCUMENTS",
+                            G_USER_DIRECTORY_DOCUMENTS);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_DOWNLOAD",
+                            G_USER_DIRECTORY_DOWNLOAD);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_MUSIC",
+                            G_USER_DIRECTORY_MUSIC);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_PICTURES",
+                            G_USER_DIRECTORY_PICTURES);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_PUBLIC_SHARE",
+                            G_USER_DIRECTORY_PUBLIC_SHARE);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_TEMPLATES",
+                            G_USER_DIRECTORY_TEMPLATES);
+    PyModule_AddIntConstant(m, "USER_DIRECTORY_VIDEOS",
+                            G_USER_DIRECTORY_VIDEOS);
+
+    PyModule_AddStringConstant(m, "OPTION_REMAINING",
+                              G_OPTION_REMAINING);
+    PyModule_AddStringConstant(m, "OPTION_ERROR",
+                              (char*) g_quark_to_string(G_OPTION_ERROR));
+}
+
+PYGLIB_MODULE_START(_glib, "_glib")
+{
+    PyObject *d = PyModule_GetDict(module);
+
+    pyglib_register_constants(module);
+    pyglib_register_api(d);
+    pyglib_register_error(d);
+    pyglib_register_version_tuples(d);
+    pyglib_iochannel_register_types(d);
+    pyglib_mainloop_register_types(d);
+    pyglib_maincontext_register_types(d);
+    pyglib_source_register_types(d);
+    pyglib_spawn_register_types(d);
+    pyglib_option_context_register_types(d);
+    pyglib_option_group_register_types(d);
+}
+PYGLIB_MODULE_END
similarity index 75%
rename from gi/_option.py
rename to gi/_glib/option.py
index 45c74a3..54e8fbb 100644 (file)
@@ -15,7 +15,9 @@
 # Lesser General Public License for more details.
 #
 # You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
 
 """GOption command line parser
 
@@ -30,8 +32,7 @@ GOptionGroup in glib.
 import sys
 import optparse
 from optparse import OptParseError, OptionError, OptionValueError, \
-    BadOptionError, OptionConflictError
-from .module import get_introspection_module
+                     BadOptionError, OptionConflictError
 
 if sys.version_info >= (3, 0):
     _basestring = str
@@ -40,11 +41,9 @@ else:
     _basestring = basestring
     _bytes = str
 
-from gi import _gi
-from gi._error import GError
-GLib = get_introspection_module('GLib')
-
-OPTION_CONTEXT_ERROR_QUARK = GLib.quark_to_string(GLib.option_error_quark())
+import gi._glib
+gi  # pyflakes
+_glib = sys.modules['gi._glib._glib']
 
 __all__ = [
     "OptParseError",
@@ -69,20 +68,17 @@ class Option(optparse.Option):
         filename   The supplied arguments are read as filename, GOption
                    parses this type in with the GLib filename encoding.
 
-    :ivar optional_arg:
-        This does not need a arguement, but it can be supplied.
-    :ivar hidden:
-        The help list does not show this option
-    :ivar in_main:
-        This option apears in the main group, this should only
-        be used for backwards compatibility.
+    Attributes:
+        optional_arg  This does not need a arguement, but it can be supplied.
+        hidden        The help list does not show this option
+        in_main       This option apears in the main group, this should only
+                      be used for backwards compatibility.
 
     Use Option.REMAINING as option name to get all positional arguments.
 
-    .. NOTE::
-        Every argument to an option is passed as utf-8 coded string, the only
-        exception are options which use the 'filename' type, its arguments
-        are passed as strings in the GLib filename encoding.
+    NOTE: Every argument to an option is passed as utf-8 coded string, the only
+          exception are options which use the 'filename' type, its arguments
+          are passed as strings in the GLib filename encoding.
 
     For further help, see optparse.Option.
     """
@@ -96,7 +92,7 @@ class Option(optparse.Option):
         'optional_arg',
     ]
 
-    REMAINING = '--' + GLib.OPTION_REMAINING
+    REMAINING = '--' + _glib.OPTION_REMAINING
 
     def __init__(self, *args, **kwargs):
         optparse.Option.__init__(self, *args, **kwargs)
@@ -122,19 +118,19 @@ class Option(optparse.Option):
         flags = 0
 
         if self.hidden:
-            flags |= GLib.OptionFlags.HIDDEN
+            flags |= _glib.OPTION_FLAG_HIDDEN
 
         if self.in_main:
-            flags |= GLib.OptionFlags.IN_MAIN
+            flags |= _glib.OPTION_FLAG_IN_MAIN
 
         if self.takes_value():
             if self.optional_arg:
-                flags |= GLib.OptionFlags.OPTIONAL_ARG
+                flags |= _glib.OPTION_FLAG_OPTIONAL_ARG
         else:
-            flags |= GLib.OptionFlags.NO_ARG
+            flags |= _glib.OPTION_FLAG_NO_ARG
 
         if self.type == 'filename':
-            flags |= GLib.OptionFlags.FILENAME
+            flags |= _glib.OPTION_FLAG_FILENAME
 
         for (long_name, short_name) in zip(self._long_opts, self._short_opts):
             yield (long_name[2:], _bytes(short_name[1]), flags, self.help, self.metavar)
@@ -146,24 +142,19 @@ class Option(optparse.Option):
 class OptionGroup(optparse.OptionGroup):
     """A group of command line options.
 
-    :param str name:
-        The groups name, used to create the --help-{name} option
-    :param str description:
-        Shown as title of the groups help view
-    :param str help_description:
-        Shown as help to the --help-{name} option
-    :param list option_list:
-        The options used in this group, must be option.Option()
-    :param dict defaults:
-        A dicitionary of default values
-    :param translation_domain:
-           Sets the translation domain for gettext().
-
-    .. NOTE::
-        This OptionGroup does not exactly map the optparse.OptionGroup
-        interface. There is no parser object to supply, but it is possible
-        to set default values and option_lists. Also the default values and
-        values are not shared with the OptionParser.
+    Arguements:
+       name:             The groups name, used to create the
+                         --help-{name} option
+       description:      Shown as title of the groups help view
+       help_description: Shown as help to the --help-{name} option
+       option_list:      The options used in this group, must be option.Option()
+       defaults:         A dicitionary of default values
+       translation_domain: Sets the translation domain for gettext().
+
+    NOTE: This OptionGroup does not exactly map the optparse.OptionGroup
+          interface. There is no parser object to supply, but it is possible
+          to set default values and option_lists. Also the default values and
+          values are not shared with the OptionParser.
 
     To pass a OptionGroup into a function which expects a GOptionGroup (e.g.
     gnome_program_init() ). OptionGroup.get_option_group() can be used.
@@ -203,14 +194,14 @@ class OptionGroup(optparse.OptionGroup):
                 opt.process(option_name, option_value, self.values, parser)
             except OptionValueError:
                 error = sys.exc_info()[1]
-                gerror = GError(str(error))
-                gerror.domain = OPTION_CONTEXT_ERROR_QUARK
-                gerror.code = GLib.OptionError.BAD_VALUE
+                gerror = _glib.GError(str(error))
+                gerror.domain = _glib.OPTION_ERROR
+                gerror.code = _glib.OPTION_ERROR_BAD_VALUE
                 gerror.message = str(error)
                 raise gerror
 
-        group = _gi.OptionGroup(self.name, self.description,
-                                self.help_description, callback)
+        group = _glib.OptionGroup(self.name, self.description,
+                                    self.help_description, callback)
         if self.translation_domain:
             group.set_translation_domain(self.translation_domain)
 
@@ -243,16 +234,15 @@ class OptionGroup(optparse.OptionGroup):
 class OptionParser(optparse.OptionParser):
     """Command line parser with GOption support.
 
-    :param bool help_enabled:
-        The --help, --help-all and --help-{group} options are enabled (default).
-    :param bool ignore_unknown_options:
-        Do not throw a exception when a option is not knwon, the option
-        will be in the result list.
+    NOTE: The OptionParser interface is not the exactly the same as the
+          optparse.OptionParser interface. Especially the usage parameter
+          is only used to show the metavar of the arguements.
 
-    .. NOTE::
-        The OptionParser interface is not the exactly the same as the
-        optparse.OptionParser interface. Especially the usage parameter
-        is only used to show the metavar of the arguements.
+    Attribues:
+        help_enabled:           The --help, --help-all and --help-{group}
+                                options are enabled (default).
+        ignore_unknown_options: Do not throw a exception when a option is not
+                                knwon, the option will be in the result list.
 
     OptionParser.add_option_group() does not only accept OptionGroup instances
     but also glib.OptionGroup, which is returned by gtk_get_option_group().
@@ -285,12 +275,12 @@ class OptionParser(optparse.OptionParser):
             parameter_string = self.usage + " - " + self.description
         else:
             parameter_string = self.usage
-        context = _gi.OptionContext(parameter_string)
+        context = _glib.OptionContext(parameter_string)
         context.set_help_enabled(self.help_enabled)
         context.set_ignore_unknown_options(self.ignore_unknown_options)
 
         for option_group in self.option_groups:
-            if isinstance(option_group, _gi.OptionGroup):
+            if isinstance(option_group, _glib.OptionGroup):
                 g_group = option_group
             else:
                 g_group = option_group.get_option_group(self)
@@ -303,7 +293,7 @@ class OptionParser(optparse.OptionParser):
                 opt = self._short_opt[option_name]
             opt.process(option_name, option_value, values, self)
 
-        main_group = _gi.OptionGroup(None, None, None, callback)
+        main_group = _glib.OptionGroup(None, None, None, callback)
         main_entries = []
         for option in self.option_list:
             main_entries.extend(option._to_goptionentries())
@@ -315,7 +305,7 @@ class OptionParser(optparse.OptionParser):
     def add_option_group(self, *args, **kwargs):
         if isinstance(args[0], _basestring):
             optparse.OptionParser.add_option_group(self,
-                                                   OptionGroup(self, *args, **kwargs))
+                OptionGroup(self, *args, **kwargs))
             return
         elif len(args) == 1 and not kwargs:
             if isinstance(args[0], OptionGroup):
@@ -323,7 +313,7 @@ class OptionParser(optparse.OptionParser):
                     args[0].parser = self
                 if args[0].parser is not self:
                     raise ValueError("invalid OptionGroup (wrong parser)")
-            if isinstance(args[0], _gi.OptionGroup):
+            if isinstance(args[0], _glib.OptionGroup):
                 self.option_groups.append(args[0])
                 return
         optparse.OptionParser.add_option_group(self, *args, **kwargs)
@@ -348,15 +338,15 @@ class OptionParser(optparse.OptionParser):
         try:
             options, args = optparse.OptionParser.parse_args(
                 self, args, values)
-        except GError:
+        except _glib.GError:
             error = sys.exc_info()[1]
-            if error.domain != OPTION_CONTEXT_ERROR_QUARK:
+            if error.domain != _glib.OPTION_ERROR:
                 raise
-            if error.code == GLib.OptionError.BAD_VALUE:
+            if error.code == _glib.OPTION_ERROR_BAD_VALUE:
                 raise OptionValueError(error.message)
-            elif error.code == GLib.OptionError.UNKNOWN_OPTION:
+            elif error.code == _glib.OPTION_ERROR_UNKNOWN_OPTION:
                 raise BadOptionError(error.message)
-            elif error.code == GLib.OptionError.FAILED:
+            elif error.code == _glib.OPTION_ERROR_FAILED:
                 raise OptParseError(error.message)
             else:
                 raise
@@ -368,5 +358,4 @@ class OptionParser(optparse.OptionParser):
         args = args[2:-len(old_args)]
         return options, args
 
-
 make_option = Option
diff --git a/gi/_glib/pygiochannel.c b/gi/_glib/pygiochannel.c
new file mode 100644 (file)
index 0000000..3921cac
--- /dev/null
@@ -0,0 +1,764 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <Python.h>
+#include <pythread.h>
+#include <structmember.h> /* for PyMemberDef */
+
+#include "pyglib.h"
+#include "pyglib-private.h"
+#include "pygsource.h"
+
+typedef struct {
+    PyObject_HEAD
+    GIOChannel *channel;
+    int softspace;         /* to make print >> chan, "foo" ... work */
+} PyGIOChannel;
+
+PYGLIB_DEFINE_TYPE("gi._glib.IOChannel", PyGIOChannel_Type, PyGIOChannel)
+
+static PyObject*
+py_io_channel_next(PyGIOChannel *self)
+{
+    PyObject* ret_obj = NULL;
+    gsize length = 0, terminator_pos;
+    gchar *str_return = NULL;
+    GError *error = NULL;
+    GIOStatus status;
+
+    status = g_io_channel_read_line(self->channel, &str_return, &length,
+                                    &terminator_pos, &error);
+    if (pyglib_error_check(&error))
+        return NULL;
+
+    if (status == G_IO_STATUS_EOF) {
+        PyErr_SetString(PyExc_StopIteration, "EOF");
+        return NULL;
+    }
+
+    ret_obj = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
+    g_free(str_return);
+    return ret_obj;
+}
+
+static PyObject*
+py_io_channel_richcompare(PyObject *self, PyObject *other, int op)
+{
+    if (Py_TYPE(self) == Py_TYPE(other) && 
+          Py_TYPE(self) == &PyGIOChannel_Type) {
+        return _pyglib_generic_ptr_richcompare(((PyGIOChannel*)self)->channel,
+                                               ((PyGIOChannel*)other)->channel,
+                                               op);
+    } else {
+       Py_INCREF(Py_NotImplemented);
+       return Py_NotImplemented;
+    }
+}
+
+static PyObject*
+py_io_channel_get_iter(PyObject *self)
+{
+    Py_INCREF(self);
+    return self;
+}
+
+static long
+py_io_channel_hash(PyGIOChannel *self)
+{
+    return (long) self->channel;
+}
+
+static void
+py_io_channel_dealloc(PyGIOChannel *self)
+{
+    if (self->channel)
+        g_io_channel_unref(self->channel);
+    PyObject_DEL(self);
+}
+
+static PyObject*
+py_io_channel_shutdown(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "flush", NULL };
+    GIOStatus ret;
+    PyObject* flush = Py_True;
+    GError* error = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:gi._glib.IOChannel.shutdown", kwlist, &flush))
+        return NULL;
+       
+    ret = g_io_channel_shutdown(self->channel, PyObject_IsTrue(flush), &error);
+    if (pyglib_error_check(&error))
+       return NULL;
+       
+    return PYGLIB_PyLong_FromLong(ret);
+}
+
+/* character encoding conversion involved functions.
+ */
+static PyObject*
+py_io_channel_set_buffer_size(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "size", NULL };
+    int size;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_buffer_size", kwlist, &size))
+        return NULL;
+       
+    g_io_channel_set_buffer_size(self->channel, size);
+    
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+py_io_channel_get_buffer_size(PyGIOChannel* self)
+{
+    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffer_size(self->channel));
+}
+
+static PyObject*
+py_io_channel_set_buffered(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "buffered", NULL };
+    int buffered;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_buffered", kwlist, &buffered))
+        return NULL;
+       
+    g_io_channel_set_buffered(self->channel, buffered);
+    
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+py_io_channel_get_buffered(PyGIOChannel* self)
+{
+    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffered(self->channel));
+}
+
+static PyObject*
+py_io_channel_set_encoding(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "encoding", NULL };
+    const char* encoding;
+    GError* error = NULL;
+    
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z:gi._glib.IOChannel.set_encoding", kwlist, &encoding))
+        return NULL;
+    
+    g_io_channel_set_encoding(self->channel, encoding, &error);
+    if (pyglib_error_check(&error))
+       return NULL;
+    
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+py_io_channel_get_encoding(PyGIOChannel* self)
+{
+    const char* encoding = g_io_channel_get_encoding(self->channel);
+    
+    if (encoding == NULL) {
+       Py_INCREF(Py_None);
+       return Py_None;
+    }
+
+    return PYGLIB_PyUnicode_FromString(encoding);
+}
+
+#define CHUNK_SIZE (8 * 1024)
+
+static PyObject*
+py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "max_count", NULL };
+    int max_count = -1;
+    PyObject* ret_obj = NULL;
+    gsize total_read = 0;
+    GError* error = NULL;
+    GIOStatus status = G_IO_STATUS_NORMAL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.read", kwlist, &max_count))
+        return NULL;
+       
+    if (max_count == 0)
+       return PYGLIB_PyUnicode_FromString("");
+    
+    while (status == G_IO_STATUS_NORMAL
+          && (max_count == -1 || total_read < max_count)) {
+       gsize single_read;
+       char* buf;
+       gsize buf_size;
+       
+       if (max_count == -1) 
+           buf_size = CHUNK_SIZE;
+       else {
+           buf_size = max_count - total_read;
+           if (buf_size > CHUNK_SIZE)
+               buf_size = CHUNK_SIZE;
+        }
+       
+       if ( ret_obj == NULL ) {
+           ret_obj = PYGLIB_PyBytes_FromStringAndSize((char *)NULL, buf_size);
+           if (ret_obj == NULL)
+               goto failure;
+       }
+       else if (buf_size + total_read > PYGLIB_PyBytes_Size(ret_obj)) {
+           if (PYGLIB_PyBytes_Resize(&ret_obj, buf_size + total_read) == -1)
+               goto failure;
+       }
+       
+        buf = PYGLIB_PyBytes_AsString(ret_obj) + total_read;
+
+        pyglib_unblock_threads();
+        status = g_io_channel_read_chars(self->channel, buf, buf_size, 
+                                         &single_read, &error);
+        pyglib_block_threads();
+       if (pyglib_error_check(&error))
+           goto failure;
+       
+       total_read += single_read;
+    }
+       
+    if ( total_read != PYGLIB_PyBytes_Size(ret_obj) ) {
+       if (PYGLIB_PyBytes_Resize(&ret_obj, total_read) == -1)
+           goto failure;
+    }
+
+#if PY_VERSION_HEX >= 0x03000000
+    /* If this is not UTF8 encoded channel return the raw bytes */
+    if (g_io_channel_get_encoding(self->channel) != NULL)
+        return ret_obj;
+
+    /* convert to Unicode string */
+    {
+       PyObject *unicode_obj;
+
+       unicode_obj = PyUnicode_FromString(PyBytes_AS_STRING(ret_obj));
+       if (unicode_obj == NULL)
+           goto failure;
+       Py_DECREF(ret_obj);
+       ret_obj = unicode_obj;
+    }
+#endif
+
+    return ret_obj;
+
+  failure:
+    Py_XDECREF(ret_obj);
+    return NULL;
+}
+
+static PyObject*
+py_io_channel_write_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "buf", NULL };
+    const char* buf;
+    Py_ssize_t buf_len;
+    gsize count;
+    GError* error = NULL;
+    GIOStatus status;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:gi._glib.IOChannel.write",
+                                     kwlist, &buf, &buf_len))
+        return NULL;
+       
+    pyglib_unblock_threads();
+    status = g_io_channel_write_chars(self->channel, buf, buf_len, &count, &error);
+    pyglib_block_threads();
+    if (pyglib_error_check(&error))
+       return NULL;
+       
+    return PYGLIB_PyLong_FromLong(count);
+}
+
+static PyObject*
+py_io_channel_write_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "lines", NULL };
+    char *buf;
+    Py_ssize_t buf_len;
+    gsize count;
+    GError* error = NULL;
+    GIOStatus status;
+    PyObject *iter, *value, *pylines;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.writelines",
+                                     kwlist, &pylines))
+        return NULL;
+
+    iter = PyObject_GetIter(pylines);
+    
+    while (1) {
+        value = PyIter_Next(iter);
+        if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
+            PyErr_Clear();
+            goto normal_exit;
+        }
+        if (!PYGLIB_PyUnicode_Check(value)) {
+            PyErr_SetString(PyExc_TypeError, "gi._glib.IOChannel.writelines must"
+                            " be sequence/iterator of strings");
+            Py_DECREF(iter);
+            return NULL;
+        }
+        PYGLIB_PyUnicode_AsStringAndSize(value, &buf, &buf_len);
+        pyglib_unblock_threads();
+        status = g_io_channel_write_chars(self->channel, buf, buf_len, &count, &error);
+        pyglib_unblock_threads();
+        Py_DECREF(value);
+        if (pyglib_error_check(&error)) {
+            Py_DECREF(iter);
+            return NULL;
+        }
+    }
+normal_exit:
+    Py_DECREF(iter);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+py_io_channel_flush(PyGIOChannel* self)
+{
+    GError* error = NULL;
+    GIOStatus status;
+       
+    pyglib_unblock_threads();
+    status = g_io_channel_flush(self->channel, &error);
+    pyglib_block_threads();
+    if (pyglib_error_check(&error))
+       return NULL;
+       
+    return PYGLIB_PyLong_FromLong(status);
+}
+
+static PyObject*
+py_io_channel_set_flags(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "flags", NULL };
+    GIOFlags flags;
+    GIOStatus status;
+    GError* error = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_flags",
+                                     kwlist, &flags))
+        return NULL;
+       
+    status = g_io_channel_set_flags(self->channel, flags, &error);
+    if (pyglib_error_check(&error))
+       return NULL;
+       
+    return PYGLIB_PyLong_FromLong(status);
+}
+
+static PyObject*
+py_io_channel_get_flags(PyGIOChannel* self)
+{
+    return PYGLIB_PyLong_FromLong(g_io_channel_get_flags(self->channel));
+}
+
+static PyObject*
+py_io_channel_get_buffer_condition(PyGIOChannel* self)
+{
+    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffer_condition(self->channel));
+}
+
+static PyObject*
+py_io_channel_set_close_on_unref(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "do_close", NULL };
+    PyObject *do_close;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.set_close_on_unref",
+                                     kwlist, &do_close))
+        return NULL;
+       
+    g_io_channel_set_close_on_unref(self->channel, PyObject_IsTrue(do_close));
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject*
+py_io_channel_get_close_on_unref(PyGIOChannel* self)
+{
+    if (g_io_channel_get_close_on_unref(self->channel)) {
+        Py_INCREF(Py_True);
+        return Py_True;
+    } else {
+        Py_INCREF(Py_False);
+        return Py_False;
+    }
+}
+
+typedef struct {
+    PyObject *callback;
+    PyObject *iochannel;
+    PyObject *user_data;
+} PyGIOWatchData;
+
+static void
+pyg_iowatch_data_free(PyGIOWatchData *data)
+{
+    Py_DECREF(data->callback);
+    Py_XDECREF(data->user_data);
+    Py_DECREF(data->iochannel);
+    g_slice_free(PyGIOWatchData, data);
+}
+
+static gboolean
+pyg_iowatch_marshal(GIOChannel *source,
+                    GIOCondition condition,
+                    gpointer user_data)
+{
+    PyObject *ret;
+    gboolean res;
+    PyGIOWatchData *data = (PyGIOWatchData *) user_data;
+    PyGILState_STATE state;
+
+    g_return_val_if_fail(user_data != NULL, FALSE);
+    g_return_val_if_fail(((PyGIOChannel *) data->iochannel)->channel == source,
+                         FALSE);
+
+    state = pyglib_gil_state_ensure();
+
+    if (data->user_data)
+        ret = PyObject_CallFunction(data->callback, "OiO", data->iochannel,
+                                    condition, data->user_data);
+    else
+        ret = PyObject_CallFunction(data->callback, "Oi", data->iochannel,
+                                    condition);
+
+    if (!ret) {
+       PyErr_Print();
+       res = FALSE;
+    } else {
+       res = PyObject_IsTrue(ret);
+       Py_DECREF(ret);
+    }
+    pyglib_gil_state_release(state);
+
+    return res;
+}
+
+
+
+static PyObject *
+py_io_channel_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "condition", "callback", "user_data", "priority", NULL };
+    PyObject *callback, *user_data = NULL;
+    int priority = G_PRIORITY_DEFAULT, condition;
+    GIOChannel *iochannel = NULL;
+    guint handler_id;
+    PyGIOWatchData *data;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "iO|Oi:gi._glib.IOChannel.add_watch",
+                                     kwlist, &condition, &callback,
+                                     &user_data, &priority))
+        return NULL;
+
+    iochannel = ((PyGIOChannel *) self)->channel;
+
+    if (!PyCallable_Check(callback)) {
+        PyErr_SetString(PyExc_TypeError, "second must be callable");
+        return NULL;
+    }
+
+    data = g_slice_new(PyGIOWatchData);
+    data->callback = callback; Py_INCREF(callback);
+    data->user_data = user_data; Py_XINCREF(user_data);
+    data->iochannel = self; Py_INCREF(self);
+
+    handler_id = g_io_add_watch_full(iochannel,
+                                     priority, condition,
+                                    pyg_iowatch_marshal, data,
+                                    (GDestroyNotify) pyg_iowatch_data_free);
+    return PyLong_FromUnsignedLong(handler_id);
+}
+
+
+#ifdef G_OS_WIN32
+
+static PyObject *
+py_io_channel_win32_poll(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "fds", "timeout", NULL };
+    GPollFD *pollfd;
+    PyObject *pyfds, *pyfd;
+    guint len, i;
+    gint timeout = -1;
+    gint result;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O!|i:gi._glib.IOChannel.win32_poll",
+                                     kwlist, &PyList_Type, &pyfds, &timeout))
+        return NULL;
+
+    len = PyList_Size(pyfds);
+    pollfd = g_newa(GPollFD, len);
+    for (i = 0; i < len; ++i) {
+        pyfd = PyList_GET_ITEM(pyfds, i);
+        if (!PyObject_TypeCheck(pyfd, &PyGPollFD_Type)) {
+            PyErr_SetString(PyExc_TypeError, "'fds' must be a list of gi._glib.PollFD objects");
+            return NULL;
+        }
+        pollfd[i] = ((PyGPollFD *) pyfd)->pollfd;
+    }
+
+    result = g_io_channel_win32_poll(pollfd, len, timeout);
+    for (i = 0; i < len; ++i) {
+        pyfd = PyList_GET_ITEM(pyfds, i);
+        ((PyGPollFD *) pyfd)->pollfd = pollfd[i];
+    }
+    return PYGLIB_PyLong_FromLong(result);
+}
+
+static PyObject *
+py_io_channel_win32_make_pollfd(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "condition", NULL };
+    int condition;
+    GPollFD pollfd;
+    PyGPollFD *pypollfd;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "i:gi._glib.IOChannel.win32_make_pollfd",
+                                     kwlist, &condition))
+        return NULL;
+
+    g_io_channel_win32_make_pollfd(((PyGIOChannel *) self)->channel,
+                                   condition, &pollfd);
+    pypollfd = PyObject_NEW(PyGPollFD, &PyGPollFD_Type);
+    pypollfd->pollfd = pollfd;
+    return (PyObject *) pypollfd;
+}
+#endif /* def G_OS_WIN32 */
+
+
+static PyObject*
+py_io_channel_read_line(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "size", NULL };
+    PyObject* ret_obj = NULL;
+    gsize length = 0, terminator_pos;
+    gchar *str_return = NULL;
+    GError *error = NULL;
+    gint size_hint = -1;
+    GIOStatus status;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readline", kwlist,
+                                     &size_hint))
+        return NULL;
+
+    status = g_io_channel_read_line(self->channel, &str_return, &length,
+                                    &terminator_pos, &error);
+    if (pyglib_error_check(&error))
+        return NULL;
+    ret_obj = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
+    g_free(str_return);
+    return ret_obj;
+}
+
+static PyObject*
+py_io_channel_read_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "size", NULL };
+    PyObject *line = NULL;
+    gsize length = 0, terminator_pos;
+    gchar *str_return = NULL;
+    GError *error = NULL;
+    gint size_hint = -1;
+    GIOStatus status = G_IO_STATUS_NORMAL;
+    PyObject *list;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readlines", kwlist,
+                                     &size_hint))
+        return NULL;
+
+    list = PyList_New(0);
+    while (status == G_IO_STATUS_NORMAL) {
+        status = g_io_channel_read_line(self->channel, &str_return, &length,
+                                        &terminator_pos, &error);
+        if (pyglib_error_check(&error)) {
+            Py_DECREF(line);
+            return NULL;
+        }
+        line = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
+        g_free(str_return);
+        if (PyList_Append(list, line)) {
+            Py_DECREF(line);
+            Py_DECREF(list);
+            return NULL;
+        }
+    }
+    return list;
+}
+
+
+static PyObject*
+py_io_channel_seek(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "offset", "whence", NULL };
+    gint64 offset;
+    int whence = 0;
+    GIOStatus status;
+    GSeekType seek_type;
+    GError* error = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L|i:gi._glib.IOChannel.seek",
+                                     kwlist, &offset, &whence))
+        return NULL;
+
+    switch (whence)
+    {
+    case 0: seek_type = G_SEEK_SET; break;
+    case 1: seek_type = G_SEEK_CUR; break;
+    case 2: seek_type = G_SEEK_END; break;
+    default:
+        PyErr_SetString(PyExc_ValueError, "invalid 'whence' value");
+        return NULL;
+    }
+       
+    status = g_io_channel_seek_position(self->channel, offset,
+                                        seek_type, &error);
+    if (pyglib_error_check(&error))
+       return NULL;
+       
+    return PYGLIB_PyLong_FromLong(status);
+}
+
+#if 0 // Not wrapped
+void                  g_io_channel_set_line_term        (GIOChannel   *channel,
+                                                        const gchar  *line_term,
+                                                        gint          length);
+
+G_CONST_RETURN gchar* g_io_channel_get_line_term        (GIOChannel   *channel,
+                                                        gint         *length);
+
+
+
+GIOStatus   g_io_channel_read_line_string (GIOChannel   *channel,
+                                          GString      *buffer,
+                                          gsize        *terminator_pos,
+                                          GError      **error);
+GIOStatus   g_io_channel_read_to_end      (GIOChannel   *channel,
+                                          gchar       **str_return,
+                                          gsize        *length,
+                                          GError      **error);
+GIOStatus   g_io_channel_read_unichar     (GIOChannel   *channel,
+                                          gunichar     *thechar,
+                                          GError      **error);
+GIOStatus   g_io_channel_write_unichar    (GIOChannel   *channel,
+                                          gunichar      thechar,
+                                          GError      **error);
+#endif // Not wrapped
+
+static PyMemberDef py_io_channel_members[] = {
+    { "softspace", T_INT, offsetof(PyGIOChannel, softspace), 0, NULL },
+    { NULL, 0, 0, 0, NULL }
+};
+
+static PyMethodDef py_io_channel_methods[] = {
+    { "close", (PyCFunction)py_io_channel_shutdown, METH_VARARGS|METH_KEYWORDS },
+    { "flush", (PyCFunction)py_io_channel_flush, METH_NOARGS },
+    { "set_encoding", (PyCFunction)py_io_channel_set_encoding, METH_VARARGS|METH_KEYWORDS },
+    { "get_encoding", (PyCFunction)py_io_channel_get_encoding, METH_NOARGS },
+    { "set_buffered", (PyCFunction)py_io_channel_set_buffered, METH_VARARGS|METH_KEYWORDS },
+    { "get_buffered", (PyCFunction)py_io_channel_get_buffered, METH_NOARGS },
+    { "set_buffer_size", (PyCFunction)py_io_channel_set_buffer_size, METH_VARARGS|METH_KEYWORDS },
+    { "get_buffer_size", (PyCFunction)py_io_channel_get_buffer_size, METH_NOARGS },
+    { "read", (PyCFunction)py_io_channel_read_chars, METH_VARARGS|METH_KEYWORDS },
+    { "readline", (PyCFunction)py_io_channel_read_line, METH_VARARGS|METH_KEYWORDS },
+    { "readlines", (PyCFunction)py_io_channel_read_lines, METH_VARARGS|METH_KEYWORDS },
+    { "write", (PyCFunction)py_io_channel_write_chars, METH_VARARGS|METH_KEYWORDS },
+    { "writelines", (PyCFunction)py_io_channel_write_lines, METH_VARARGS|METH_KEYWORDS },
+    { "set_flags", (PyCFunction)py_io_channel_set_flags, METH_VARARGS|METH_KEYWORDS },
+    { "get_flags", (PyCFunction)py_io_channel_get_flags, METH_NOARGS },
+    { "get_buffer_condition", (PyCFunction)py_io_channel_get_buffer_condition, METH_NOARGS },
+    { "set_close_on_unref", (PyCFunction)py_io_channel_set_close_on_unref, METH_VARARGS | METH_KEYWORDS },
+    { "get_close_on_unref", (PyCFunction)py_io_channel_get_close_on_unref, METH_NOARGS },
+    { "add_watch", (PyCFunction)py_io_channel_add_watch, METH_VARARGS|METH_KEYWORDS },
+    { "seek", (PyCFunction)py_io_channel_seek, METH_VARARGS|METH_KEYWORDS },
+#ifdef G_OS_WIN32
+    { "win32_make_pollfd", (PyCFunction)py_io_channel_win32_make_pollfd, METH_VARARGS | METH_KEYWORDS },
+    { "win32_poll", (PyCFunction)py_io_channel_win32_poll, METH_VARARGS|METH_KEYWORDS|METH_STATIC },
+#endif
+    { NULL, NULL, 0 }
+};
+
+
+static int
+py_io_channel_init(PyGIOChannel *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "filedes", "filename", "mode",
+#ifdef G_OS_WIN32
+                              "hwnd",
+#endif
+                              NULL };
+    int fd = -1;
+    char *mode = "r", *filename = NULL;
+    GError *error = NULL;
+#ifdef G_OS_WIN32
+    guint hwnd = 0;
+#endif
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iss"
+#ifdef G_OS_WIN32
+                                     "I"
+#endif
+                                     ":gi._glib.IOChannel.__init__",
+                                     kwlist, &fd, &filename, &mode
+#ifdef G_OS_WIN32
+                                     , &hwnd
+#endif
+            ))
+        return -1;
+
+    if (fd != -1)
+        self->channel = g_io_channel_unix_new(fd);
+    else if (filename != NULL) {
+        self->channel = g_io_channel_new_file(filename, mode, &error);
+        if (pyglib_error_check(&error))
+            return -1;
+    }
+#ifdef G_OS_WIN32
+    else if (hwnd != 0) {
+        self->channel = g_io_channel_win32_new_messages(hwnd);
+    }
+#endif
+    else {
+#ifdef G_OS_WIN32
+        PyErr_SetString(PyExc_TypeError, "either a valid file descriptor, "
+                        "file name, or window handle must be supplied");
+#else
+        PyErr_SetString(PyExc_TypeError, "either a valid file descriptor "
+                        "or file name must be supplied");
+#endif
+        return -1;
+    }
+    return 0;
+}
+
+void
+pyglib_iochannel_register_types(PyObject *d)
+{
+    PyGIOChannel_Type.tp_init = (initproc)py_io_channel_init;
+    PyGIOChannel_Type.tp_dealloc = (destructor)py_io_channel_dealloc;
+    PyGIOChannel_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGIOChannel_Type.tp_members = py_io_channel_members;
+    PyGIOChannel_Type.tp_methods = py_io_channel_methods;
+    PyGIOChannel_Type.tp_hash = (hashfunc)py_io_channel_hash;
+    PyGIOChannel_Type.tp_richcompare = (richcmpfunc)py_io_channel_richcompare;
+    PyGIOChannel_Type.tp_iter = (getiterfunc)py_io_channel_get_iter;
+    PyGIOChannel_Type.tp_iternext = (iternextfunc)py_io_channel_next;
+
+    PYGLIB_REGISTER_TYPE(d, PyGIOChannel_Type, "IOChannel");
+}
diff --git a/gi/_glib/pygiochannel.h b/gi/_glib/pygiochannel.h
new file mode 100644 (file)
index 0000000..9b03edd
--- /dev/null
@@ -0,0 +1,29 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYG_IOCHANNEL_H__
+#define __PYG_IOCHANNEL_H__
+
+extern PyTypeObject PyGIOChannel_Type;
+
+void pyglib_iochannel_register_types(PyObject *d);
+
+#endif /* __PYG_IOCHANNEL_H__ */
diff --git a/gi/_glib/pyglib-private.h b/gi/_glib/pyglib-private.h
new file mode 100644 (file)
index 0000000..183184f
--- /dev/null
@@ -0,0 +1,49 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGLIB_PRIVATE_H__
+#define __PYGLIB_PRIVATE_H__
+
+#include <Python.h>
+#include <glib.h>
+
+#include <pyglib-python-compat.h>
+
+G_BEGIN_DECLS
+
+struct _PyGLib_Functions {
+    gboolean threads_enabled;
+    PyObject *gerror_exception;
+    PyGLibThreadBlockFunc block_threads;
+    PyGLibThreadBlockFunc unblock_threads;
+    PyObject* (*main_context_new)(GMainContext *context);
+    PyObject* (*option_context_new)(GOptionContext *context);
+    PyObject* (*option_group_new)(GOptionGroup *group);
+};
+
+gboolean _pyglib_handler_marshal(gpointer user_data);
+void _pyglib_destroy_notify(gpointer user_data);
+
+G_END_DECLS
+
+#endif /* __PYGLIB_PRIVATE_H__ */
+
+
similarity index 68%
rename from gi/pyglib-python-compat.h
rename to gi/_glib/pyglib-python-compat.h
index d6f7553..8c1dd51 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGLIB_PYTHON_COMPAT_H__
 #define __PYGLIB_PYTHON_COMPAT_H__
 
+/* Python 2.3 does not define Py_CLEAR */
+#ifndef Py_CLEAR
+#define Py_CLEAR(op)                \
+        do {                                \
+                if (op) {           \
+                        PyObject *tmp = (PyObject *)(op);   \
+                        (op) = NULL;        \
+                        Py_DECREF(tmp);     \
+                }               \
+        } while (0)
+#endif
+
+/* Compilation on Python 2.4 */
+#if PY_VERSION_HEX < 0x02050000
+typedef int Py_ssize_t;
+#define PY_SSIZE_T_MAX INT_MAX
+#define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+#endif
+
+/* PyCObject superceded by PyCapsule on Python >= 2.7
+ * However since this effects header files used by
+ * static bindings we are only applying the change to
+ * Python 3.x where we don't support the static bindings.
+ * 3.2 removed PyCObject so we don't have any choice here.
+ *
+ * There is talk upstream of undeprecating PyCObject
+ * (at least where the 2.x branch is concerned)
+ * and there is no danger of it being remove from 2.7.
+ **/
+#if PY_VERSION_HEX >= 0x03000000
 # define PYGLIB_CPointer_Check PyCapsule_CheckExact
 # define PYGLIB_CPointer_WrapPointer(ptr, typename) \
     PyCapsule_New(ptr, typename, NULL)
     PyCapsule_GetPointer(obj, typename)
 # define PYGLIB_CPointer_Import(module, symbol) \
     PyCapsule_Import(##module##.##symbol##, FALSE)
+#else
+# define PYGLIB_CPointer_Check PyCObject_Check
+# define PYGLIB_CPointer_WrapPointer(ptr, typename) \
+    PyCObject_FromVoidPtr(ptr, NULL)
+# define PYGLIB_CPointer_GetPointer(obj, typename) \
+  PyCObject_AsVoidPtr(obj)
+# define PYGLIB_CPointer_Import(module, symbol) \
+    PyCObject_Import(module, symbol)
+#endif
 
+#if PY_VERSION_HEX < 0x03000000
+
+#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
+static int _pyglib_init_##modname(PyObject *module); \
+void init##modname(void) \
+{ \
+    PyObject *module = Py_InitModule(fullpkgname, functions); \
+    _pyglib_init_##modname(module); \
+} \
+static int _pyglib_init_##modname(PyObject *module)
+
+#else
+
+#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
+static struct PyModuleDef _##modname##module = {     \
+    PyModuleDef_HEAD_INIT,                              \
+    fullpkgname,                                        \
+    NULL,                                               \
+    -1,                                                 \
+    functions,                                          \
+    NULL,                                               \
+    NULL,                                               \
+    NULL,                                               \
+    NULL                                                \
+};                                                      \
+static int _pyglib_init_##modname(PyObject *module); \
+PyObject *PyInit_##modname(void) \
+{ \
+    PyObject *module = PyModule_Create(&_##modname##module);  \
+    if (module == NULL) \
+       return NULL; \
+    if (_pyglib_init_##modname(module) != 0 ) {\
+       Py_DECREF(module); \
+       return NULL; \
+    } \
+    return module; \
+} \
+static int _pyglib_init_##modname(PyObject *module)
 
-#define PYGLIB_MODULE_ERROR_RETURN NULL
+#endif
 
 /* Compilation on Python 2.x */
 #if PY_VERSION_HEX < 0x03000000
+#define PYGLIB_MODULE_ERROR_RETURN
 
 #define RO READONLY
 
 #define PYGLIB_PyUnicode_AS_STRING PyString_AS_STRING
 #define PYGLIB_PyUnicode_GET_SIZE PyString_GET_SIZE
 #define PYGLIB_PyUnicode_Type PyString_Type
-#define PYGLIB_PyUnicode_InternFromString PyString_InternFromString
-#define PYGLIB_PyUnicode_InternInPlace PyString_InternInPlace
-#define PYGLIB_PyUnicode_Format PyString_Format
 
 #define PYGLIB_PyBytes_FromString PyString_FromString
 #define PYGLIB_PyBytes_FromStringAndSize PyString_FromStringAndSize
 #define PYGLIB_PyBytes_Resize _PyString_Resize
 #define PYGLIB_PyBytes_AsString PyString_AsString
-#define PYGLIB_PyBytes_AsStringAndSize PyString_AsStringAndSize
 #define PYGLIB_PyBytes_Size PyString_Size
 #define PYGLIB_PyBytes_Check PyString_Check
 
 #define PYGLIB_PyLong_FromSsize_t PyInt_FromSsize_t
 #define PYGLIB_PyLong_FromSize_t PyInt_FromSize_t
 #define PYGLIB_PyLong_AsLong  PyInt_AsLong
-#define PYGLIB_PyLong_AsSsize_t  PyInt_AsSsize_t
 #define PYGLIB_PyLongObject PyIntObject
 #define PYGLIB_PyLong_Type PyInt_Type
 #define PYGLIB_PyLong_AS_LONG PyInt_AS_LONG
 #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
 
-#define PYGLIB_Py_hash_t long
-
-/* Python 2.7 lacks a PyInt_FromUnsignedLong function; use signed longs, and
- * rely on PyInt_AsUnsignedLong() to interpret them correctly */
-#define PYGLIB_PyLong_FromUnsignedLong PyInt_FromLong
-#define PYGLIB_PyLong_AsUnsignedLong(o) PyInt_AsUnsignedLongMask((PyObject*)(o))
-
 #define PYGLIB_PyNumber_Long PyNumber_Int
 
 #ifndef PyVarObject_HEAD_INIT
 #endif
 
 #define PYGLIB_MODULE_START(symbol, modname)           \
-PyObject * pyglib_##symbol##_module_create(void);       \
-DL_EXPORT(void) init##symbol(void);                     \
-DL_EXPORT(void) init##symbol(void) {                    \
-    pyglib_##symbol##_module_create();                  \
-};                                                      \
-PyObject * pyglib_##symbol##_module_create(void)        \
+DL_EXPORT(void) init##symbol(void)                     \
 {                                                       \
     PyObject *module;                                   \
     module = Py_InitModule(modname, symbol##_functions);
-
-#define PYGLIB_MODULE_END return module; }
-
+#define PYGLIB_MODULE_END }
 #define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol)  \
 PyTypeObject symbol = {                                 \
     PyObject_HEAD_INIT(NULL)                            \
@@ -105,7 +167,6 @@ PyTypeObject symbol = {                                 \
     sizeof(csymbol),                                    \
     0,                                                  \
 };
-
 #define PYGLIB_REGISTER_TYPE(d, type, name)            \
     if (!type.tp_alloc)                                 \
        type.tp_alloc = PyType_GenericAlloc;            \
@@ -117,6 +178,8 @@ PyTypeObject symbol = {                                 \
 
 #else
 
+#define PYGLIB_MODULE_ERROR_RETURN 0
+
 #define PYGLIB_MODULE_START(symbol, modname)           \
     static struct PyModuleDef _##symbol##module = {     \
     PyModuleDef_HEAD_INIT,                              \
@@ -129,25 +192,17 @@ PyTypeObject symbol = {                                 \
     NULL,                                               \
     NULL                                                \
 };                                                      \
-PyObject * pyglib_##symbol##_module_create(void);       \
-PyMODINIT_FUNC PyInit_##symbol(void);                   \
-PyMODINIT_FUNC PyInit_##symbol(void) {                  \
-    return pyglib_##symbol##_module_create();           \
-};                                                      \
-PyObject * pyglib_##symbol##_module_create(void)        \
+PyMODINIT_FUNC PyInit_##symbol(void)                    \
 {                                                       \
     PyObject *module;                                   \
     module = PyModule_Create(&_##symbol##module);
-
 #define PYGLIB_MODULE_END return module; }
-
 #define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol)  \
 PyTypeObject symbol = {                                 \
     PyVarObject_HEAD_INIT(NULL, 0)                      \
     typename,                                           \
     sizeof(csymbol)                                     \
 };
-
 #define PYGLIB_REGISTER_TYPE(d, type, name)                \
     if (!type.tp_alloc)                                 \
            type.tp_alloc = PyType_GenericAlloc;            \
@@ -169,37 +224,22 @@ PyTypeObject symbol = {                                 \
 #define PYGLIB_PyUnicode_GET_SIZE PyUnicode_GET_SIZE
 #define PYGLIB_PyUnicode_Resize PyUnicode_Resize
 #define PYGLIB_PyUnicode_Type PyUnicode_Type
-#define PYGLIB_PyUnicode_InternFromString PyUnicode_InternFromString
-#define PYGLIB_PyUnicode_InternInPlace PyUnicode_InternInPlace
-#define PYGLIB_PyUnicode_Format PyUnicode_Format
-
 #define PYGLIB_PyLong_Check PyLong_Check
 #define PYGLIB_PyLong_FromLong PyLong_FromLong
-#define PYGLIB_PyLong_FromSsize_t PyLong_FromSsize_t
-#define PYGLIB_PyLong_FromSize_t PyLong_FromSize_t
 #define PYGLIB_PyLong_AsLong PyLong_AsLong
-#define PYGLIB_PyLong_AsSsize_t PyLong_AsSsize_t
 #define PYGLIB_PyLong_AS_LONG(o) PyLong_AS_LONG((PyObject*)(o))
 #define PYGLIB_PyLongObject PyLongObject
 #define PYGLIB_PyLong_Type PyLong_Type
 
-#define PYGLIB_PyLong_FromUnsignedLong PyLong_FromUnsignedLong
-#define PYGLIB_PyLong_AsUnsignedLong(o) PyLong_AsUnsignedLongMask((PyObject*)(o))
-
 #define PYGLIB_PyBytes_FromString PyBytes_FromString
 #define PYGLIB_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
 #define PYGLIB_PyBytes_Resize(o, len) _PyBytes_Resize(o, len)
 #define PYGLIB_PyBytes_AsString PyBytes_AsString
-#define PYGLIB_PyBytes_AsStringAndSize PyBytes_AsStringAndSize
 #define PYGLIB_PyBytes_Size PyBytes_Size
 #define PYGLIB_PyBytes_Check PyBytes_Check
 
 #define PYGLIB_PyNumber_Long PyNumber_Long
 
-#define PYGLIB_Py_hash_t Py_hash_t
-
 #endif
 
-#define PYGLIB_Py_hash_t_FromVoidPtr(ptr) ((PYGLIB_Py_hash_t)(gintptr)(ptr))
-
 #endif /* __PYGLIB_PYTHON_COMPAT_H__ */
diff --git a/gi/_glib/pyglib.c b/gi/_glib/pyglib.c
new file mode 100644 (file)
index 0000000..a077779
--- /dev/null
@@ -0,0 +1,659 @@
+/* -*- Mode: C; c-set-style: python; c-basic-offset: 4  -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <Python.h>
+#include <pythread.h>
+#include "pyglib.h"
+#include "pyglib-private.h"
+#include "pygmaincontext.h"
+#include "pygoptioncontext.h"
+#include "pygoptiongroup.h"
+
+static struct _PyGLib_Functions *_PyGLib_API;
+static int pyglib_thread_state_tls_key;
+static PyObject *exception_table = NULL;
+
+void
+pyglib_init(void)
+{
+    PyObject *glib, *cobject;
+    
+    glib = PyImport_ImportModule("gi._glib");
+    if (!glib) {
+       if (PyErr_Occurred()) {
+           PyObject *type, *value, *traceback;
+           PyObject *py_orig_exc;
+           PyErr_Fetch(&type, &value, &traceback);
+           py_orig_exc = PyObject_Repr(value);
+           Py_XDECREF(type);
+           Py_XDECREF(value);
+           Py_XDECREF(traceback);
+           PyErr_Format(PyExc_ImportError,
+                        "could not import gi._glib (error was: %s)",
+                        PYGLIB_PyUnicode_AsString(py_orig_exc));
+           Py_DECREF(py_orig_exc);
+        } else {
+           PyErr_SetString(PyExc_ImportError,
+                           "could not import gi._glib (no error given)");
+       }
+       return;
+    }
+    
+    cobject = PyObject_GetAttrString(glib, "_PyGLib_API");
+    if (cobject && PYGLIB_CPointer_Check(cobject))
+       _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(cobject, "gi._glib._PyGLib_API");
+    else {
+       PyErr_SetString(PyExc_ImportError,
+                       "could not import gi._glib (could not find _PyGLib_API object)");
+       Py_DECREF(glib);
+       return;
+    }
+}
+
+void
+pyglib_init_internal(PyObject *api)
+{
+    _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(api, "gi._glib._PyGLib_API");
+}
+
+gboolean
+pyglib_threads_enabled(void)
+{
+    g_return_val_if_fail (_PyGLib_API != NULL, FALSE);
+
+    return _PyGLib_API->threads_enabled;
+}
+
+PyGILState_STATE
+pyglib_gil_state_ensure(void)
+{
+    g_return_val_if_fail (_PyGLib_API != NULL, PyGILState_LOCKED);
+
+    if (!_PyGLib_API->threads_enabled)
+       return PyGILState_LOCKED;
+
+#ifdef DISABLE_THREADING
+    return PyGILState_LOCKED;
+#else
+    return PyGILState_Ensure();
+#endif
+}
+
+void
+pyglib_gil_state_release(PyGILState_STATE state)
+{
+    g_return_if_fail (_PyGLib_API != NULL);
+
+    if (!_PyGLib_API->threads_enabled)
+       return;
+
+#ifndef DISABLE_THREADING
+    PyGILState_Release(state);
+#endif
+}
+
+/**
+ * pyglib_enable_threads:
+ *
+ * Returns: TRUE if threading is enabled, FALSE otherwise.
+ *
+ */
+#ifdef DISABLE_THREADING
+gboolean
+pyglib_enable_threads(void)
+{
+    PyErr_SetString(PyExc_RuntimeError,
+                   "pyglib threading disabled at compile time");
+    return FALSE;
+}
+
+void
+_pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback)
+{
+    /* Ignore, threads cannot be enabled. */
+}
+
+#else
+
+static GSList *thread_enabling_callbacks = NULL;
+
+/* Enable threading; note that the GIL must be held by the current
+ * thread when this function is called
+ */
+gboolean
+pyglib_enable_threads(void)
+{
+    GSList *callback;
+
+    g_return_val_if_fail (_PyGLib_API != NULL, FALSE);
+
+    if (_PyGLib_API->threads_enabled)
+       return TRUE;
+  
+    PyEval_InitThreads();
+    _PyGLib_API->threads_enabled = TRUE;
+    pyglib_thread_state_tls_key = PyThread_create_key();
+
+    for (callback = thread_enabling_callbacks; callback; callback = callback->next)
+       ((PyGLibThreadsEnabledFunc) callback->data) ();
+
+    g_slist_free(thread_enabling_callbacks);
+    return TRUE;
+}
+
+void
+_pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback)
+{
+    if (callback && !pyglib_threads_enabled())
+       thread_enabling_callbacks = g_slist_append(thread_enabling_callbacks, callback);
+}
+#endif
+
+int
+pyglib_gil_state_ensure_py23 (void)
+{
+#ifdef DISABLE_THREADING
+    return 0;
+#else
+    return PyGILState_Ensure();
+#endif
+}
+
+void
+pyglib_gil_state_release_py23 (int flag)
+{
+#ifndef DISABLE_THREADING
+    PyGILState_Release(flag);
+#endif
+}
+
+/**
+ * pyglib_block_threads:
+ *
+ */
+void
+pyglib_block_threads(void)
+{
+    g_return_if_fail (_PyGLib_API != NULL);
+
+    if (_PyGLib_API->block_threads != NULL)
+       (* _PyGLib_API->block_threads)();
+}
+
+/**
+ * pyglib_unblock_threads:
+ *
+ */
+void
+pyglib_unblock_threads(void)
+{
+    g_return_if_fail (_PyGLib_API != NULL);
+    if (_PyGLib_API->unblock_threads != NULL)
+       (* _PyGLib_API->unblock_threads)();
+}
+
+/**
+ * pyglib_set_thread_block_funcs:
+ *
+ * hooks to register handlers for getting GDK threads to cooperate
+ * with python threading
+ */
+void
+pyglib_set_thread_block_funcs (PyGLibThreadBlockFunc block_threads_func,
+                              PyGLibThreadBlockFunc unblock_threads_func)
+{
+    g_return_if_fail (_PyGLib_API != NULL);
+
+    _PyGLib_API->block_threads = block_threads_func;
+    _PyGLib_API->unblock_threads = unblock_threads_func;
+}
+
+/**
+ * pyglib_error_marshal:
+ * @error: a pointer to the GError.
+ *
+ * Checks to see if @error has been set.  If @error has been set, then a
+ * GLib.GError Python exception object is returned (but not raised).
+ *
+ * Returns: a GLib.GError Python exception object, or NULL.
+ */
+PyObject *
+pyglib_error_marshal (GError **error)
+{
+    PyGILState_STATE state;
+    PyObject *exc_type;
+    PyObject *exc_instance;
+    PyObject *d;
+
+    g_return_val_if_fail(error != NULL, NULL);
+
+    if (*error == NULL)
+       return NULL;
+
+    state = pyglib_gil_state_ensure();
+
+    exc_type = _PyGLib_API->gerror_exception;
+    if (exception_table != NULL)
+    {
+       PyObject *item;
+       item = PyDict_GetItem(exception_table, PYGLIB_PyLong_FromLong((*error)->domain));
+       if (item != NULL)
+           exc_type = item;
+    }
+
+    exc_instance = PyObject_CallFunction(exc_type, "z", (*error)->message);
+
+    if ((*error)->domain) {
+       PyObject_SetAttrString(exc_instance, "domain",
+                              d=PYGLIB_PyUnicode_FromString(g_quark_to_string((*error)->domain)));
+       Py_DECREF(d);
+    }
+    else
+       PyObject_SetAttrString(exc_instance, "domain", Py_None);
+
+    PyObject_SetAttrString(exc_instance, "code",
+                          d=PYGLIB_PyLong_FromLong((*error)->code));
+    Py_DECREF(d);
+
+    if ((*error)->message) {
+       PyObject_SetAttrString(exc_instance, "message",
+                              d=PYGLIB_PyUnicode_FromString((*error)->message));
+       Py_DECREF(d);
+    } else {
+       PyObject_SetAttrString(exc_instance, "message", Py_None);
+    }
+
+    pyglib_gil_state_release(state);
+    
+    return exc_instance;
+}
+
+/**
+ * pyglib_error_check:
+ * @error: a pointer to the GError.
+ *
+ * Checks to see if the GError has been set.  If the error has been
+ * set, then the glib.GError Python exception will be raised, and
+ * the GError cleared.
+ *
+ * Returns: True if an error was set.
+ */
+gboolean
+pyglib_error_check(GError **error)
+{
+    PyGILState_STATE state;
+    PyObject *exc_instance;
+
+    g_return_val_if_fail(error != NULL, FALSE);
+    if (*error == NULL)
+       return FALSE;
+
+    state = pyglib_gil_state_ensure();
+
+    exc_instance = pyglib_error_marshal (error);
+    PyErr_SetObject(_PyGLib_API->gerror_exception, exc_instance);
+    Py_DECREF(exc_instance);
+    g_clear_error(error);
+    
+    pyglib_gil_state_release(state);
+    
+    return TRUE;
+}
+
+/**
+ * pyglib_gerror_exception_check:
+ * @error: a standard GLib GError ** output parameter
+ *
+ * Checks to see if a GError exception has been raised, and if so
+ * translates the python exception to a standard GLib GError.  If the
+ * raised exception is not a GError then PyErr_Print() is called.
+ *
+ * Returns: 0 if no exception has been raised, -1 if it is a
+ * valid glib.GError, -2 otherwise.
+ */
+gboolean
+pyglib_gerror_exception_check(GError **error)
+{
+    PyObject *type, *value, *traceback;
+    PyObject *py_message, *py_domain, *py_code;
+    const char *bad_gerror_message;
+
+    PyErr_Fetch(&type, &value, &traceback);
+    if (type == NULL)
+        return 0;
+    PyErr_NormalizeException(&type, &value, &traceback);
+    if (value == NULL) {
+        PyErr_Restore(type, value, traceback);
+        PyErr_Print();
+        return -2;
+    }
+    if (!value ||
+       !PyErr_GivenExceptionMatches(type,
+                                    (PyObject *) _PyGLib_API->gerror_exception)) {
+        PyErr_Restore(type, value, traceback);
+        PyErr_Print();
+        return -2;
+    }
+    Py_DECREF(type);
+    Py_XDECREF(traceback);
+
+    py_message = PyObject_GetAttrString(value, "message");
+    if (!py_message || !PYGLIB_PyUnicode_Check(py_message)) {
+        bad_gerror_message = "gi._glib.GError instances must have a 'message' string attribute";
+        Py_XDECREF(py_message);
+        goto bad_gerror;
+    }
+
+    py_domain = PyObject_GetAttrString(value, "domain");
+    if (!py_domain || !PYGLIB_PyUnicode_Check(py_domain)) {
+        bad_gerror_message = "gi._glib.GError instances must have a 'domain' string attribute";
+        Py_DECREF(py_message);
+        Py_XDECREF(py_domain);
+        goto bad_gerror;
+    }
+
+    py_code = PyObject_GetAttrString(value, "code");
+    if (!py_code || !PYGLIB_PyLong_Check(py_code)) {
+        bad_gerror_message = "gi._glib.GError instances must have a 'code' int attribute";
+        Py_DECREF(py_message);
+        Py_DECREF(py_domain);
+        Py_XDECREF(py_code);
+        goto bad_gerror;
+    }
+
+    g_set_error(error, g_quark_from_string(PYGLIB_PyUnicode_AsString(py_domain)),
+                PYGLIB_PyLong_AsLong(py_code), "%s", PYGLIB_PyUnicode_AsString(py_message));
+
+    Py_DECREF(py_message);
+    Py_DECREF(py_code);
+    Py_DECREF(py_domain);
+    return -1;
+
+bad_gerror:
+    Py_DECREF(value);
+    g_set_error(error, g_quark_from_static_string("pyglib"), 0, "%s", bad_gerror_message);
+    PyErr_SetString(PyExc_ValueError, bad_gerror_message);
+    PyErr_Print();
+    return -2;
+}
+
+/**
+ * pyglib_register_exception_for_domain:
+ * @name: name of the exception
+ * @error_domain: error domain
+ *
+ * Registers a new glib.GError exception subclass called #name for
+ * a specific #domain. This exception will be raised when a GError
+ * of the same domain is passed in to pyglib_error_check().
+ *
+ * Returns: the new exception
+ */
+PyObject *
+pyglib_register_exception_for_domain(gchar *name,
+                                    gint error_domain)
+{
+    PyObject *exception;
+
+    exception = PyErr_NewException(name, _PyGLib_API->gerror_exception, NULL);
+
+    if (exception_table == NULL)
+       exception_table = PyDict_New();
+
+    PyDict_SetItem(exception_table,
+                  PYGLIB_PyLong_FromLong(error_domain),
+                  exception);
+    
+    return exception;
+}
+
+/**
+ * pyglib_main_context_new:
+ * @context: a GMainContext.
+ *
+ * Creates a wrapper for a GMainContext.
+ *
+ * Returns: the GMainContext wrapper.
+ */
+PyObject *
+pyglib_main_context_new(GMainContext *context)
+{
+    return _PyGLib_API->main_context_new(context);
+}
+
+/**
+ * pyg_option_group_transfer_group:
+ * @group: a GOptionGroup wrapper
+ *
+ * This is used to transfer the GOptionGroup to a GOptionContext. After this
+ * is called, the calle must handle the release of the GOptionGroup.
+ *
+ * When #NULL is returned, the GOptionGroup was already transfered.
+ *
+ * Returns: Either #NULL or the wrapped GOptionGroup.
+ */
+GOptionGroup *
+pyglib_option_group_transfer_group(PyObject *obj)
+{
+    PyGOptionGroup *self = (PyGOptionGroup*)obj;
+    
+    if (self->is_in_context)
+       return NULL;
+
+    self->is_in_context = TRUE;
+    
+    /* Here we increase the reference count of the PyGOptionGroup, because now
+     * the GOptionContext holds an reference to us (it is the userdata passed
+     * to g_option_group_new().
+     *
+     * The GOptionGroup is freed with the GOptionContext.
+     *
+     * We set it here because if we would do this in the init method we would
+     * hold two references and the PyGOptionGroup would never be freed.
+     */
+    Py_INCREF(self);
+    
+    return self->group;
+}
+
+/**
+ * pyglib_option_group_new:
+ * @group: a GOptionGroup
+ *
+ * The returned GOptionGroup can't be used to set any hooks, translation domains
+ * or add entries. It's only intend is, to use for GOptionContext.add_group().
+ *
+ * Returns: the GOptionGroup wrapper.
+ */
+PyObject * 
+pyglib_option_group_new (GOptionGroup *group)
+{
+    return _PyGLib_API->option_group_new(group);
+}
+
+/**
+ * pyglib_option_context_new:
+ * @context: a GOptionContext
+ *
+ * Returns: A new GOptionContext wrapper.
+ */
+PyObject * 
+pyglib_option_context_new (GOptionContext *context)
+{
+    return _PyGLib_API->option_context_new(context);
+}
+
+/**
+ * pyglib_option_context_new:
+ * @context: a GTimeVal struct
+ *
+ * Converts a GTimeVal struct to a python float
+ *
+ * Returns: a float representing the timeval
+ */
+PyObject *
+pyglib_float_from_timeval(GTimeVal timeval)
+{
+    double ret;
+    ret = (double)timeval.tv_sec + (double)timeval.tv_usec * 0.000001;
+    return PyFloat_FromDouble(ret);
+}
+
+
+/****** Private *****/
+
+/**
+ * _pyglib_destroy_notify:
+ * @user_data: a PyObject pointer.
+ *
+ * A function that can be used as a GDestroyNotify callback that will
+ * call Py_DECREF on the data.
+ */
+void
+_pyglib_destroy_notify(gpointer user_data)
+{
+    PyObject *obj = (PyObject *)user_data;
+    PyGILState_STATE state;
+
+    g_return_if_fail (_PyGLib_API != NULL);
+
+    state = pyglib_gil_state_ensure();
+    Py_DECREF(obj);
+    pyglib_gil_state_release(state);
+}
+
+gboolean
+_pyglib_handler_marshal(gpointer user_data)
+{
+    PyObject *tuple, *ret;
+    gboolean res;
+    PyGILState_STATE state;
+
+    g_return_val_if_fail(user_data != NULL, FALSE);
+
+    state = pyglib_gil_state_ensure();
+
+    tuple = (PyObject *)user_data;
+    ret = PyObject_CallObject(PyTuple_GetItem(tuple, 0),
+                             PyTuple_GetItem(tuple, 1));
+    if (!ret) {
+       PyErr_Print();
+       res = FALSE;
+    } else {
+       res = PyObject_IsTrue(ret);
+       Py_DECREF(ret);
+    }
+    
+    pyglib_gil_state_release(state);
+
+    return res;
+}
+
+PyObject*
+_pyglib_generic_ptr_richcompare(void* a, void *b, int op)
+{
+    PyObject *res;
+
+    switch (op) {
+
+      case Py_EQ:
+        res = (a == b) ? Py_True : Py_False;
+        break;
+
+      case Py_NE:
+        res = (a != b) ? Py_True : Py_False;
+        break;
+
+      case Py_LT:
+        res = (a < b) ? Py_True : Py_False;
+        break;
+
+      case Py_LE:
+        res = (a <= b) ? Py_True : Py_False;
+        break;
+
+      case Py_GT:
+        res = (a > b) ? Py_True : Py_False;
+        break;
+
+      case Py_GE:
+        res = (a >= b) ? Py_True : Py_False;
+        break;
+
+      default:
+        res = Py_NotImplemented;
+        break;
+    }
+
+    Py_INCREF(res);
+    return res;
+}
+
+PyObject*
+_pyglib_generic_long_richcompare(long a, long b, int op)
+{
+    PyObject *res;
+
+    switch (op) {
+
+      case Py_EQ:
+        res = (a == b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+      case Py_NE:
+        res = (a != b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+
+      case Py_LT:
+        res = (a < b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+      case Py_LE:
+        res = (a <= b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+      case Py_GT:
+        res = (a > b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+      case Py_GE:
+        res = (a >= b) ? Py_True : Py_False;
+        Py_INCREF(res);
+        break;
+
+      default:
+        res = Py_NotImplemented;
+        Py_INCREF(res);
+        break;
+    }
+
+    return res;
+}
+
similarity index 52%
rename from gi/pyglib.h
rename to gi/_glib/pyglib.h
index d390f14..261af7b 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGLIB_H__
 
 #include <glib.h>
 
-#include <pyglib-python-compat.h>
-
 G_BEGIN_DECLS
 
 typedef void (*PyGLibThreadsEnabledFunc) (void);
 typedef void (*PyGLibThreadBlockFunc) (void);
 
+void pyglib_init(void);
+void pyglib_init_internal(PyObject *api);
+PyGILState_STATE pyglib_gil_state_ensure(void);
+void pyglib_gil_state_release(PyGILState_STATE state);
+int pyglib_enable_threads(void);
+gboolean pyglib_error_check(GError **error);
+PyObject *pyglib_error_marshal (GError **error);
+gboolean pyglib_gerror_exception_check(GError **error);
+PyObject *pyglib_register_exception_for_domain(gchar *name,
+                                              gint error_domain);
+gboolean pyglib_threads_enabled(void);
+PyObject * pyglib_main_context_new(GMainContext *context);
+void pyglib_set_thread_block_funcs(PyGLibThreadBlockFunc block_threads_func,
+                                  PyGLibThreadBlockFunc unblock_threads_func);
+void pyglib_block_threads(void);
+void pyglib_unblock_threads(void);
+PyObject * pyglib_option_context_new(GOptionContext *context);
+PyObject * pyglib_option_group_new(GOptionGroup *group);
 GOptionGroup * pyglib_option_group_transfer_group(PyObject *self);
+PyObject * pyglib_float_from_timeval(GTimeVal timeval);
 
 /* Private: for gobject <-> glib interaction only. */
+void _pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback);
 PyObject* _pyglib_generic_ptr_richcompare(void* a, void *b, int op);
 PyObject* _pyglib_generic_long_richcompare(long a, long b, int op);
 
+#define pyglib_begin_allow_threads             \
+    G_STMT_START {                              \
+        PyThreadState *_save = NULL;            \
+        if (pyglib_threads_enabled())          \
+            _save = PyEval_SaveThread();
+
+#define pyglib_end_allow_threads                \
+        if (pyglib_threads_enabled())           \
+            PyEval_RestoreThread(_save);        \
+    } G_STMT_END
 
 #define PYGLIB_REGISTER_TYPE(d, type, name)            \
     if (!type.tp_alloc)                                 \
@@ -47,10 +77,6 @@ PyObject* _pyglib_generic_long_richcompare(long a, long b, int op);
        return;                                         \
     PyDict_SetItemString(d, name, (PyObject *)&type);
 
-gboolean _pyglib_handler_marshal(gpointer user_data);
-void _pyglib_destroy_notify(gpointer user_data);
-
-extern PyObject *pyglib__glib_module_create (void);
 
 G_END_DECLS
 
diff --git a/gi/_glib/pygmaincontext.c b/gi/_glib/pygmaincontext.c
new file mode 100644 (file)
index 0000000..a4282ee
--- /dev/null
@@ -0,0 +1,126 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *
+ *   pygmaincontext.c: GMainContext wrapper
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <Python.h>
+#include <pythread.h>
+#include <glib.h>
+#include "pygmaincontext.h"
+#include "pyglib.h"
+#include "pyglib-private.h"
+
+PYGLIB_DEFINE_TYPE("gi._glib.MainContext", PyGMainContext_Type, PyGMainContext)
+
+/**
+ * pyg_main_context_new:
+ * @context: a GMainContext.
+ *
+ * Creates a wrapper for a GMainContext.
+ *
+ * Returns: the GMainContext wrapper.
+ */
+PyObject *
+pyg_main_context_new(GMainContext *context)
+{
+    PyGMainContext *self;
+
+    self = (PyGMainContext *)PyObject_NEW(PyGMainContext, &PyGMainContext_Type);
+    if (self == NULL)
+        return NULL;
+
+    self->context = g_main_context_ref(context);
+
+    return (PyObject *)self;
+}
+
+static int
+pyg_main_context_init(PyGMainContext *self)
+{
+    self->context = g_main_context_new();
+    return 0;
+}
+
+static void
+pyg_main_context_dealloc(PyGMainContext *self)
+{
+    if (self->context != NULL) {
+       g_main_context_unref(self->context);
+       self->context = NULL;
+    }
+
+    PyObject_Del(self);
+}
+
+static PyObject*
+pyg_main_context_richcompare(PyObject *self, PyObject *other, int op)
+{
+    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGMainContext_Type)
+        return _pyglib_generic_ptr_richcompare(((PyGMainContext*)self)->context,
+                                               ((PyGMainContext*)other)->context,
+                                               op);
+    else {
+        Py_INCREF(Py_NotImplemented);
+        return Py_NotImplemented;
+    }
+}
+
+static PyObject *
+_wrap_g_main_context_iteration (PyGMainContext *self, PyObject *args)
+{
+    gboolean ret, may_block = TRUE;
+    
+    if (!PyArg_ParseTuple(args, "|i:GMainContext.iteration",
+                         &may_block))
+       return NULL;
+
+    pyglib_begin_allow_threads;
+    ret = g_main_context_iteration(self->context, may_block);
+    pyglib_end_allow_threads;
+    
+    return PyBool_FromLong(ret);
+}
+
+static PyObject *
+_wrap_g_main_context_pending (PyGMainContext *self)
+{
+    return PyBool_FromLong(g_main_context_pending(self->context));
+}
+
+static PyMethodDef _PyGMainContext_methods[] = {
+    { "iteration", (PyCFunction)_wrap_g_main_context_iteration, METH_VARARGS },
+    { "pending", (PyCFunction)_wrap_g_main_context_pending, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+void
+pyglib_maincontext_register_types(PyObject *d)
+{
+    PyGMainContext_Type.tp_dealloc = (destructor)pyg_main_context_dealloc;
+    PyGMainContext_Type.tp_richcompare = pyg_main_context_richcompare;
+    PyGMainContext_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
+    PyGMainContext_Type.tp_methods = _PyGMainContext_methods;
+    PyGMainContext_Type.tp_init = (initproc)pyg_main_context_init;
+    PYGLIB_REGISTER_TYPE(d, PyGMainContext_Type, "MainContext"); 
+}
diff --git a/gi/_glib/pygmaincontext.h b/gi/_glib/pygmaincontext.h
new file mode 100644 (file)
index 0000000..4ffa3c9
--- /dev/null
@@ -0,0 +1,40 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYG_MAINCONTEXT_H__
+#define __PYG_MAINCONTEXT_H__
+
+#include <Python.h>
+#include <glib.h>
+
+typedef struct {
+    PyObject_HEAD
+    GMainContext *context;
+} PyGMainContext;
+
+extern PyTypeObject PyGMainContext_Type;
+
+PyObject* pyg_main_context_new(GMainContext *context);
+
+void pyglib_maincontext_register_types(PyObject *d);
+
+#endif /* __PYG_MAINCONTEXT_H__ */
+
diff --git a/gi/_glib/pygmainloop.c b/gi/_glib/pygmainloop.c
new file mode 100644 (file)
index 0000000..5dabef6
--- /dev/null
@@ -0,0 +1,362 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ * Copyright (C) 2004       Johan Dahlin
+ *
+ *   pygmainloop.c: GMainLoop wrapper
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+#include <fcntl.h>
+
+#include <Python.h>
+#include <pythread.h>
+#include <glib.h>
+
+#include "pygmainloop.h"
+#include "pygmaincontext.h"
+#include "pyglib.h"
+#include "pyglib-private.h"
+
+static int pipe_fds[2];
+
+typedef struct {
+    GSource source;
+    GPollFD fd;
+} PySignalWatchSource;
+
+#ifdef DISABLE_THREADING
+static GMainLoop *pyg_current_main_loop = NULL;;
+
+static inline GMainLoop *
+pyg_save_current_main_loop (GMainLoop *main_loop)
+{
+    GMainLoop *retval = pyg_current_main_loop;
+
+    g_return_val_if_fail(main_loop != NULL, NULL);
+
+    pyg_current_main_loop = g_main_loop_ref(main_loop);
+
+    return retval;
+}
+
+static inline void
+pyg_restore_current_main_loop (GMainLoop *main_loop)
+{
+    if (pyg_current_main_loop != NULL)
+       g_main_loop_unref(pyg_current_main_loop);
+    pyg_current_main_loop = main_loop;
+}
+
+static inline GMainLoop *
+pyg_get_current_main_loop (void)
+{
+    return pyg_current_main_loop;
+}
+#else /* !defined(#ifndef DISABLE_THREADING) */
+
+static int pyg_current_main_loop_key = -1;
+
+static inline GMainLoop *
+pyg_save_current_main_loop (GMainLoop *main_loop)
+{
+    GMainLoop *retval;
+
+    g_return_val_if_fail(main_loop != NULL, NULL);
+
+    if (pyg_current_main_loop_key == -1)
+       pyg_current_main_loop_key = PyThread_create_key();
+
+    retval = PyThread_get_key_value(pyg_current_main_loop_key);
+    PyThread_delete_key_value(pyg_current_main_loop_key);
+    PyThread_set_key_value(pyg_current_main_loop_key, 
+                          g_main_loop_ref(main_loop));
+
+    return retval;
+}
+
+static inline void
+pyg_restore_current_main_loop (GMainLoop *main_loop)
+{
+    GMainLoop *prev;
+
+    g_return_if_fail (pyg_current_main_loop_key != -1);
+
+    prev = PyThread_get_key_value(pyg_current_main_loop_key);
+    if (prev != NULL)
+       g_main_loop_unref(prev);
+    PyThread_delete_key_value(pyg_current_main_loop_key);
+    if (main_loop != NULL)
+       PyThread_set_key_value(pyg_current_main_loop_key, main_loop);
+}
+
+static inline GMainLoop *
+pyg_get_current_main_loop (void)
+{
+    if (pyg_current_main_loop_key == -1)
+       return NULL;
+    return PyThread_get_key_value(pyg_current_main_loop_key);
+}
+#endif /* DISABLE_THREADING */
+
+static gboolean
+pyg_signal_watch_prepare(GSource *source,
+                        int     *timeout)
+{
+    /* Python only invokes signal handlers from the main thread,
+     * so if a thread other than the main thread receives the signal
+     * from the kernel, PyErr_CheckSignals() from that thread will
+     * do nothing.
+     */
+
+#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
+    return FALSE;
+#else /* !HAVE_PYSIGNAL_SETWAKEUPFD */
+    /* On Windows g_poll() won't be interrupted by a signal
+     * (AFAIK), so we need the timeout there too, even if there's
+     * only one thread.
+     */
+#ifndef PLATFORM_WIN32
+    if (!pyglib_threads_enabled())
+       return FALSE;
+#endif /* PLATFORM_WIN32 */
+
+    /* If we're using 2.5 or an earlier version of python we
+     * will default to a timeout every second, be aware,
+     * this will cause unnecessary wakeups, see
+     * http://bugzilla.gnome.org/show_bug.cgi?id=481569
+     */
+    *timeout = 1000;
+    return FALSE;
+#endif /* HAVE_PYSIGNAL_SETWAKEUPFD */
+}
+
+static gboolean
+pyg_signal_watch_check(GSource *source)
+{
+    PyGILState_STATE state;
+    GMainLoop *main_loop;
+
+#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
+    PySignalWatchSource *real_source = (PySignalWatchSource *)source;
+    GPollFD *poll_fd = &real_source->fd;
+    unsigned char dummy;
+    if (poll_fd->revents & G_IO_IN)
+        (void) read(poll_fd->fd, &dummy, 1);
+#endif
+
+    state = pyglib_gil_state_ensure();
+
+    main_loop = pyg_get_current_main_loop();
+
+    if (PyErr_CheckSignals() == -1 && main_loop != NULL) {
+       PyErr_SetNone(PyExc_KeyboardInterrupt);
+       g_main_loop_quit(main_loop);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return FALSE;
+}
+
+static gboolean
+pyg_signal_watch_dispatch(GSource     *source,
+                         GSourceFunc  callback,
+                         gpointer     user_data)
+{
+    /* We should never be dispatched */
+    g_assert_not_reached();
+    return TRUE;
+}
+
+static GSourceFuncs pyg_signal_watch_funcs =
+{
+    pyg_signal_watch_prepare,
+    pyg_signal_watch_check,
+    pyg_signal_watch_dispatch
+};
+
+static GSource *
+pyg_signal_watch_new(void)
+{
+    GSource *source = g_source_new(&pyg_signal_watch_funcs,
+       sizeof(PySignalWatchSource));
+
+#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
+    PySignalWatchSource *real_source = (PySignalWatchSource *)source;
+    int flag;
+
+    /* Unfortunately we need to create a new pipe here instead of
+     * reusing the pipe inside the GMainContext.
+     * Ideally an api should be added to GMainContext which allows us
+     * to reuse that pipe which would suit us perfectly fine.
+     * XXX More efficient than a pipe, we could use an eventfd on Linux
+     * kernels that support it.
+     */
+    gint already_piped = (pipe_fds[0] > 0);
+    if (!already_piped) {
+       if (pipe(pipe_fds) < 0)
+           g_error("Cannot create main loop pipe: %s\n",
+                   g_strerror(errno));
+
+        /* Make both ends of the fd non blocking */
+        flag = fcntl(pipe_fds[0], F_GETFL, 0);
+        flag |= O_NONBLOCK;
+        fcntl(pipe_fds[0], F_SETFL, flag);
+        flag = fcntl(pipe_fds[1], F_GETFL, 0);
+        flag |= O_NONBLOCK;
+        fcntl(pipe_fds[1], F_SETFL, flag);
+    }
+
+    real_source->fd.fd = pipe_fds[0];
+    real_source->fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
+    g_source_add_poll(source, &real_source->fd);
+
+    if (!already_piped)
+      PySignal_SetWakeupFd(pipe_fds[1]);
+#endif
+    return source;
+}
+
+PYGLIB_DEFINE_TYPE("gi._glib.MainLoop", PyGMainLoop_Type, PyGMainLoop)
+
+static int
+pyg_main_loop_init(PyGMainLoop *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "context", "is_running", NULL };
+    PyObject *py_context = Py_None;
+    int is_running = 0;
+    GMainContext *context;
+    
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "|Ob:GMainLoop.__init__",
+                                    kwlist, &py_context, &is_running))
+        return -1;
+
+    if (!PyObject_TypeCheck(py_context, &PyGMainContext_Type) &&
+       py_context != Py_None) {
+       PyErr_SetString(PyExc_TypeError,
+                       "context must be a gi._glib.MainContext or None");
+       return -1;
+    }
+
+    if (py_context != Py_None) {
+       context = ((PyGMainContext*)py_context)->context;
+    } else {
+       context = NULL;
+    }
+
+    self->loop = g_main_loop_new(context, is_running);
+
+    self->signal_source = pyg_signal_watch_new();
+    g_source_attach(self->signal_source, context);
+    g_source_unref(self->signal_source);
+
+    return 0;
+}
+
+static void
+pyg_main_loop_dealloc(PyGMainLoop *self)
+{
+    if (self->signal_source != NULL) {
+       g_source_destroy(self->signal_source);
+       self->signal_source = NULL;
+    }
+
+    if (self->loop != NULL) {
+       g_main_loop_unref(self->loop);
+       self->loop = NULL;
+    }
+
+    PyObject_Del(self);
+}
+
+static PyObject*
+pyg_main_loop_richcompare(PyObject *self, PyObject *other, int op)
+{
+    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGMainLoop_Type)
+        return _pyglib_generic_ptr_richcompare(((PyGMainLoop*)self)->loop,
+                                               ((PyGMainLoop*)other)->loop,
+                                               op);
+    else {
+       Py_INCREF(Py_NotImplemented);
+       return Py_NotImplemented;
+    }
+}
+
+static PyObject *
+_wrap_g_main_loop_get_context (PyGMainLoop *loop)
+{
+    return pyg_main_context_new(g_main_loop_get_context(loop->loop));
+}
+
+static PyObject *
+_wrap_g_main_loop_is_running (PyGMainLoop *self)
+{
+    return PyBool_FromLong(g_main_loop_is_running(self->loop));
+}
+
+static PyObject *
+_wrap_g_main_loop_quit (PyGMainLoop *self, PyObject *args, PyObject *kwargs)
+{
+    g_main_loop_quit(self->loop);
+    
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+_wrap_g_main_loop_run (PyGMainLoop *self)
+{
+    GMainLoop *prev_loop;
+
+    prev_loop = pyg_save_current_main_loop(self->loop);
+
+    pyglib_begin_allow_threads;
+    g_main_loop_run(self->loop);
+    pyglib_end_allow_threads;
+
+    pyg_restore_current_main_loop(prev_loop);
+   
+    if (PyErr_Occurred())
+        return NULL;
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyMethodDef _PyGMainLoop_methods[] = {
+    { "get_context", (PyCFunction)_wrap_g_main_loop_get_context, METH_NOARGS },
+    { "is_running", (PyCFunction)_wrap_g_main_loop_is_running, METH_NOARGS },
+    { "quit", (PyCFunction)_wrap_g_main_loop_quit, METH_VARARGS|METH_KEYWORDS },
+    { "run", (PyCFunction)_wrap_g_main_loop_run, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+void
+pyglib_mainloop_register_types(PyObject *d)
+{
+    PyGMainLoop_Type.tp_dealloc = (destructor)pyg_main_loop_dealloc;
+    PyGMainLoop_Type.tp_richcompare = pyg_main_loop_richcompare;
+    PyGMainLoop_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
+    PyGMainLoop_Type.tp_methods = _PyGMainLoop_methods;
+    PyGMainLoop_Type.tp_init = (initproc)pyg_main_loop_init;
+    PYGLIB_REGISTER_TYPE(d, PyGMainLoop_Type, "MainLoop"); 
+}
diff --git a/gi/_glib/pygmainloop.h b/gi/_glib/pygmainloop.h
new file mode 100644 (file)
index 0000000..dec82d8
--- /dev/null
@@ -0,0 +1,36 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYG_MAINLOOP_H__
+#define __PYG_MAINLOOP_H__
+
+typedef struct {
+    PyObject_HEAD
+    GMainLoop *loop;
+    GSource *signal_source;
+} PyGMainLoop;
+
+extern PyTypeObject PyGMainLoop_Type;
+
+void pyglib_mainloop_register_types(PyObject *d);
+
+#endif /* __PYG_MAINLOOP_H__ */
+
similarity index 95%
rename from gi/pygoptioncontext.c
rename to gi/_glib/pygoptioncontext.c
index 50c32fb..b985dbe 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
+#include "pyglib-private.h"
 #include "pygoptioncontext.h"
-#include "pygi-error.h"
 
-PYGLIB_DEFINE_TYPE("gi._gi.OptionContext", PyGOptionContext_Type, PyGOptionContext)
+PYGLIB_DEFINE_TYPE("gi._glib.OptionContext", PyGOptionContext_Type, PyGOptionContext)
 
 /**
  * pyg_option_context_new:
@@ -56,7 +58,7 @@ pyg_option_context_init(PyGOptionContext *self,
 {
     char *parameter_string;
 
-    if (!PyArg_ParseTuple(args, "s:gi._gi.GOptionContext.__init__",
+    if (!PyArg_ParseTuple(args, "s:gi._glib.GOptionContext.__init__",
                           &parameter_string))
         return -1;
 
@@ -128,17 +130,17 @@ pyg_option_context_parse(PyGOptionContext *self,
 
     g_assert(argv_length <= G_MAXINT);
     argv_length_int = argv_length;
-    Py_BEGIN_ALLOW_THREADS;
+    pyglib_begin_allow_threads;
     result = g_option_context_parse(self->context, &argv_length_int, &argv_content,
                                     &error);
-    Py_END_ALLOW_THREADS;
+    pyglib_end_allow_threads;
     argv_length = argv_length_int;
 
     if (!result)
     {
         g_strfreev(argv_content);
         g_strfreev(original);
-        pygi_error_check(&error);
+        pyglib_error_check(&error);
         return NULL;
     }
 
similarity index 88%
rename from gi/pygoptioncontext.h
rename to gi/_glib/pygoptioncontext.h
index 2beee78..efe5ffa 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYG_OPTIONCONTEXT_H__
similarity index 93%
rename from gi/pygoptiongroup.c
rename to gi/_glib/pygoptiongroup.c
index e91ca05..2990342 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
+#include "pyglib-private.h"
 #include "pygoptiongroup.h"
-#include "pygi-error.h"
 
-PYGLIB_DEFINE_TYPE("gi._gi.OptionGroup", PyGOptionGroup_Type, PyGOptionGroup)
+PYGLIB_DEFINE_TYPE("gi._glib.OptionGroup", PyGOptionGroup_Type, PyGOptionGroup)
 
 /**
  * pyg_option_group_new:
@@ -60,7 +62,7 @@ check_if_owned(PyGOptionGroup *self)
     if (self->other_owner)
     {
         PyErr_SetString(PyExc_ValueError, "The GOptionGroup was not created by "
-                        "gi._gi.OptionGroup(), so operation is not possible.");
+                        "gi._glib.OptionGroup(), so operation is not possible.");
         return TRUE;
     }
     return FALSE;
@@ -70,7 +72,7 @@ static void
 destroy_g_group(PyGOptionGroup *self)
 {
     PyGILState_STATE state;
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     self->group = NULL;
     Py_CLEAR(self->callback);
@@ -83,7 +85,7 @@ destroy_g_group(PyGOptionGroup *self)
         Py_DECREF(self);
     }
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 static int
@@ -117,11 +119,8 @@ pyg_option_group_dealloc(PyGOptionGroup *self)
     {
         GOptionGroup *tmp = self->group;
         self->group = NULL;
-       if (tmp) {
-           G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+       if (tmp)
            g_option_group_free(tmp);
-           G_GNUC_END_IGNORE_DEPRECATIONS
-       }
     }
 
     PyObject_Del(self);
@@ -137,7 +136,8 @@ arg_func(const gchar *option_name,
     PyGILState_STATE state;
     gboolean no_error;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
+
     if (value == NULL)
         ret = PyObject_CallFunction(self->callback, "sOO",
                                     option_name, Py_None, self);
@@ -150,9 +150,9 @@ arg_func(const gchar *option_name,
         Py_DECREF(ret);
         no_error = TRUE;
     } else
-       no_error = pygi_gerror_exception_check(error) != -1;
+       no_error = pyglib_gerror_exception_check(error) != -1;
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
     return no_error;
 }
 
similarity index 89%
rename from gi/pygoptiongroup.h
rename to gi/_glib/pygoptiongroup.h
index f410c92..872b9c6 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYG_OPTIONGROUP_H__
diff --git a/gi/_glib/pygsource.c b/gi/_glib/pygsource.c
new file mode 100644 (file)
index 0000000..d11f474
--- /dev/null
@@ -0,0 +1,738 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ * Copyright (C) 2005       Oracle
+ *
+ * Author: Manish Singh <manish.singh@oracle.com>
+ *
+ *   pygsource.c: GSource wrapper
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <Python.h>
+#include <pythread.h>
+#include <structmember.h> /* for PyMemberDef */
+#include "pyglib.h"
+#include "pyglib-private.h"
+#include "pygmaincontext.h"
+#include "pygsource.h"
+
+#define CHECK_DESTROYED(self, ret)                     G_STMT_START {  \
+    if ((self)->source == NULL) {                                      \
+       PyErr_SetString(PyExc_RuntimeError, "source is destroyed");     \
+       return (ret);                                                   \
+    }                                                                  \
+} G_STMT_END
+
+
+typedef struct {
+    PyObject_HEAD
+    GSource *source;
+    PyObject *inst_dict;
+    PyObject *weakreflist;
+    gboolean python_source;
+} PyGSource;
+
+typedef struct
+{
+    GSource source;
+    PyObject *obj;
+} PyGRealSource;
+
+/* glib.Source */
+
+PYGLIB_DEFINE_TYPE("gi._glib.Source", PyGSource_Type, PyGSource)
+
+static PyObject *
+source_repr(PyGSource *self, const char *type)
+{
+    gchar buf[256], *desc;
+    if (self->source) {
+       if (g_source_get_context(self->source))
+           desc = "attached";
+       else
+           desc = "unattached";
+    } else {
+       desc = "destroyed";
+    }
+
+    if (type)
+       g_snprintf(buf, sizeof(buf), "<%s glib %s source at 0x%lx>",
+                  desc, type, (long) self);
+    else
+       g_snprintf(buf, sizeof(buf), "<%s glib source at 0x%lx>",
+                  desc, (long) self);
+
+    return PYGLIB_PyUnicode_FromString(buf);
+}
+
+static PyObject *
+pyg_source_attach(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "context", NULL };
+    PyGMainContext *py_context = NULL;
+    GMainContext *context = NULL;
+    guint id;
+
+    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
+                                     "|O!:attach", kwlist,
+                                     &PyGMainContext_Type, &py_context))
+       return NULL;
+
+    if (py_context)
+       context = py_context->context;
+
+    CHECK_DESTROYED(self, NULL);
+
+    if (self->python_source) {
+       PyGRealSource *pysource = (PyGRealSource *)self->source;
+       Py_INCREF(pysource->obj);
+    }
+
+    id = g_source_attach(self->source, context);
+    return PYGLIB_PyLong_FromLong(id);
+}
+
+static PyObject *
+pyg_source_destroy(PyGSource *self)
+{
+    CHECK_DESTROYED(self, NULL);
+
+    if (self->python_source && self->source->context) {
+       PyGRealSource *pysource = (PyGRealSource *)self->source;
+       Py_DECREF(pysource->obj);
+    }
+
+    g_source_destroy(self->source);
+    self->source = NULL;
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyg_source_is_destroyed(PyGSource *self)
+{
+    PyObject *result;
+
+    if (self->source == NULL || g_source_is_destroyed(self->source))
+        result = Py_True;
+    else
+        result = Py_False;
+
+    Py_INCREF(result);
+    return result;
+}
+
+static PyObject *
+pyg_source_set_callback(PyGSource *self, PyObject *args)
+{
+    PyObject *first, *callback, *cbargs = NULL, *data;
+    gint len;
+
+    CHECK_DESTROYED(self, NULL);
+
+    len = PyTuple_Size (args);
+    if (len < 1) {
+       PyErr_SetString(PyExc_TypeError,
+                       "set_callback requires at least 1 argument");
+       return NULL;
+    }
+
+    first = PySequence_GetSlice(args, 0, 1);
+    if (!PyArg_ParseTuple(first, "O:set_callback", &callback)) {
+       Py_DECREF (first);
+       return NULL;
+    }
+    Py_DECREF(first);
+
+    if (!PyCallable_Check(callback)) {
+       PyErr_SetString(PyExc_TypeError, "first argument not callable");
+       return NULL;
+    }
+
+    cbargs = PySequence_GetSlice(args, 1, len);
+    if (cbargs == NULL)
+       return NULL;
+
+    data = Py_BuildValue("(ON)", callback, cbargs);
+    if (data == NULL)
+       return NULL;
+
+    g_source_set_callback(self->source,
+                         _pyglib_handler_marshal, data,
+                         _pyglib_destroy_notify);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyg_source_get_context(PyGSource *self)
+{
+    GMainContext *context;
+
+    CHECK_DESTROYED(self, NULL);
+
+    context = g_source_get_context(self->source);
+
+    if (context) {
+       return pyg_main_context_new(context);
+    } else {
+       Py_INCREF(Py_None);
+       return Py_None;
+    }
+}
+
+static PyObject *
+pyg_source_add_poll(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "fd", NULL };
+    PyGPollFD *fd;
+
+    if (!self->python_source) {
+       PyErr_SetString(PyExc_TypeError,
+                       "add_poll can only be used with sources "
+                       "implemented in python");
+       return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "O!:add_poll", kwlist,
+                                    &PyGPollFD_Type, &fd))
+       return NULL;
+
+    CHECK_DESTROYED(self, NULL);
+
+    g_source_add_poll(self->source, &fd->pollfd);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyg_source_remove_poll(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "fd", NULL };
+    PyGPollFD *fd;
+
+    if (!self->python_source) {
+       PyErr_SetString(PyExc_TypeError,
+                       "remove_poll can only be used with sources "
+                       "implemented in python");
+       return NULL;
+    }
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "O!:remove_poll", kwlist,
+                                    &PyGPollFD_Type, &fd))
+       return NULL;
+
+    CHECK_DESTROYED(self, NULL);
+
+    g_source_remove_poll(self->source, &fd->pollfd);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyg_source_get_current_time(PyGSource *self)
+{
+    double   ret;
+
+    CHECK_DESTROYED(self, NULL);
+
+    ret = g_get_real_time() * 0.000001;
+    return PyFloat_FromDouble(ret);
+}
+
+static PyMethodDef pyg_source_methods[] = {
+    { "attach", (PyCFunction)pyg_source_attach, METH_VARARGS|METH_KEYWORDS },
+    { "destroy", (PyCFunction)pyg_source_destroy, METH_NOARGS },
+    { "is_destroyed", (PyCFunction)pyg_source_is_destroyed, METH_NOARGS },
+    { "set_callback", (PyCFunction)pyg_source_set_callback, METH_VARARGS },
+    { "get_context", (PyCFunction)pyg_source_get_context, METH_NOARGS },
+    { "add_poll", (PyCFunction)pyg_source_add_poll, METH_KEYWORDS },
+    { "remove_poll", (PyCFunction)pyg_source_remove_poll, METH_VARARGS|METH_KEYWORDS },
+    { "get_current_time", (PyCFunction)pyg_source_get_current_time, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+static PyObject *
+pyg_source_get_dict(PyGSource *self, void *closure)
+{
+    if (self->inst_dict == NULL) {
+       self->inst_dict = PyDict_New();
+       if (self->inst_dict == NULL)
+           return NULL;
+    }
+
+    Py_INCREF(self->inst_dict);
+    return self->inst_dict;
+}
+
+static PyObject *
+pyg_source_get_priority(PyGSource *self, void *closure)
+{
+    CHECK_DESTROYED(self, NULL);
+
+    return PYGLIB_PyLong_FromLong(g_source_get_priority(self->source));
+}
+
+static int
+pyg_source_set_priority(PyGSource *self, PyObject *value, void *closure)
+{
+    CHECK_DESTROYED(self, -1);
+
+    if (value == NULL) {
+       PyErr_SetString(PyExc_TypeError, "cannot delete priority");
+       return -1;
+    }
+
+    if (!PYGLIB_PyLong_Check(value)) {
+       PyErr_SetString(PyExc_TypeError, "type mismatch");
+       return -1;
+    }
+
+    g_source_set_priority(self->source, PYGLIB_PyLong_AsLong(value));
+
+    return 0;
+}
+
+static PyObject *
+pyg_source_get_can_recurse(PyGSource *self, void *closure)
+{
+    CHECK_DESTROYED(self, NULL);
+
+    return PyBool_FromLong(g_source_get_can_recurse(self->source));
+}
+
+static int
+pyg_source_set_can_recurse(PyGSource *self, PyObject *value, void *closure)
+{
+    CHECK_DESTROYED(self, -1);
+
+    if (value == NULL) {
+       PyErr_SetString(PyExc_TypeError, "cannot delete can_recurse");
+       return -1;
+    }
+
+    g_source_set_can_recurse(self->source, PyObject_IsTrue(value));
+
+    return 0;
+}
+
+static PyObject *
+pyg_source_get_id(PyGSource *self, void *closure)
+{
+    CHECK_DESTROYED(self, NULL);
+
+    if (g_source_get_context(self->source) == NULL) {
+       PyErr_SetString(PyExc_RuntimeError, "source is not attached");
+       return NULL;
+    }
+
+    return PYGLIB_PyLong_FromLong(g_source_get_id(self->source));
+}
+
+static PyGetSetDef pyg_source_getsets[] = {
+    { "__dict__", (getter)pyg_source_get_dict,  (setter)0 },
+    {"priority", (getter)pyg_source_get_priority, (setter)pyg_source_set_priority },
+    {"can_recurse", (getter)pyg_source_get_can_recurse, (setter)pyg_source_set_can_recurse },
+    {"id", (getter)pyg_source_get_id, (setter)0 },
+    {NULL, 0, 0}
+};
+
+static PyObject *
+pyg_source_repr(PyGSource *self)
+{
+    return source_repr(self, NULL);
+}
+
+static int
+pyg_source_traverse(PyGSource *self, visitproc visit, void *arg)
+{
+    int ret = 0;
+
+    if (self->inst_dict) ret = visit(self->inst_dict, arg);
+    if (ret != 0) return ret;
+
+    return 0;
+}
+
+static int
+pyg_source_clear(PyGSource *self)
+{
+    PyObject *tmp;
+
+    tmp = self->inst_dict;
+    self->inst_dict = NULL;
+    Py_XDECREF(tmp);
+
+    if (self->source) {
+       g_source_unref(self->source);
+       self->source = NULL;
+    }
+
+    return 0;
+}
+
+static void
+pyg_source_dealloc(PyGSource *self)
+{
+    /* Must be done first, so that there is no chance of Python's GC being
+     * called while tracking this half-deallocated object */
+    PyObject_GC_UnTrack((PyObject *)self);
+
+    PyObject_ClearWeakRefs((PyObject *)self);
+
+    pyg_source_clear(self);
+
+    PyObject_GC_Del(self);
+}
+
+static gboolean
+pyg_source_prepare(GSource *source, gint *timeout)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *t;
+    gboolean ret = FALSE;
+    gboolean got_err = TRUE;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    t = PyObject_CallMethod(pysource->obj, "prepare", NULL);
+
+    if (t == NULL) {
+       goto bail;
+    } else if (!PyObject_IsTrue(t)) {
+       got_err = FALSE;
+       goto bail;
+    } else if (!PyTuple_Check(t)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "source prepare function must return a tuple or False");
+       goto bail;
+    } else if (PyTuple_Size(t) != 2) {
+       PyErr_SetString(PyExc_TypeError,
+                       "source prepare function return tuple must be exactly "
+                       "2 elements long");
+       goto bail;
+    }
+
+    ret = PyObject_IsTrue(PyTuple_GET_ITEM(t, 0));
+       *timeout = PYGLIB_PyLong_AsLong(PyTuple_GET_ITEM(t, 1));
+
+       if (*timeout == -1 && PyErr_Occurred()) {
+           ret = FALSE;
+           goto bail;
+       }
+
+    got_err = FALSE;
+
+bail:
+    if (got_err)
+       PyErr_Print();
+
+    Py_XDECREF(t);
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static gboolean
+pyg_source_check(GSource *source)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *t;
+    gboolean ret;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    t = PyObject_CallMethod(pysource->obj, "check", NULL);
+
+    if (t == NULL) {
+       PyErr_Print();
+       ret = FALSE;
+    } else {
+       ret = PyObject_IsTrue(t);
+       Py_DECREF(t);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static gboolean
+pyg_source_dispatch(GSource *source, GSourceFunc callback, gpointer user_data)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *func, *args, *tuple, *t;
+    gboolean ret;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    if (callback) {
+       tuple = user_data;
+
+       func = PyTuple_GetItem(tuple, 0);
+        args = PyTuple_GetItem(tuple, 1);
+    } else {
+       func = Py_None;
+       args = Py_None;
+    }
+
+    t = PyObject_CallMethod(pysource->obj, "dispatch", "OO", func, args);
+
+    if (t == NULL) {
+       PyErr_Print();
+       ret = FALSE;
+    } else {
+       ret = PyObject_IsTrue(t);
+       Py_DECREF(t);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static void
+pyg_source_finalize(GSource *source)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *func, *t;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    func = PyObject_GetAttrString(pysource->obj, "finalize");
+    if (func) {
+       t = PyObject_CallObject(func, NULL);
+       Py_DECREF(func);
+
+       if (t == NULL) {
+           PyErr_Print();
+       } else {
+           Py_DECREF(t);
+       }
+    }
+
+    pyglib_gil_state_release(state);
+}
+
+static GSourceFuncs pyg_source_funcs =
+{
+    pyg_source_prepare,
+    pyg_source_check,
+    pyg_source_dispatch,
+    pyg_source_finalize
+};
+
+static int
+pyg_source_init(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    PyGRealSource *pysource;
+
+    self->source = g_source_new(&pyg_source_funcs, sizeof(PyGRealSource));
+
+    pysource = (PyGRealSource *)self->source;
+    pysource->obj = (PyObject*)self;
+
+    self->inst_dict = NULL;
+    self->weakreflist = NULL;
+
+    self->python_source = TRUE;
+
+    return 0;
+}
+
+static void
+pyg_source_free(PyObject *op)
+{
+    PyObject_GC_Del(op);
+}
+
+/* glib.Idle */
+
+PYGLIB_DEFINE_TYPE("gi._glib.Idle", PyGIdle_Type, PyGSource)
+
+static PyObject *
+pyg_idle_repr(PyGSource *self)
+{
+    return source_repr(self, "idle");
+}
+
+static int
+pyg_idle_init(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "priority", NULL };
+    gint priority = G_PRIORITY_DEFAULT_IDLE;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "|i:gi._glib.Idle.__init__", kwlist,
+                                    &priority))
+       return -1;
+
+    self->source = g_idle_source_new ();
+
+    if (priority != G_PRIORITY_DEFAULT_IDLE)
+       g_source_set_priority(self->source, priority);
+
+    self->inst_dict = NULL;
+    self->weakreflist = NULL;
+
+    self->python_source = FALSE;
+
+    return 0;
+}
+
+/* glib.Timeout */
+
+PYGLIB_DEFINE_TYPE("gi._glib.Timeout", PyGTimeout_Type, PyGSource)
+
+static PyObject *
+pyg_timeout_repr(PyGSource *self)
+{
+    return source_repr(self, "timeout");
+}
+
+static int
+pyg_timeout_init(PyGSource *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "interval", "priority", NULL };
+    gint priority = G_PRIORITY_DEFAULT;
+    guint interval;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "I|i:gi._glib.Timeout.__init__", kwlist,
+                                    &interval, &priority))
+       return -1;
+
+    self->source = g_timeout_source_new(interval);
+
+    if (priority != G_PRIORITY_DEFAULT)
+       g_source_set_priority(self->source, priority);
+
+    self->inst_dict = NULL;
+    self->weakreflist = NULL;
+
+    self->python_source = FALSE;
+
+    return 0;
+}
+
+/* glib.PollFD */
+
+PYGLIB_DEFINE_TYPE("gi._glib.PollFD", PyGPollFD_Type, PyGPollFD)
+
+static PyMemberDef pyg_poll_fd_members[] = {
+    { "fd",      T_INT,    offsetof(PyGPollFD, pollfd.fd),      READONLY },
+    { "events",  T_USHORT, offsetof(PyGPollFD, pollfd.events),  READONLY },
+    { "revents", T_USHORT, offsetof(PyGPollFD, pollfd.revents), READONLY },
+    { NULL, 0, 0, 0 }
+};
+
+static void
+pyg_poll_fd_dealloc(PyGPollFD *self)
+{
+    Py_XDECREF(self->fd_obj);
+    PyObject_DEL(self);
+}
+
+static PyObject *
+pyg_poll_fd_repr(PyGPollFD *self)
+{
+    return PYGLIB_PyUnicode_FromFormat("<GPollFD %d (%d) at 0x%lx>",
+                                self->pollfd.fd, self->pollfd.events,
+                                (long)self);
+}
+
+static int
+pyg_poll_fd_init(PyGPollFD *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "fd", "events", NULL };
+    PyObject *o;
+    gint fd;
+    gushort events;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                    "OH:gi._glib.PollFD.__init__", kwlist,
+                                    &o, &events))
+       return -1;
+
+    fd = PyObject_AsFileDescriptor(o);
+    if (fd == -1)
+       return -1;
+
+    self->pollfd.fd = fd;
+    self->pollfd.events = events;
+    self->pollfd.revents = 0;
+
+    Py_INCREF(o);
+    self->fd_obj = o;
+
+    return 0;
+}
+
+void
+pyglib_source_register_types(PyObject *d)
+{
+    PyGSource_Type.tp_flags = (Py_TPFLAGS_DEFAULT |
+                              Py_TPFLAGS_BASETYPE |
+                              Py_TPFLAGS_HAVE_GC);
+    PyGSource_Type.tp_init = (initproc)pyg_source_init;
+    PyGSource_Type.tp_free = (freefunc)pyg_source_free;
+    PyGSource_Type.tp_dealloc = (destructor)pyg_source_dealloc;
+    PyGSource_Type.tp_methods = pyg_source_methods;
+    PyGSource_Type.tp_repr = (reprfunc)pyg_source_repr;
+    PyGSource_Type.tp_traverse = (traverseproc)pyg_source_traverse;
+    PyGSource_Type.tp_clear = (inquiry)pyg_source_clear;
+    PyGSource_Type.tp_getset = pyg_source_getsets;
+    PyGSource_Type.tp_weaklistoffset = offsetof(PyGSource, weakreflist);
+    PyGSource_Type.tp_dictoffset = offsetof(PyGSource, inst_dict);
+    PYGLIB_REGISTER_TYPE(d, PyGSource_Type, "Source");
+
+    PyGIdle_Type.tp_repr = (reprfunc)pyg_idle_repr;
+    PyGIdle_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
+    PyGIdle_Type.tp_base = (PyTypeObject *)&PyGSource_Type;
+    PyGIdle_Type.tp_init = (initproc)pyg_idle_init;
+    PYGLIB_REGISTER_TYPE(d, PyGIdle_Type, "Idle");
+
+    PyGTimeout_Type.tp_repr = (reprfunc)pyg_timeout_repr;
+    PyGTimeout_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
+    PyGTimeout_Type.tp_base = (PyTypeObject *)&PyGSource_Type;
+    PyGTimeout_Type.tp_init = (initproc)pyg_timeout_init;
+    PYGLIB_REGISTER_TYPE(d, PyGTimeout_Type, "Timeout");
+
+    PyGPollFD_Type.tp_dealloc = (destructor)pyg_poll_fd_dealloc;
+    PyGPollFD_Type.tp_repr = (reprfunc)pyg_poll_fd_repr;
+    PyGPollFD_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGPollFD_Type.tp_members = pyg_poll_fd_members;
+    PyGPollFD_Type.tp_init = (initproc)pyg_poll_fd_init;
+    PYGLIB_REGISTER_TYPE(d, PyGPollFD_Type, "PollFD");
+}
diff --git a/gi/_glib/pygsource.h b/gi/_glib/pygsource.h
new file mode 100644 (file)
index 0000000..bf2c673
--- /dev/null
@@ -0,0 +1,39 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pyglib - Python bindings for GLib toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYG_SOURCE_H__
+#define __PYG_SOURCE_H__
+
+extern PyTypeObject PyGSource_Type;
+extern PyTypeObject PyGIdle_Type;
+extern PyTypeObject PyGTimeout_Type;
+extern PyTypeObject PyGPollFD_Type;
+
+typedef struct
+{
+    PyObject_HEAD
+    GPollFD pollfd;
+    PyObject *fd_obj;
+} PyGPollFD;
+
+void pyglib_source_register_types(PyObject *d);
+
+#endif /* __PYG_SOURCE_H__ */
similarity index 86%
rename from gi/pygspawn.c
rename to gi/_glib/pygspawn.c
index 7828d23..cfa5555 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #include <Python.h>
 #include <glib.h>
 
 #include "pyglib.h"
-
-#include "pygspawn.h"
-#include "pygi-error.h"
+#include "pyglib-private.h"
 
 struct _PyGChildSetupData {
     PyObject *func;
     PyObject *data;
 };
 
-PYGLIB_DEFINE_TYPE("gi._gi.Pid", PyGPid_Type, PYGLIB_PyLongObject)
-
-static GPid
-pyg_pid_get_pid (PyObject *self)
-{
-#ifdef G_OS_WIN32
-    return (GPid)PyLong_AsVoidPtr (self);
-#else
-    return (GPid)PYGLIB_PyLong_AsLong (self);
-#endif
-}
+PYGLIB_DEFINE_TYPE("gi._glib.Pid", PyGPid_Type, PYGLIB_PyLongObject)
 
 static PyObject *
 pyg_pid_close(PyObject *self, PyObject *args, PyObject *kwargs)
 {
-    g_spawn_close_pid(pyg_pid_get_pid (self));
+    g_spawn_close_pid(PYGLIB_PyLong_AsLong(self));
     Py_INCREF(Py_None);
     return Py_None;
 }
@@ -60,28 +50,30 @@ static PyMethodDef pyg_pid_methods[] = {
 static void
 pyg_pid_free(PyObject *gpid)
 {
-    g_spawn_close_pid(pyg_pid_get_pid (gpid));
+    g_spawn_close_pid((GPid) PYGLIB_PyLong_AsLong(gpid));
     PYGLIB_PyLong_Type.tp_free((void *) gpid);
 }
 
 static int
 pyg_pid_tp_init(PyObject *self, PyObject *args, PyObject *kwargs)
 {
-    PyErr_SetString(PyExc_TypeError, "gi._gi.Pid cannot be manually instantiated");
+    PyErr_SetString(PyExc_TypeError, "gi._glib.Pid cannot be manually instantiated");
     return -1;
 }
 
 PyObject *
 pyg_pid_new(GPid pid)
 {
-    PyObject *long_val;
-#ifdef G_OS_WIN32
-    long_val = PyLong_FromVoidPtr (pid);
+    PYGLIB_PyLongObject *pygpid;
+
+#if PY_VERSION_HEX >= 0x03000000
+    return PyObject_CallMethod((PyObject*)&PyGPid_Type, "__new__", "Oi",
+                              &PyGPid_Type, pid);
 #else
-    long_val = PYGLIB_PyLong_FromLong (pid);
+    pygpid = PyObject_NEW(PyIntObject, &PyGPid_Type);
+    pygpid->ob_ival = pid;
 #endif
-    return PyObject_CallMethod((PyObject*)&PyGPid_Type, "__new__", "ON",
-                               &PyGPid_Type, long_val);
+    return (PyObject *) pygpid;
 }
 
 static void
@@ -92,7 +84,7 @@ _pyg_spawn_async_callback(gpointer user_data)
     PyGILState_STATE gil;
 
     data = (struct _PyGChildSetupData *) user_data;
-    gil = PyGILState_Ensure();
+    gil = pyglib_gil_state_ensure();
     if (data->data)
         retval = PyObject_CallFunction(data->func, "O", data->data);
     else
@@ -104,7 +96,7 @@ _pyg_spawn_async_callback(gpointer user_data)
     Py_DECREF(data->func);
     Py_XDECREF(data->data);
     g_slice_free(struct _PyGChildSetupData, data);
-    PyGILState_Release(gil);
+    pyglib_gil_state_release(gil);
 }
 
 PyObject *
@@ -122,10 +114,10 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
     gint *standard_input, *standard_output, *standard_error;
     struct _PyGChildSetupData *callback_data = NULL;
     GError *error = NULL;
-    GPid child_pid = 0;
+    GPid child_pid = -1;
     Py_ssize_t len, i;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OsiOOOOO:gi._gi.spawn_async",
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OsiOOOOO:gi._glib.spawn_async",
                                      kwlist,
                                      &pyargv, &pyenvp, &working_directory, &flags,
                                      &func, &user_data,
@@ -150,7 +142,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
       /* parse argv */
     if (!PySequence_Check(pyargv)) {
         PyErr_SetString(PyExc_TypeError,
-                        "gi._gi.spawn_async: "
+                        "gi._glib.spawn_async: "
                        "first argument must be a sequence of strings");
         return NULL;
     }
@@ -160,7 +152,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
         PyObject *tmp = PySequence_ITEM(pyargv, i);
         if (tmp == NULL || !PYGLIB_PyUnicode_Check(tmp)) {
             PyErr_SetString(PyExc_TypeError,
-                            "gi._gi.spawn_async: "
+                            "gi._glib.spawn_async: "
                            "first argument must be a sequence of strings");
             g_free(argv);
             Py_XDECREF(tmp);
@@ -174,7 +166,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
     if (pyenvp) {
         if (!PySequence_Check(pyenvp)) {
             PyErr_SetString(PyExc_TypeError,
-                            "gi._gi.spawn_async: "
+                            "gi._glib.spawn_async: "
                            "second argument must be a sequence of strings");
             g_free(argv);
             return NULL;
@@ -185,7 +177,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
             PyObject *tmp = PySequence_ITEM(pyenvp, i);
             if (tmp == NULL || !PYGLIB_PyUnicode_Check(tmp)) {
                 PyErr_SetString(PyExc_TypeError,
-                                "gi._gi.spawn_async: "
+                                "gi._glib.spawn_async: "
                                "second argument must be a sequence of strings");
                 g_free(envp);
                 Py_XDECREF(tmp);
@@ -230,7 +222,7 @@ pyglib_spawn_async(PyObject *object, PyObject *args, PyObject *kwargs)
             Py_XDECREF(callback_data->data);
             g_slice_free(struct _PyGChildSetupData, callback_data);
         }
-        pygi_error_check(&error);
+        pyglib_error_check(&error);
         return NULL;
     }
     g_free(argv);
@@ -268,6 +260,5 @@ pyglib_spawn_register_types(PyObject *d)
     PyGPid_Type.tp_methods = pyg_pid_methods;
     PyGPid_Type.tp_init = pyg_pid_tp_init;
     PyGPid_Type.tp_free = (freefunc)pyg_pid_free;
-    PyGPid_Type.tp_new = PYGLIB_PyLong_Type.tp_new;
     PYGLIB_REGISTER_TYPE(d, PyGPid_Type, "Pid");
 }
similarity index 86%
rename from gi/pygspawn.h
rename to gi/_glib/pygspawn.h
index 3cc9680..2e8dd3c 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYG_PID_H__
diff --git a/gi/_gobject/Makefile.am b/gi/_gobject/Makefile.am
new file mode 100644 (file)
index 0000000..36fd662
--- /dev/null
@@ -0,0 +1,88 @@
+AUTOMAKE_OPTIONS = 1.7
+PLATFORM_VERSION = 3.0
+
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
+pkginclude_HEADERS = pygobject.h
+
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = \
+       -module \
+       -avoid-version
+
+if OS_WIN32
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+extension_libadd = \
+       $(PYTHON_LIBS)
+
+extension_ldflags += \
+       -no-undefined \
+       -shrext ".pyd"
+endif
+
+pygobjectdir = $(pyexecdir)/gi/_gobject
+
+pygobject_PYTHON = \
+       __init__.py \
+       constants.py \
+       propertyhelper.py
+
+pygobject_LTLIBRARIES = _gobject.la
+
+_gobject_la_SOURCES = \
+        gobjectmodule.c \
+        pygboxed.c \
+        pygboxed.h \
+        pygenum.c \
+        pygenum.h \
+        pygflags.c \
+        pygflags.h \
+        pyginterface.c \
+        pyginterface.h \
+        pygobject.c \
+        pygobject.h \
+        pygobject-private.h \
+        pygparamspec.c \
+        pygparamspec.h \
+        pygpointer.c \
+        pygpointer.h \
+        pygtype.c \
+        pygtype.h
+_gobject_la_CFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi \
+       $(GLIB_CFLAGS) \
+       $(GI_CFLAGS)
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags)
+_gobject_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+_gobject_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_gobject|PyInit__gobject"
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygobject_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+
+all: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pygobject_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
+
+-include $(top_srcdir)/git.mk
diff --git a/gi/_gobject/Makefile.in b/gi/_gobject/Makefile.in
new file mode 100644 (file)
index 0000000..56caedf
--- /dev/null
@@ -0,0 +1,816 @@
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@OS_WIN32_TRUE@am__append_1 = \
+@OS_WIN32_TRUE@        -no-undefined \
+@OS_WIN32_TRUE@        -shrext ".pyd"
+
+subdir = gi/_gobject
+DIST_COMMON = $(pkginclude_HEADERS) $(pygobject_PYTHON) \
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(pygobjectdir)" \
+       "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pkgincludedir)"
+LTLIBRARIES = $(pygobject_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
+_gobject_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+am__gobject_la_OBJECTS = _gobject_la-gobjectmodule.lo \
+       _gobject_la-pygboxed.lo _gobject_la-pygenum.lo \
+       _gobject_la-pygflags.lo _gobject_la-pyginterface.lo \
+       _gobject_la-pygobject.lo _gobject_la-pygparamspec.lo \
+       _gobject_la-pygpointer.lo _gobject_la-pygtype.lo
+_gobject_la_OBJECTS = $(am__gobject_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+_gobject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gobject_la_CFLAGS) \
+       $(CFLAGS) $(_gobject_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+       $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+       $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(_gobject_la_SOURCES)
+DIST_SOURCES = $(_gobject_la_SOURCES)
+am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
+py_compile = $(top_srcdir)/py-compile
+HEADERS = $(pkginclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FFI_CFLAGS = @FFI_CFLAGS@
+FFI_LIBS = @FFI_LIBS@
+FGREP = @FGREP@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GI_CFLAGS = @GI_CFLAGS@
+GI_DATADIR = @GI_DATADIR@
+GI_LIBS = @GI_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GOBJECT_QUERY = @GOBJECT_QUERY@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBFFI_PC = @LIBFFI_PC@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
+PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
+PYCAIRO_LIBS = @PYCAIRO_LIBS@
+PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
+PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
+PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
+PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_INCLUDES = @PYTHON_INCLUDES@
+PYTHON_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.7
+PLATFORM_VERSION = 3.0
+pkginclude_HEADERS = pygobject.h
+extension_cppflags = \
+       $(PYTHON_INCLUDES) \
+       -DPY_SSIZE_T_CLEAN
+
+extension_ldflags = -module -avoid-version $(am__append_1)
+
+# Windows requires Python modules to be explicitly linked to libpython.
+# Extension modules are shared libaries (.dll), but need to be
+# called .pyd for Python to load it as an extension module.
+@OS_WIN32_TRUE@extension_libadd = \
+@OS_WIN32_TRUE@        $(PYTHON_LIBS)
+
+pygobjectdir = $(pyexecdir)/gi/_gobject
+pygobject_PYTHON = \
+       __init__.py \
+       constants.py \
+       propertyhelper.py
+
+pygobject_LTLIBRARIES = _gobject.la
+_gobject_la_SOURCES = \
+        gobjectmodule.c \
+        pygboxed.c \
+        pygboxed.h \
+        pygenum.c \
+        pygenum.h \
+        pygflags.c \
+        pygflags.h \
+        pyginterface.c \
+        pyginterface.h \
+        pygobject.c \
+        pygobject.h \
+        pygobject-private.h \
+        pygparamspec.c \
+        pygparamspec.h \
+        pygpointer.c \
+        pygpointer.h \
+        pygtype.c \
+        pygtype.h
+
+_gobject_la_CFLAGS = \
+       $(extension_cppflags) \
+       -I$(top_srcdir)/gi/_glib \
+       -I$(top_srcdir)/gi \
+       $(GLIB_CFLAGS) \
+       $(GI_CFLAGS)
+
+_gi_la_CPPFLAGS = \
+       $(extension_cppflags)
+
+_gobject_la_LIBADD = \
+       $(extension_libadd) \
+       $(GLIB_LIBS) \
+       $(GI_LIBS) \
+       $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+
+_gobject_la_LDFLAGS = \
+       $(extension_ldflags) \
+       -export-symbols-regex "_gobject|PyInit__gobject"
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .la .lo .o .obj .so
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/_gobject/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign gi/_gobject/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pygobjectLTLIBRARIES: $(pygobject_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       test -z "$(pygobjectdir)" || $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)"
+       @list='$(pygobject_LTLIBRARIES)'; test -n "$(pygobjectdir)" || list=; \
+       list2=; for p in $$list; do \
+         if test -f $$p; then \
+           list2="$$list2 $$p"; \
+         else :; fi; \
+       done; \
+       test -z "$$list2" || { \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pygobjectdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pygobjectdir)"; \
+       }
+
+uninstall-pygobjectLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pygobject_LTLIBRARIES)'; test -n "$(pygobjectdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pygobjectdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pygobjectdir)/$$f"; \
+       done
+
+clean-pygobjectLTLIBRARIES:
+       -test -z "$(pygobject_LTLIBRARIES)" || rm -f $(pygobject_LTLIBRARIES)
+       @list='$(pygobject_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+_gobject.la: $(_gobject_la_OBJECTS) $(_gobject_la_DEPENDENCIES) $(EXTRA__gobject_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(_gobject_la_LINK) -rpath $(pygobjectdir) $(_gobject_la_OBJECTS) $(_gobject_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-gobjectmodule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygboxed.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygenum.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygflags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pyginterface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygobject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygparamspec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygpointer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygtype.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+_gobject_la-gobjectmodule.lo: gobjectmodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-gobjectmodule.lo -MD -MP -MF $(DEPDIR)/_gobject_la-gobjectmodule.Tpo -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-gobjectmodule.Tpo $(DEPDIR)/_gobject_la-gobjectmodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='gobjectmodule.c' object='_gobject_la-gobjectmodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
+
+_gobject_la-pygboxed.lo: pygboxed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygboxed.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygboxed.Tpo -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygboxed.Tpo $(DEPDIR)/_gobject_la-pygboxed.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygboxed.c' object='_gobject_la-pygboxed.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
+
+_gobject_la-pygenum.lo: pygenum.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygenum.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygenum.Tpo -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygenum.Tpo $(DEPDIR)/_gobject_la-pygenum.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygenum.c' object='_gobject_la-pygenum.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
+
+_gobject_la-pygflags.lo: pygflags.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygflags.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygflags.Tpo -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygflags.Tpo $(DEPDIR)/_gobject_la-pygflags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygflags.c' object='_gobject_la-pygflags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
+
+_gobject_la-pyginterface.lo: pyginterface.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pyginterface.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pyginterface.Tpo -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pyginterface.Tpo $(DEPDIR)/_gobject_la-pyginterface.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pyginterface.c' object='_gobject_la-pyginterface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
+
+_gobject_la-pygobject.lo: pygobject.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygobject.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygobject.Tpo -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygobject.Tpo $(DEPDIR)/_gobject_la-pygobject.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygobject.c' object='_gobject_la-pygobject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
+
+_gobject_la-pygparamspec.lo: pygparamspec.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygparamspec.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygparamspec.Tpo -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygparamspec.Tpo $(DEPDIR)/_gobject_la-pygparamspec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygparamspec.c' object='_gobject_la-pygparamspec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
+
+_gobject_la-pygpointer.lo: pygpointer.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygpointer.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygpointer.Tpo -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygpointer.Tpo $(DEPDIR)/_gobject_la-pygpointer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygpointer.c' object='_gobject_la-pygpointer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
+
+_gobject_la-pygtype.lo: pygtype.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygtype.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygtype.Tpo -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygtype.Tpo $(DEPDIR)/_gobject_la-pygtype.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygtype.c' object='_gobject_la-pygtype.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-pygobjectPYTHON: $(pygobject_PYTHON)
+       @$(NORMAL_INSTALL)
+       test -z "$(pygobjectdir)" || $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)"
+       @list='$(pygobject_PYTHON)'; dlist=; list2=; test -n "$(pygobjectdir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
+         if test -f $$b$$p; then \
+           $(am__strip_dir) \
+           dlist="$$dlist $$f"; \
+           list2="$$list2 $$b$$p"; \
+         else :; fi; \
+       done; \
+       for file in $$list2; do echo $$file; done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pygobjectdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pygobjectdir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         $(am__py_compile) --destdir "$(DESTDIR)" \
+                           --basedir "$(pygobjectdir)" $$dlist; \
+       else :; fi
+
+uninstall-pygobjectPYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pygobject_PYTHON)'; test -n "$(pygobjectdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygobjectdir)'; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
+       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+       done
+
+uninstall-pkgincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+       $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs:
+       for dir in "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pkgincludedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+       clean-pygobjectLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgincludeHEADERS \
+       install-pygobjectLTLIBRARIES install-pygobjectPYTHON
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkgincludeHEADERS \
+       uninstall-pygobjectLTLIBRARIES uninstall-pygobjectPYTHON
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
+       clean-generic clean-libtool clean-local \
+       clean-pygobjectLTLIBRARIES ctags distclean distclean-compile \
+       distclean-generic distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-pkgincludeHEADERS install-ps \
+       install-ps-am install-pygobjectLTLIBRARIES \
+       install-pygobjectPYTHON install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-pkgincludeHEADERS \
+       uninstall-pygobjectLTLIBRARIES uninstall-pygobjectPYTHON
+
+
+# if we build in a separate tree, we need to symlink the *.py files from the
+# source tree; Python does not accept the extensions and modules in different
+# paths
+build_pylinks:
+       for f in $(pygobject_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
+clean-local:
+       rm -f $(pygobject_LTLIBRARIES:.la=.so)
+.la.so:
+       $(LN_S) .libs/$@ $@ || true
+
+-include $(top_srcdir)/git.mk
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gi/_gobject/__init__.py b/gi/_gobject/__init__.py
new file mode 100644 (file)
index 0000000..8184130
--- /dev/null
@@ -0,0 +1,279 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2006-2012  Johan Dahlin
+#
+#   gobject/__init__.py: initialisation file for gobject module
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+# this can go when things are a little further along
+
+import sys
+
+# we can't have pygobject 2 loaded at the same time we load the internal _gobject
+if 'gobject' in sys.modules:
+    raise ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".')
+
+from .. import _glib
+from . import _gobject
+from . import constants
+from .propertyhelper import Property
+
+GBoxed = _gobject.GBoxed
+GEnum = _gobject.GEnum
+GFlags = _gobject.GFlags
+GInterface = _gobject.GInterface
+GObject = _gobject.GObject
+GObjectWeakRef = _gobject.GObjectWeakRef
+GParamSpec = _gobject.GParamSpec
+GPointer = _gobject.GPointer
+GType = _gobject.GType
+PARAM_CONSTRUCT = _gobject.PARAM_CONSTRUCT
+PARAM_CONSTRUCT_ONLY = _gobject.PARAM_CONSTRUCT_ONLY
+PARAM_LAX_VALIDATION = _gobject.PARAM_LAX_VALIDATION
+PARAM_READABLE = _gobject.PARAM_READABLE
+PARAM_READWRITE = _gobject.PARAM_READWRITE
+PARAM_WRITABLE = _gobject.PARAM_WRITABLE
+SIGNAL_ACTION = _gobject.SIGNAL_ACTION
+SIGNAL_DETAILED = _gobject.SIGNAL_DETAILED
+SIGNAL_NO_HOOKS = _gobject.SIGNAL_NO_HOOKS
+SIGNAL_NO_RECURSE = _gobject.SIGNAL_NO_RECURSE
+SIGNAL_RUN_CLEANUP = _gobject.SIGNAL_RUN_CLEANUP
+SIGNAL_RUN_FIRST = _gobject.SIGNAL_RUN_FIRST
+SIGNAL_RUN_LAST = _gobject.SIGNAL_RUN_LAST
+TYPE_GSTRING = _gobject.TYPE_GSTRING
+TYPE_INVALID = _gobject.TYPE_INVALID
+Warning = _gobject.Warning
+_PyGObject_API = _gobject._PyGObject_API
+add_emission_hook = _gobject.add_emission_hook
+features = _gobject.features
+list_properties = _gobject.list_properties
+new = _gobject.new
+pygobject_version = _gobject.pygobject_version
+remove_emission_hook = _gobject.remove_emission_hook
+signal_accumulator_true_handled = _gobject.signal_accumulator_true_handled
+signal_list_ids = _gobject.signal_list_ids
+signal_list_names = _gobject.signal_list_names
+signal_lookup = _gobject.signal_lookup
+signal_name = _gobject.signal_name
+signal_new = _gobject.signal_new
+signal_query = _gobject.signal_query
+threads_init = _gobject.threads_init
+type_children = _gobject.type_children
+type_from_name = _gobject.type_from_name
+type_interfaces = _gobject.type_interfaces
+type_is_a = _gobject.type_is_a
+type_name = _gobject.type_name
+type_parent = _gobject.type_parent
+type_register = _gobject.type_register
+
+spawn_async = _glib.spawn_async
+idle_add = _glib.idle_add
+timeout_add = _glib.timeout_add
+timeout_add_seconds = _glib.timeout_add_seconds
+io_add_watch = _glib.io_add_watch
+source_remove = _glib.source_remove
+child_watch_add = _glib.child_watch_add
+markup_escape_text = _glib.markup_escape_text
+get_current_time = _glib.get_current_time
+filename_display_name = _glib.filename_display_name
+filename_display_basename = _glib.filename_display_basename
+filename_from_utf8 = _glib.filename_from_utf8
+get_application_name = _glib.get_application_name
+set_application_name = _glib.set_application_name
+get_prgname = _glib.get_prgname
+set_prgname = _glib.set_prgname
+main_depth = _glib.main_depth
+Pid = _glib.Pid
+GError = _glib.GError
+glib_version = _glib.glib_version
+MainLoop = _glib.MainLoop
+MainContext = _glib.MainContext
+main_context_default = _glib.main_context_default
+IOChannel = _glib.IOChannel
+Source = _glib.Source
+Idle = _glib.Idle
+Timeout = _glib.Timeout
+PollFD = _glib.PollFD
+OptionGroup = _glib.OptionGroup
+OptionContext = _glib.OptionContext
+uri_list_extract_uris = _glib.uri_list_extract_uris
+
+SPAWN_LEAVE_DESCRIPTORS_OPEN = _glib.SPAWN_LEAVE_DESCRIPTORS_OPEN
+SPAWN_DO_NOT_REAP_CHILD = _glib.SPAWN_DO_NOT_REAP_CHILD
+SPAWN_SEARCH_PATH = _glib.SPAWN_SEARCH_PATH
+SPAWN_STDOUT_TO_DEV_NULL = _glib.SPAWN_STDOUT_TO_DEV_NULL
+SPAWN_STDERR_TO_DEV_NULL = _glib.SPAWN_STDERR_TO_DEV_NULL
+SPAWN_CHILD_INHERITS_STDIN = _glib.SPAWN_CHILD_INHERITS_STDIN
+SPAWN_FILE_AND_ARGV_ZERO = _glib.SPAWN_FILE_AND_ARGV_ZERO
+PRIORITY_HIGH = _glib.PRIORITY_HIGH
+PRIORITY_DEFAULT = _glib.PRIORITY_DEFAULT
+PRIORITY_HIGH_IDLE = _glib.PRIORITY_HIGH_IDLE
+PRIORITY_DEFAULT_IDLE = _glib.PRIORITY_DEFAULT_IDLE
+PRIORITY_LOW = _glib.PRIORITY_LOW
+IO_IN = _glib.IO_IN
+IO_OUT = _glib.IO_OUT
+IO_PRI = _glib.IO_PRI
+IO_ERR = _glib.IO_ERR
+IO_HUP = _glib.IO_HUP
+IO_NVAL = _glib.IO_NVAL
+IO_STATUS_ERROR = _glib.IO_STATUS_ERROR
+IO_STATUS_NORMAL = _glib.IO_STATUS_NORMAL
+IO_STATUS_EOF = _glib.IO_STATUS_EOF
+IO_STATUS_AGAIN = _glib.IO_STATUS_AGAIN
+IO_FLAG_APPEND = _glib.IO_FLAG_APPEND
+IO_FLAG_NONBLOCK = _glib.IO_FLAG_NONBLOCK
+IO_FLAG_IS_READABLE = _glib.IO_FLAG_IS_READABLE
+IO_FLAG_IS_WRITEABLE = _glib.IO_FLAG_IS_WRITEABLE
+IO_FLAG_IS_SEEKABLE = _glib.IO_FLAG_IS_SEEKABLE
+IO_FLAG_MASK = _glib.IO_FLAG_MASK
+IO_FLAG_GET_MASK = _glib.IO_FLAG_GET_MASK
+IO_FLAG_SET_MASK = _glib.IO_FLAG_SET_MASK
+OPTION_FLAG_HIDDEN = _glib.OPTION_FLAG_HIDDEN
+OPTION_FLAG_IN_MAIN = _glib.OPTION_FLAG_IN_MAIN
+OPTION_FLAG_REVERSE = _glib.OPTION_FLAG_REVERSE
+OPTION_FLAG_NO_ARG = _glib.OPTION_FLAG_NO_ARG
+OPTION_FLAG_FILENAME = _glib.OPTION_FLAG_FILENAME
+OPTION_FLAG_OPTIONAL_ARG = _glib.OPTION_FLAG_OPTIONAL_ARG
+OPTION_FLAG_NOALIAS = _glib.OPTION_FLAG_NOALIAS
+OPTION_ERROR_UNKNOWN_OPTION = _glib.OPTION_ERROR_UNKNOWN_OPTION
+OPTION_ERROR_BAD_VALUE = _glib.OPTION_ERROR_BAD_VALUE
+OPTION_ERROR_FAILED = _glib.OPTION_ERROR_FAILED
+OPTION_REMAINING = _glib.OPTION_REMAINING
+OPTION_ERROR = _glib.OPTION_ERROR
+
+TYPE_NONE = constants.TYPE_NONE
+TYPE_INTERFACE = constants.TYPE_INTERFACE
+TYPE_CHAR = constants.TYPE_CHAR
+TYPE_UCHAR = constants.TYPE_UCHAR
+TYPE_BOOLEAN = constants.TYPE_BOOLEAN
+TYPE_INT = constants.TYPE_INT
+TYPE_UINT = constants.TYPE_UINT
+TYPE_LONG = constants.TYPE_LONG
+TYPE_ULONG = constants.TYPE_ULONG
+TYPE_INT64 = constants.TYPE_INT64
+TYPE_UINT64 = constants.TYPE_UINT64
+TYPE_ENUM = constants.TYPE_ENUM
+TYPE_FLAGS = constants.TYPE_FLAGS
+TYPE_FLOAT = constants.TYPE_FLOAT
+TYPE_DOUBLE = constants.TYPE_DOUBLE
+TYPE_STRING = constants.TYPE_STRING
+TYPE_POINTER = constants.TYPE_POINTER
+TYPE_BOXED = constants.TYPE_BOXED
+TYPE_PARAM = constants.TYPE_PARAM
+TYPE_OBJECT = constants.TYPE_OBJECT
+TYPE_PYOBJECT = constants.TYPE_PYOBJECT
+TYPE_GTYPE = constants.TYPE_GTYPE
+TYPE_UNICHAR = constants.TYPE_UNICHAR
+G_MINFLOAT = constants.G_MINFLOAT
+G_MAXFLOAT = constants.G_MAXFLOAT
+G_MINDOUBLE = constants.G_MINDOUBLE
+G_MAXDOUBLE = constants.G_MAXDOUBLE
+G_MINSHORT = constants.G_MINSHORT
+G_MAXSHORT = constants.G_MAXSHORT
+G_MAXUSHORT = constants.G_MAXUSHORT
+G_MININT = constants.G_MININT
+G_MAXINT = constants.G_MAXINT
+G_MAXUINT = constants.G_MAXUINT
+G_MINLONG = constants.G_MINLONG
+G_MAXLONG = constants.G_MAXLONG
+G_MAXULONG = constants.G_MAXULONG
+G_MININT8 = constants.G_MININT8
+G_MAXINT8 = constants.G_MAXINT8
+G_MAXUINT8 = constants.G_MAXUINT8
+G_MININT16 = constants.G_MININT16
+G_MAXINT16 = constants.G_MAXINT16
+G_MAXUINT16 = constants.G_MAXUINT16
+G_MININT32 = constants.G_MININT32
+G_MAXINT32 = constants.G_MAXINT32
+G_MAXUINT32 = constants.G_MAXUINT32
+G_MININT64 = constants.G_MININT64
+G_MAXINT64 = constants.G_MAXINT64
+G_MAXUINT64 = constants.G_MAXUINT64
+G_MAXSIZE = constants.G_MAXSIZE
+G_MAXSSIZE = constants.G_MAXSSIZE
+G_MINOFFSET = constants.G_MINOFFSET
+G_MAXOFFSET = constants.G_MAXOFFSET
+
+from .._glib import option
+sys.modules['gi._gobject.option'] = option
+
+
+class GObjectMeta(type):
+    "Metaclass for automatically registering GObject classes"
+    def __init__(cls, name, bases, dict_):
+        type.__init__(cls, name, bases, dict_)
+        cls._install_properties()
+        cls._type_register(cls.__dict__)
+
+    def _install_properties(cls):
+        gproperties = getattr(cls, '__gproperties__', {})
+
+        props = []
+        for name, prop in cls.__dict__.items():
+            if isinstance(prop, Property):  # not same as the built-in
+                if name in gproperties:
+                    raise ValueError
+                prop.name = name
+                gproperties[name] = prop.get_pspec_args()
+                props.append(prop)
+
+        if not props:
+            return
+
+        cls.__gproperties__ = gproperties
+
+        if ('do_get_property' in cls.__dict__ or
+            'do_set_property' in cls.__dict__):
+            for prop in props:
+                if (prop.fget != prop._default_getter or
+                    prop.fset != prop._default_setter):
+                    raise TypeError(
+                        "GObject subclass %r defines do_get/set_property"
+                        " and it also uses a property with a custom setter"
+                        " or getter. This is not allowed" % (
+                        cls.__name__,))
+
+        def obj_get_property(self, pspec):
+            name = pspec.name.replace('-', '_')
+            prop = getattr(cls, name, None)
+            if prop:
+                return prop.fget(self)
+        cls.do_get_property = obj_get_property
+
+        def obj_set_property(self, pspec, value):
+            name = pspec.name.replace('-', '_')
+            prop = getattr(cls, name, None)
+            if prop:
+                prop.fset(self, value)
+        cls.do_set_property = obj_set_property
+
+    def _type_register(cls, namespace):
+        ## don't register the class if already registered
+        if '__gtype__' in namespace:
+            return
+
+        # Do not register a new GType for the overrides, as this would sort of
+        # defeat the purpose of overrides...
+        if cls.__module__.startswith('gi.overrides.'):
+            return
+
+        type_register(cls, namespace.get('__gtype_name__'))
+
+_gobject._install_metaclass(GObjectMeta)
+
+# Deprecated naming still available for backwards compatibility.
+property = Property
diff --git a/gi/_gobject/constants.py b/gi/_gobject/constants.py
new file mode 100644 (file)
index 0000000..45234bc
--- /dev/null
@@ -0,0 +1,80 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2006-2007 Johan Dahlin
+#
+#   gobject/constants.py: GObject type constants
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+from . import _gobject
+
+# TYPE_INVALID defined in gobjectmodule.c
+TYPE_NONE = _gobject.type_from_name('void')
+TYPE_INTERFACE = _gobject.type_from_name('GInterface')
+TYPE_CHAR = _gobject.type_from_name('gchar')
+TYPE_UCHAR = _gobject.type_from_name('guchar')
+TYPE_BOOLEAN = _gobject.type_from_name('gboolean')
+TYPE_INT = _gobject.type_from_name('gint')
+TYPE_UINT = _gobject.type_from_name('guint')
+TYPE_LONG = _gobject.type_from_name('glong')
+TYPE_ULONG = _gobject.type_from_name('gulong')
+TYPE_INT64 = _gobject.type_from_name('gint64')
+TYPE_UINT64 = _gobject.type_from_name('guint64')
+TYPE_ENUM = _gobject.type_from_name('GEnum')
+TYPE_FLAGS = _gobject.type_from_name('GFlags')
+TYPE_FLOAT = _gobject.type_from_name('gfloat')
+TYPE_DOUBLE = _gobject.type_from_name('gdouble')
+TYPE_STRING = _gobject.type_from_name('gchararray')
+TYPE_POINTER = _gobject.type_from_name('gpointer')
+TYPE_BOXED = _gobject.type_from_name('GBoxed')
+TYPE_PARAM = _gobject.type_from_name('GParam')
+TYPE_OBJECT = _gobject.type_from_name('GObject')
+TYPE_PYOBJECT = _gobject.type_from_name('PyObject')
+TYPE_GTYPE = _gobject.type_from_name('GType')
+TYPE_UNICHAR = TYPE_UINT
+
+# do a little dance to maintain API compatibility
+# as these were origianally defined here, and are
+# now defined in gobjectmodule.c
+G_MINFLOAT = _gobject.G_MINFLOAT
+G_MAXFLOAT = _gobject.G_MAXFLOAT
+G_MINDOUBLE = _gobject.G_MINDOUBLE
+G_MAXDOUBLE = _gobject.G_MAXDOUBLE
+G_MINSHORT = _gobject.G_MINSHORT
+G_MAXSHORT = _gobject.G_MAXSHORT
+G_MAXUSHORT = _gobject.G_MAXUSHORT
+G_MININT = _gobject.G_MININT
+G_MAXINT = _gobject.G_MAXINT
+G_MAXUINT = _gobject.G_MAXUINT
+G_MINLONG = _gobject.G_MINLONG
+G_MAXLONG = _gobject.G_MAXLONG
+G_MAXULONG = _gobject.G_MAXULONG
+G_MININT8 = _gobject.G_MININT8
+G_MAXINT8 = _gobject.G_MAXINT8
+G_MAXUINT8 = _gobject.G_MAXUINT8
+G_MININT16 = _gobject.G_MININT16
+G_MAXINT16 = _gobject.G_MAXINT16
+G_MAXUINT16 = _gobject.G_MAXUINT16
+G_MININT32 = _gobject.G_MININT32
+G_MAXINT32 = _gobject.G_MAXINT32
+G_MAXUINT32 = _gobject.G_MAXUINT32
+G_MININT64 = _gobject.G_MININT64
+G_MAXINT64 = _gobject.G_MAXINT64
+G_MAXUINT64 = _gobject.G_MAXUINT64
+G_MAXSIZE = _gobject.G_MAXSIZE
+G_MAXSSIZE = _gobject.G_MAXSSIZE
+G_MINOFFSET = _gobject.G_MINOFFSET
+G_MAXOFFSET = _gobject.G_MAXOFFSET
similarity index 64%
rename from gi/gobjectmodule.c
rename to gi/_gobject/gobjectmodule.c
index ba1b9fc..0d75b7e 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
 
-#include <Python.h>
 #include <gobject/gvaluecollector.h>
 #include <girepository.h>
 #include <pyglib.h>
 #include <pythread.h>
-#include "gobjectmodule.h"
+#include "pygobject-private.h"
 #include "pygboxed.h"
 #include "pygenum.h"
 #include "pygflags.h"
 #include "pygparamspec.h"
 #include "pygpointer.h"
 #include "pygtype.h"
-#include "pygoptiongroup.h"
-#include "pygobject-object.h"
-
-#include "pygi-value.h"
-#include "pygi-error.h"
-#include "pygi-property.h"
 
+static PyObject *_pyg_signal_accumulator_true_handled_func;
 static GHashTable *log_handlers = NULL;
 static gboolean log_handlers_disabled = FALSE;
 
 static void pyg_flags_add_constants(PyObject *module, GType flags_type,
                                    const gchar *strip_prefix);
 
-static int pyg_type_register(PyTypeObject *class, const char *type_name);
 
 /* -------------- GDK threading hooks ---------------------------- */
 
 /**
  * pyg_set_thread_block_funcs:
- * Deprecated, only available for ABI compatibility.
+ * @block_threads_func: a function to block Python threads.
+ * @unblock_threads_func: a function to unblock Python threads.
+ *
+ * an interface to allow pygtk to add hooks to handle threading
+ * similar to the old PyGTK 0.6.x releases.  May not work quite right
+ * anymore.
  */
 static void
-_pyg_set_thread_block_funcs (PyGThreadBlockFunc block_threads_func,
-                            PyGThreadBlockFunc unblock_threads_func)
+pyg_set_thread_block_funcs (PyGThreadBlockFunc block_threads_func,
+                           PyGThreadBlockFunc unblock_threads_func)
 {
-    PyGILState_STATE state = PyGILState_Ensure ();
-    PyErr_Warn (PyExc_DeprecationWarning,
-                "Using pyg_set_thread_block_funcs is not longer needed. "
-                "PyGObject always uses Py_BLOCK/UNBLOCK_THREADS.");
-    PyGILState_Release (state);
+    g_return_if_fail(pygobject_api_functions.block_threads == NULL &&
+                    pygobject_api_functions.unblock_threads == NULL);
+
+    pygobject_api_functions.block_threads   = block_threads_func;
+    pygobject_api_functions.unblock_threads = unblock_threads_func;
+    pyglib_set_thread_block_funcs(block_threads_func,
+                                 unblock_threads_func);
 }
 
 /**
@@ -74,21 +76,21 @@ _pyg_set_thread_block_funcs (PyGThreadBlockFunc block_threads_func,
  * A function that can be used as a GDestroyNotify callback that will
  * call Py_DECREF on the data.
  */
-static void
+void
 pyg_destroy_notify(gpointer user_data)
 {
     PyObject *obj = (PyObject *)user_data;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
     Py_DECREF(obj);
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 
 /* ---------------- gobject module functions -------------------- */
 
-PyObject *
+static PyObject *
 pyg_type_name (PyObject *self, PyObject *args)
 {
     PyObject *gtype;
@@ -113,12 +115,11 @@ pyg_type_name (PyObject *self, PyObject *args)
     return NULL;
 }
 
-PyObject *
+static PyObject *
 pyg_type_from_name (PyObject *self, PyObject *args)
 {
     const gchar *name;
     GType type;
-    PyObject *repr = NULL;
 #if 0
     if (PyErr_Warn(PyExc_DeprecationWarning,
                   "gobject.type_from_name is deprecated; "
@@ -127,18 +128,38 @@ pyg_type_from_name (PyObject *self, PyObject *args)
 #endif
     if (!PyArg_ParseTuple(args, "s:gobject.type_from_name", &name))
        return NULL;
-    type = g_type_from_name(name);
+    type = _pyg_type_from_name(name);
     if (type != 0)
        return pyg_type_wrapper_new(type);
-    repr = PyObject_Repr((PyObject*)self);
     PyErr_Format(PyExc_RuntimeError, "%s: unknown type name: %s",
-         PYGLIB_PyUnicode_AsString(repr),
+         PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
                 name);
-    Py_DECREF(repr);
     return NULL;
 }
 
-PyObject *
+static PyObject *
+pyg_type_parent (PyObject *self, PyObject *args)
+{
+    PyObject *gtype;
+    GType type, parent;
+#if 0
+    if (PyErr_Warn(PyExc_DeprecationWarning,
+                  "gobject.type_parent is deprecated; "
+                  "use GType.parent instead"))
+        return NULL;
+#endif
+    if (!PyArg_ParseTuple(args, "O:gobject.type_parent", &gtype))
+       return NULL;
+    if ((type = pyg_type_from_object(gtype)) == 0)
+       return NULL;
+    parent = g_type_parent(type);
+    if (parent != 0)
+       return pyg_type_wrapper_new(parent);
+    PyErr_SetString(PyExc_RuntimeError, "no parent for type");
+    return NULL;
+}
+
+static PyObject *
 pyg_type_is_a (PyObject *self, PyObject *args)
 {
     PyObject *gtype, *gparent;
@@ -158,6 +179,68 @@ pyg_type_is_a (PyObject *self, PyObject *args)
     return PyBool_FromLong(g_type_is_a(type, parent));
 }
 
+static PyObject *
+pyg_type_children (PyObject *self, PyObject *args)
+{
+    PyObject *gtype, *list;
+    GType type, *children;
+    guint n_children, i;
+#if 0
+    if (PyErr_Warn(PyExc_DeprecationWarning,
+                  "gobject.type_children is deprecated; "
+                  "use GType.children instead"))
+        return NULL;
+#endif
+    if (!PyArg_ParseTuple(args, "O:gobject.type_children", &gtype))
+       return NULL;
+    if ((type = pyg_type_from_object(gtype)) == 0)
+       return NULL;
+    children = g_type_children(type, &n_children);
+    if (children) {
+        list = PyList_New(0);
+       for (i = 0; i < n_children; i++) {
+           PyObject *o;
+           PyList_Append(list, o=pyg_type_wrapper_new(children[i]));
+           Py_DECREF(o);
+       }
+       g_free(children);
+       return list;
+    }
+    PyErr_SetString(PyExc_RuntimeError, "invalid type, or no children");
+    return NULL;
+}
+
+static PyObject *
+pyg_type_interfaces (PyObject *self, PyObject *args)
+{
+    PyObject *gtype, *list;
+    GType type, *interfaces;
+    guint n_interfaces, i;
+#if 0
+    if (PyErr_Warn(PyExc_DeprecationWarning,
+                  "gobject.type_interfaces is deprecated; "
+                  "use GType.interfaces instead"))
+        return NULL;
+#endif
+    if (!PyArg_ParseTuple(args, "O:gobject.type_interfaces", &gtype))
+       return NULL;
+    if ((type = pyg_type_from_object(gtype)) == 0)
+       return NULL;
+    interfaces = g_type_interfaces(type, &n_interfaces);
+    if (interfaces) {
+        list = PyList_New(0);
+       for (i = 0; i < n_interfaces; i++) {
+           PyObject *o;
+           PyList_Append(list, o=pyg_type_wrapper_new(interfaces[i]));
+           Py_DECREF(o);
+       }
+       g_free(interfaces);
+       return list;
+    }
+    PyErr_SetString(PyExc_RuntimeError, "invalid type, or no interfaces");
+    return NULL;
+}
+
 static void
 pyg_object_set_property (GObject *object, guint property_id,
                         const GValue *value, GParamSpec *pspec)
@@ -166,12 +249,12 @@ pyg_object_set_property (GObject *object, guint property_id,
     PyObject *py_pspec, *py_value;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     object_wrapper = pygobject_new(object);
 
     if (object_wrapper == NULL) {
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return;
     }
 
@@ -190,7 +273,7 @@ pyg_object_set_property (GObject *object, guint property_id,
     Py_DECREF(py_pspec);
     Py_DECREF(py_value);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 static void
@@ -198,25 +281,36 @@ pyg_object_get_property (GObject *object, guint property_id,
                         GValue *value, GParamSpec *pspec)
 {
     PyObject *object_wrapper, *retval;
+    PyObject *py_pspec;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     object_wrapper = pygobject_new(object);
 
     if (object_wrapper == NULL) {
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return;
     }
 
-    retval = pygi_call_do_get_property (object_wrapper, pspec);
-    if (retval && pyg_value_from_pyobject (value, retval) < 0) {
-        PyErr_Print();
+    py_pspec = pyg_param_spec_new(pspec);
+    retval = PyObject_CallMethod(object_wrapper, "do_get_property",
+                                "O", py_pspec);
+    if (retval == NULL || pyg_value_from_pyobject(value, retval) < 0) {
+       PyErr_Print();
     }
     Py_DECREF(object_wrapper);
+    Py_DECREF(py_pspec);
     Py_XDECREF(retval);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
+}
+
+static void
+pyg_object_class_init(GObjectClass *class, PyObject *py_class)
+{
+    class->set_property = pyg_object_set_property;
+    class->get_property = pyg_object_get_property;
 }
 
 typedef struct _PyGSignalAccumulatorData {
@@ -236,7 +330,7 @@ _pyg_signal_accumulator(GSignalInvocationHint *ihint,
     PyGSignalAccumulatorData *data = _data;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
     if (ihint->detail)
         py_detail = PYGLIB_PyUnicode_FromString(g_quark_to_string(ihint->detail));
     else {
@@ -270,7 +364,7 @@ _pyg_signal_accumulator(GSignalInvocationHint *ihint,
         }
         Py_DECREF(py_retval);
     }
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
     return retval;
 }
 
@@ -334,13 +428,17 @@ create_signal (GType instance_type, const gchar *signal_name, PyObject *tuple)
        Py_DECREF(item);
     }
 
-    if (py_accum != NULL && py_accum != Py_None) {
-        accum_data = g_new(PyGSignalAccumulatorData, 1);
-        accum_data->callable = py_accum;
-        Py_INCREF(py_accum);
-        accum_data->user_data = py_accum_data;
-        Py_XINCREF(py_accum_data);
-        accumulator = _pyg_signal_accumulator;
+    if (py_accum == _pyg_signal_accumulator_true_handled_func)
+        accumulator = g_signal_accumulator_true_handled;
+    else {
+        if (py_accum != NULL && py_accum != Py_None) {
+            accum_data = g_new(PyGSignalAccumulatorData, 1);
+            accum_data->callable = py_accum;
+            Py_INCREF(py_accum);
+            accum_data->user_data = py_accum_data;
+            Py_XINCREF(py_accum_data);
+            accumulator = _pyg_signal_accumulator;
+        }
     }
 
     signal_id = g_signal_newv(signal_name, instance_type, signal_flags,
@@ -380,14 +478,15 @@ override_signal(GType instance_type, const gchar *signal_name)
 }
 
 static PyObject *
-add_signals (GObjectClass *klass, PyObject *signals)
+add_signals (GType instance_type, PyObject *signals)
 {
     gboolean ret = TRUE;
+    GObjectClass *oclass;
     Py_ssize_t pos = 0;
     PyObject *key, *value, *overridden_signals = NULL;
-    GType instance_type = G_OBJECT_CLASS_TYPE (klass);
 
     overridden_signals = PyDict_New();
+    oclass = g_type_class_ref(instance_type);
     while (PyDict_Next(signals, &pos, &key, &value)) {
        const gchar *signal_name;
         gchar *signal_name_canon, *c;
@@ -425,6 +524,7 @@ add_signals (GObjectClass *klass, PyObject *signals)
        if (!ret)
            break;
     }
+    g_type_class_unref(oclass);
     if (ret)
         return overridden_signals;
     else {
@@ -567,7 +667,7 @@ create_property (const gchar  *prop_name,
                return NULL;
 
            if (pyg_flags_get_value(prop_type, pydefault,
-                                   &default_value))
+                                   (gint *)&default_value))
                return NULL;
 
            pspec = g_param_spec_flags (prop_name, nick, blurb,
@@ -625,23 +725,10 @@ create_property (const gchar  *prop_name,
            pspec = g_param_spec_pointer (prop_name, nick, blurb, flags);
        break;
     case G_TYPE_OBJECT:
-    case G_TYPE_INTERFACE:
        if (!PyArg_ParseTuple(args, ""))
            return NULL;
        pspec = g_param_spec_object (prop_name, nick, blurb, prop_type, flags);
        break;
-    case G_TYPE_VARIANT:
-       {
-           PyObject *pydefault;
-            GVariant *default_value = NULL;
-
-           if (!PyArg_ParseTuple(args, "O", &pydefault))
-               return NULL;
-            if (pydefault != Py_None)
-                default_value = pyg_boxed_get (pydefault, GVariant);
-           pspec = g_param_spec_variant (prop_name, nick, blurb, G_VARIANT_TYPE_ANY, default_value, flags);
-       }
-       break;
     default:
        /* unhandled pspec type ... */
        break;
@@ -659,7 +746,7 @@ create_property (const gchar  *prop_name,
     return pspec;
 }
 
-static GParamSpec *
+GParamSpec *
 pyg_param_spec_from_object (PyObject *tuple)
 {
     gint val_length;
@@ -710,12 +797,14 @@ pyg_param_spec_from_object (PyObject *tuple)
 }
 
 static gboolean
-add_properties (GObjectClass *klass, PyObject *properties)
+add_properties (GType instance_type, PyObject *properties)
 {
     gboolean ret = TRUE;
+    GObjectClass *oclass;
     Py_ssize_t pos = 0;
     PyObject *key, *value;
 
+    oclass = g_type_class_ref(instance_type);
     while (PyDict_Next(properties, &pos, &key, &value)) {
        const gchar *prop_name;
        GType prop_type;
@@ -781,82 +870,30 @@ add_properties (GObjectClass *klass, PyObject *properties)
        Py_DECREF(slice);
 
        if (pspec) {
-           g_object_class_install_property(klass, 1, pspec);
+           g_object_class_install_property(oclass, 1, pspec);
        } else {
-            PyObject *type, *pvalue, *traceback;
+            PyObject *type, *value, *traceback;
            ret = FALSE;
-            PyErr_Fetch(&type, &pvalue, &traceback);
-            if (PYGLIB_PyUnicode_Check(pvalue)) {
+            PyErr_Fetch(&type, &value, &traceback);
+            if (PYGLIB_PyUnicode_Check(value)) {
                 char msg[256];
                 g_snprintf(msg, 256,
                           "%s (while registering property '%s' for GType '%s')",
-               PYGLIB_PyUnicode_AsString(pvalue),
-                          prop_name, G_OBJECT_CLASS_NAME(klass));
-                Py_DECREF(pvalue);
+               PYGLIB_PyUnicode_AsString(value),
+                          prop_name, g_type_name(instance_type));
+                Py_DECREF(value);
                 value = PYGLIB_PyUnicode_FromString(msg);
             }
-            PyErr_Restore(type, pvalue, traceback);
+            PyErr_Restore(type, value, traceback);
            break;
        }
     }
 
+    g_type_class_unref(oclass);
     return ret;
 }
 
 static void
-pyg_object_class_init(GObjectClass *class, PyObject *py_class)
-{
-    PyObject *gproperties, *gsignals, *overridden_signals;
-    PyObject *class_dict = ((PyTypeObject*) py_class)->tp_dict;
-
-    class->set_property = pyg_object_set_property;
-    class->get_property = pyg_object_get_property;
-
-    /* install signals */
-    /* we look this up in the instance dictionary, so we don't
-     * accidentally get a parent type's __gsignals__ attribute. */
-    gsignals = PyDict_GetItemString(class_dict, "__gsignals__");
-    if (gsignals) {
-       if (!PyDict_Check(gsignals)) {
-           PyErr_SetString(PyExc_TypeError,
-                           "__gsignals__ attribute not a dict!");
-           return;
-       }
-       if (!(overridden_signals = add_signals(class, gsignals))) {
-           return;
-       }
-        if (PyDict_SetItemString(class_dict, "__gsignals__",
-                                overridden_signals)) {
-            return;
-        }
-        Py_DECREF(overridden_signals);
-
-        PyDict_DelItemString(class_dict, "__gsignals__");
-    } else {
-       PyErr_Clear();
-    }
-
-    /* install properties */
-    /* we look this up in the instance dictionary, so we don't
-     * accidentally get a parent type's __gproperties__ attribute. */
-    gproperties = PyDict_GetItemString(class_dict, "__gproperties__");
-    if (gproperties) {
-       if (!PyDict_Check(gproperties)) {
-           PyErr_SetString(PyExc_TypeError,
-                           "__gproperties__ attribute not a dict!");
-           return;
-       }
-       if (!add_properties(class, gproperties)) {
-           return;
-       }
-       PyDict_DelItemString(class_dict, "__gproperties__");
-       /* Borrowed reference. Py_DECREF(gproperties); */
-    } else {
-       PyErr_Clear();
-    }
-}
-
-static void
 pyg_register_class_init(GType gtype, PyGClassInitFunc class_init)
 {
     GSList *list;
@@ -892,7 +929,7 @@ pyg_run_class_init(GType gtype, gpointer gclass, PyTypeObject *pyclass)
     return 0;
 }
 
-PyObject *
+static PyObject *
 _wrap_pyg_type_register(PyObject *self, PyObject *args)
 {
     PyTypeObject *class;
@@ -933,7 +970,7 @@ get_type_name_for_class(PyTypeObject *class)
     while (name_serial < 1000)
     {
        g_free(type_name);
-       g_snprintf(name_serial_str, 16, "-v%i", name_serial);
+       snprintf(name_serial_str, 16, "-v%i", name_serial);
        module = PyObject_GetAttrString((PyObject *)class, "__module__");
        if (module && PYGLIB_PyUnicode_Check(module)) {
            type_name = g_strconcat(PYGLIB_PyUnicode_AsString(module), ".",
@@ -954,7 +991,7 @@ get_type_name_for_class(PyTypeObject *class)
        for (i = 0; type_name[i] != '\0'; i++)
            if (type_name[i] == '.')
                type_name[i] = '+';
-       if (g_type_from_name(type_name) == 0)
+       if (_pyg_type_from_name(type_name) == 0)
            break;              /* we now have a unique name */
        ++name_serial;
     }
@@ -963,18 +1000,18 @@ get_type_name_for_class(PyTypeObject *class)
 }
 
 
-static GPrivate pygobject_construction_wrapper;
+static GStaticPrivate pygobject_construction_wrapper = G_STATIC_PRIVATE_INIT;
 
 static inline void
 pygobject_init_wrapper_set(PyObject *wrapper)
 {
-    g_private_set(&pygobject_construction_wrapper, wrapper);
+    g_static_private_set(&pygobject_construction_wrapper, wrapper, NULL);
 }
 
 static inline PyObject *
 pygobject_init_wrapper_get(void)
 {
-    return (PyObject *) g_private_get(&pygobject_construction_wrapper);
+    return (PyObject *) g_static_private_get(&pygobject_construction_wrapper);
 }
 
 int
@@ -982,22 +1019,24 @@ pygobject_constructv(PyGObject  *self,
                      guint       n_parameters,
                      GParameter *parameters)
 {
-    GObject *obj;
-
-    g_assert (self->obj == NULL);
-    pygobject_init_wrapper_set((PyObject *) self);
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-    obj = g_object_newv(pyg_type_from_object((PyObject *) self),
-                        n_parameters, parameters);
-G_GNUC_END_IGNORE_DEPRECATIONS
-    if (g_object_is_floating (obj))
-        self->private_flags.flags |= PYGOBJECT_GOBJECT_WAS_FLOATING;
-    pygobject_sink (obj);
-
-    pygobject_init_wrapper_set(NULL);
-    self->obj = obj;
-    pygobject_register_wrapper((PyObject *) self);
-
+    if (self->obj == NULL) {
+        GObject *obj;
+        pygobject_init_wrapper_set((PyObject *) self);
+        obj = g_object_newv(pyg_type_from_object((PyObject *) self),
+                            n_parameters, parameters);
+        pygobject_sink (obj);
+        pygobject_init_wrapper_set(NULL);
+        if (self->obj == NULL) {
+            self->obj = obj;
+            pygobject_register_wrapper((PyObject *) self);
+        }
+    } else {
+        int i;
+        for (i = 0; i < n_parameters; ++i)
+            g_object_set_property(self->obj,
+                                 parameters[i].name,
+                                 &parameters[i].value);
+    }
     return 0;
 }
 
@@ -1022,10 +1061,8 @@ pygobject__g_instance_init(GTypeInstance   *instance,
            * g_object_new -> we have no python wrapper, so create it
            * now */
         PyGILState_STATE state;
-        state = PyGILState_Ensure();
-        wrapper = pygobject_new_full(object,
-                                     /*steal=*/ FALSE,
-                                     g_class);
+        state = pyglib_gil_state_ensure();
+        wrapper = pygobject_new_full(object, FALSE, g_class);
 
         /* float the wrapper ref here because we are going to orphan it
          * so we don't destroy the wrapper. The next call to pygobject_new_full
@@ -1038,7 +1075,7 @@ pygobject__g_instance_init(GTypeInstance   *instance,
 
         Py_DECREF(args);
         Py_DECREF(kwargs);
-        PyGILState_Release(state);
+        pyglib_gil_state_release(state);
     }
 }
 
@@ -1055,7 +1092,7 @@ pygobject__g_instance_init(GTypeInstance   *instance,
  */
 static void
 pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
-                        PyObject *bases,
+                        PyObject *bases, gboolean new_interfaces,
                         GType *parent_interfaces, guint n_parent_interfaces)
 {
     int i;
@@ -1066,8 +1103,10 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
     }
 
     for (i = 0; i < PyTuple_GET_SIZE(bases); ++i) {
+        guint k;
         PyObject *base = PyTuple_GET_ITEM(bases, i);
         GType itype;
+        gboolean is_new = TRUE;
         const GInterfaceInfo *iinfo;
         GInterfaceInfo iinfo_copy;
 
@@ -1084,6 +1123,16 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
         if (!G_TYPE_IS_INTERFACE(itype))
             continue;
 
+        for (k = 0; k < n_parent_interfaces; ++k) {
+            if (parent_interfaces[k] == itype) {
+                is_new = FALSE;
+                break;
+            }
+        }
+
+        if ((new_interfaces && !is_new) || (!new_interfaces && is_new))
+            continue;
+
         iinfo = pyg_lookup_interface_info(itype);
         if (!iinfo) {
             gchar *error;
@@ -1101,10 +1150,10 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
     }
 }
 
-static int
+int
 pyg_type_register(PyTypeObject *class, const char *type_name)
 {
-    PyObject *gtype;
+    PyObject *gtype, *gsignals, *gproperties, *overridden_signals;
     GType parent_type, instance_type;
     GType *parent_interfaces;
     guint n_parent_interfaces;
@@ -1170,10 +1219,6 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     g_type_set_qdata(instance_type, g_quark_from_string("PyGObject::class"),
                     class);
 
-    /* Mark this GType as a custom python type */
-    g_type_set_qdata(instance_type, pygobject_custom_key,
-                     GINT_TO_POINTER (1));
-
     /* set new value of __gtype__ on class */
     gtype = pyg_type_wrapper_new(instance_type);
     PyObject_SetAttrString((PyObject *)class, "__gtype__", gtype);
@@ -1186,22 +1231,88 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     }
 
     /*
-     * Note, all interfaces need to be registered before the first
-     * g_type_class_ref(), see bug #686149.
+     * Note: Interfaces to be implemented are searched twice.  First
+     * we register interfaces that are already implemented by a parent
+     * type.  The second time, the remaining interfaces are
+     * registered, i.e. the ones that are not implemented by a parent
+     * type.  In between these two loops, properties and signals are
+     * registered.  It has to be done this way, in two steps,
+     * otherwise glib will complain.  If registering all interfaces
+     * always before properties, you get an error like:
+     *
+     *    ../gobject:121: Warning: Object class
+     *    test_interface+MyObject doesn't implement property
+     *    'some-property' from interface 'TestInterface'
+     *
+     * If, on the other hand, you register interfaces after
+     * registering the properties, you get something like:
+     *
+     *     ../gobject:121: Warning: cannot add interface type
+     *    `TestInterface' to type `test_interface+MyUnknown', since
+     *    type `test_interface+MyUnknown' already conforms to
+     *    interface
+     *
+     * This looks like a GLib quirk, but no bug has been filed
+     * upstream.  However we have a unit test for this particular
+     * problem, which can be found in test_interfaces.py, class
+     * TestInterfaceImpl.
      *
      * See also comment above pyg_type_add_interfaces().
      */
-    pyg_type_add_interfaces(class, instance_type, class->tp_bases,
+    pyg_type_add_interfaces(class, instance_type, class->tp_bases, FALSE,
                             parent_interfaces, n_parent_interfaces);
 
+    /* we look this up in the instance dictionary, so we don't
+     * accidentally get a parent type's __gsignals__ attribute. */
+    gsignals = PyDict_GetItemString(class->tp_dict, "__gsignals__");
+    if (gsignals) {
+       if (!PyDict_Check(gsignals)) {
+           PyErr_SetString(PyExc_TypeError,
+                           "__gsignals__ attribute not a dict!");
+            g_free(parent_interfaces);
+           return -1;
+       }
+       if (!(overridden_signals = add_signals(instance_type, gsignals))) {
+            g_free(parent_interfaces);
+           return -1;
+       }
+        if (PyDict_SetItemString(class->tp_dict, "__gsignals__",
+                                overridden_signals)) {
+            g_free(parent_interfaces);
+            return -1;
+        }
+        Py_DECREF(overridden_signals);
+    } else {
+       PyErr_Clear();
+    }
 
-    gclass = g_type_class_ref(instance_type);
-    if (PyErr_Occurred() != NULL) {
-        g_type_class_unref(gclass);
-        g_free(parent_interfaces);
-        return -1;
+    /* we look this up in the instance dictionary, so we don't
+     * accidentally get a parent type's __gsignals__ attribute. */
+    gproperties = PyDict_GetItemString(class->tp_dict, "__gproperties__");
+    if (gproperties) {
+       if (!PyDict_Check(gproperties)) {
+           PyErr_SetString(PyExc_TypeError,
+                           "__gproperties__ attribute not a dict!");
+            g_free(parent_interfaces);
+           return -1;
+       }
+       if (!add_properties(instance_type, gproperties)) {
+            g_free(parent_interfaces);
+           return -1;
+       }
+       PyDict_DelItemString(class->tp_dict, "__gproperties__");
+       /* Borrowed reference. Py_DECREF(gproperties); */
+    } else {
+       PyErr_Clear();
     }
 
+    /* Register new interfaces, that are _not_ already defined by
+     * the parent type.  FIXME: See above.
+     */
+    pyg_type_add_interfaces(class, instance_type, class->tp_bases, TRUE,
+                            parent_interfaces, n_parent_interfaces);
+
+    gclass = g_type_class_ref(instance_type);
     if (pyg_run_class_init(instance_type, gclass, class)) {
         g_type_class_unref(gclass);
         g_free(parent_interfaces);
@@ -1210,12 +1321,13 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     g_type_class_unref(gclass);
     g_free(parent_interfaces);
 
-    if (PyErr_Occurred() != NULL)
-        return -1;
+    if (gsignals)
+        PyDict_DelItemString(class->tp_dict, "__gsignals__");
+
     return 0;
 }
 
-PyObject *
+static PyObject *
 pyg_signal_new(PyObject *self, PyObject *args)
 {
     gchar *signal_name;
@@ -1282,7 +1394,259 @@ pyg_signal_new(PyObject *self, PyObject *args)
     return NULL;
 }
 
-PyObject *
+static PyObject *
+pyg_signal_list_names (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "type", NULL };
+    PyObject *py_itype, *list;
+    GObjectClass *class = NULL;
+    GType itype;
+    guint n;
+    guint *ids;
+    guint i;
+    gpointer iface = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O:gobject.signal_list_names",
+                                     kwlist, &py_itype))
+       return NULL;
+    if ((itype = pyg_type_from_object(py_itype)) == 0)
+       return NULL;
+
+    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
+       class = g_type_class_ref(itype);
+       if (!class) {
+           PyErr_SetString(PyExc_RuntimeError,
+                           "could not get a reference to type class");
+           return NULL;
+       }
+    } else if (!G_TYPE_IS_INTERFACE(itype)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "type must be instantiable or an interface");
+       return NULL;
+    } else {
+        iface = g_type_default_interface_ref(itype);
+    }
+
+    ids = g_signal_list_ids(itype, &n);
+
+    list = PyTuple_New((gint)n);
+    if (list != NULL) {
+       for (i = 0; i < n; i++)
+           PyTuple_SetItem(list, i,
+                       PYGLIB_PyUnicode_FromString(g_signal_name(ids[i])));
+    }
+
+    g_free(ids);
+    if (class)
+        g_type_class_unref(class);
+    else
+       g_type_default_interface_unref(iface);
+
+    return list;
+}
+
+static PyObject *
+pyg_signal_list_ids (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "type", NULL };
+    PyObject *py_itype, *list;
+    GObjectClass *class = NULL;
+    GType itype;
+    guint n;
+    guint *ids;
+    guint i;
+    gpointer iface = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                     "O:gobject.signal_list_ids",
+                                     kwlist, &py_itype))
+       return NULL;
+    if ((itype = pyg_type_from_object(py_itype)) == 0)
+       return NULL;
+
+    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
+       class = g_type_class_ref(itype);
+       if (!class) {
+           PyErr_SetString(PyExc_RuntimeError,
+                           "could not get a reference to type class");
+           return NULL;
+       }
+    } else if (!G_TYPE_IS_INTERFACE(itype)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "type must be instantiable or an interface");
+       return NULL;
+    } else {
+        iface = g_type_default_interface_ref(itype);
+    }
+
+    ids = g_signal_list_ids(itype, &n);
+
+    list = PyTuple_New((gint)n);
+    if (list == NULL) {
+       g_free(ids);
+       g_type_class_unref(class);
+       return NULL;
+    }
+
+    for (i = 0; i < n; i++)
+       PyTuple_SetItem(list, i, PYGLIB_PyLong_FromLong(ids[i]));
+    g_free(ids);
+    if (class)
+        g_type_class_unref(class);
+    else
+       g_type_default_interface_unref(iface);
+
+    return list;
+}
+
+static PyObject *
+pyg_signal_lookup (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "name", "type", NULL };
+    PyObject *py_itype;
+    GObjectClass *class = NULL;
+    GType itype;
+    gchar *signal_name;
+    guint id;
+    gpointer iface = NULL;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO:gobject.signal_lookup",
+                                     kwlist, &signal_name, &py_itype))
+       return NULL;
+    if ((itype = pyg_type_from_object(py_itype)) == 0)
+       return NULL;
+
+    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
+       class = g_type_class_ref(itype);
+       if (!class) {
+           PyErr_SetString(PyExc_RuntimeError,
+                           "could not get a reference to type class");
+           return NULL;
+       }
+    } else if (!G_TYPE_IS_INTERFACE(itype)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "type must be instantiable or an interface");
+       return NULL;
+    } else {
+        iface = g_type_default_interface_ref(itype);
+    }
+
+    id = g_signal_lookup(signal_name, itype);
+
+    if (class)
+        g_type_class_unref(class);
+    else
+       g_type_default_interface_unref(iface);
+    return PYGLIB_PyLong_FromLong(id);
+}
+
+static PyObject *
+pyg_signal_name (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "signal_id", NULL };
+    const gchar *signal_name;
+    guint id;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gobject.signal_name",
+                                     kwlist, &id))
+       return NULL;
+    signal_name = g_signal_name(id);
+    if (signal_name)
+        return PYGLIB_PyUnicode_FromString(signal_name);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pyg_signal_query (PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist1[] = { "name", "type", NULL };
+    static char *kwlist2[] = { "signal_id", NULL };
+    PyObject *py_query, *params_list, *py_itype;
+    GObjectClass *class = NULL;
+    GType itype;
+    gchar *signal_name;
+    guint i;
+    GSignalQuery query;
+    guint id;
+    gpointer iface = NULL;
+
+    if (PyArg_ParseTupleAndKeywords(args, kwargs, "sO:gobject.signal_query",
+                                     kwlist1, &signal_name, &py_itype)) {
+        if ((itype = pyg_type_from_object(py_itype)) == 0)
+            return NULL;
+
+        if (G_TYPE_IS_INSTANTIATABLE(itype)) {
+            class = g_type_class_ref(itype);
+            if (!class) {
+                PyErr_SetString(PyExc_RuntimeError,
+                                "could not get a reference to type class");
+                return NULL;
+            }
+        } else if (!G_TYPE_IS_INTERFACE(itype)) {
+            PyErr_SetString(PyExc_TypeError,
+                            "type must be instantiable or an interface");
+            return NULL;
+        } else {
+            iface = g_type_default_interface_ref(itype);
+        }
+        id = g_signal_lookup(signal_name, itype);
+    } else {
+       PyErr_Clear();
+        if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+                                         "i:gobject.signal_query",
+                                         kwlist2, &id)) {
+            PyErr_Clear();
+            PyErr_SetString(PyExc_TypeError,
+                            "Usage: one of:\n"
+                            "  gobject.signal_query(name, type)\n"
+                            "  gobject.signal_query(signal_id)");
+
+       return NULL;
+        }
+    }
+
+    g_signal_query(id, &query);
+
+    if (query.signal_id == 0) {
+        Py_INCREF(Py_None);
+        py_query = Py_None;
+        goto done;
+    }
+    py_query = PyTuple_New(6);
+    if (py_query == NULL) {
+        goto done;
+    }
+    params_list = PyTuple_New(query.n_params);
+    if (params_list == NULL) {
+        Py_DECREF(py_query);
+        py_query = NULL;
+        goto done;
+    }
+
+    PyTuple_SET_ITEM(py_query, 0, PYGLIB_PyLong_FromLong(query.signal_id));
+    PyTuple_SET_ITEM(py_query, 1, PYGLIB_PyUnicode_FromString(query.signal_name));
+    PyTuple_SET_ITEM(py_query, 2, pyg_type_wrapper_new(query.itype));
+    PyTuple_SET_ITEM(py_query, 3, PYGLIB_PyLong_FromLong(query.signal_flags));
+    PyTuple_SET_ITEM(py_query, 4, pyg_type_wrapper_new(query.return_type));
+    for (i = 0; i < query.n_params; i++) {
+        PyTuple_SET_ITEM(params_list, i,
+                         pyg_type_wrapper_new(query.param_types[i]));
+    }
+    PyTuple_SET_ITEM(py_query, 5, params_list);
+
+ done:
+    if (class)
+        g_type_class_unref(class);
+    if (iface)
+        g_type_default_interface_unref(iface);
+
+    return py_query;
+}
+
+static PyObject *
 pyg_object_class_list_properties (PyObject *self, PyObject *args)
 {
     GParamSpec **specs;
@@ -1339,7 +1703,7 @@ pyg_object_class_list_properties (PyObject *self, PyObject *args)
     return list;
 }
 
-PyObject *
+static PyObject *
 pyg_object_new (PyGObject *self, PyObject *args, PyObject *kwargs)
 {
     PyObject *pytype;
@@ -1371,10 +1735,7 @@ pyg_object_new (PyGObject *self, PyObject *args, PyObject *kwargs)
     if (!pygobject_prepare_construct_properties (class, kwargs, &n_params, &params))
         goto cleanup;
 
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     obj = g_object_newv(type, n_params, params);
-G_GNUC_END_IGNORE_DEPRECATIONS
-
     if (!obj)
        PyErr_SetString (PyExc_RuntimeError, "could not create object");
 
@@ -1388,7 +1749,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
     if (obj) {
         pygobject_sink (obj);
-       self = (PyGObject *) pygobject_new((GObject *)obj);
+       self = (PyGObject *) pygobject_new_full((GObject *)obj, FALSE, NULL);
         g_object_unref(obj);
     } else
         self = NULL;
@@ -1396,26 +1757,71 @@ G_GNUC_END_IGNORE_DEPRECATIONS
     return (PyObject *) self;
 }
 
+gboolean
+pyg_handler_marshal(gpointer user_data)
+{
+    PyObject *tuple, *ret;
+    gboolean res;
+    PyGILState_STATE state;
+
+    g_return_val_if_fail(user_data != NULL, FALSE);
+
+    state = pyglib_gil_state_ensure();
+
+    tuple = (PyObject *)user_data;
+    ret = PyObject_CallObject(PyTuple_GetItem(tuple, 0),
+                             PyTuple_GetItem(tuple, 1));
+    if (!ret) {
+       PyErr_Print();
+       res = FALSE;
+    } else {
+       res = PyObject_IsTrue(ret);
+       Py_DECREF(ret);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return res;
+}
+
 static int
 pygobject_gil_state_ensure (void)
 {
-    return PyGILState_Ensure ();
+    return pyglib_gil_state_ensure ();
 }
 
 static void
 pygobject_gil_state_release (int flag)
 {
-    PyGILState_Release(flag);
+    pyglib_gil_state_release(flag);
+}
+
+static PyObject *
+pyg_threads_init (PyObject *unused, PyObject *args, PyObject *kwargs)
+{
+    if (!pyglib_enable_threads())
+        return NULL;
+
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 /* Only for backwards compatibility */
-static int
+int
 pygobject_enable_threads(void)
 {
+    if (!pyglib_enable_threads())
+       return -1;
     return 0;
 }
 
-PyObject *
+static void
+pyg_note_threads_enabled(void)
+{
+    pygobject_api_functions.threads_enabled = TRUE;
+}
+
+static PyObject *
 pyg_signal_accumulator_true_handled(PyObject *unused, PyObject *args)
 {
     PyErr_SetString(PyExc_TypeError,
@@ -1437,7 +1843,7 @@ marshal_emission_hook(GSignalInvocationHint *ihint,
     PyObject *params;
     guint i;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     /* construct Python tuple for the parameter values */
     params = PyTuple_New(n_param_values);
@@ -1468,14 +1874,14 @@ marshal_emission_hook(GSignalInvocationHint *ihint,
     retval = (retobj == Py_True ? TRUE : FALSE);
     Py_XDECREF(retobj);
 out:
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
     return retval;
 }
 
-PyObject *
+static PyObject *
 pyg_add_emission_hook(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *data, *repr;
+    PyObject *first, *callback, *extra_args, *data;
     gchar *name;
     gulong hook_id;
     guint sigid;
@@ -1507,11 +1913,9 @@ pyg_add_emission_hook(PyGObject *self, PyObject *args)
     }
 
     if (!g_signal_parse_name(name, gtype, &sigid, &detail, TRUE)) {
-       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                       PYGLIB_PyUnicode_AsString(repr),
+                       PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
                     name);
-       Py_DECREF(repr);
        return NULL;
     }
     extra_args = PySequence_GetSlice(args, 3, len);
@@ -1530,53 +1934,86 @@ pyg_add_emission_hook(PyGObject *self, PyObject *args)
     return PyLong_FromUnsignedLong(hook_id);
 }
 
-PyObject *
-pyg__install_metaclass(PyObject *dummy, PyTypeObject *metaclass)
+static PyObject *
+pyg_remove_emission_hook(PyGObject *self, PyObject *args)
 {
-    Py_INCREF(metaclass);
-    PyGObject_MetaType = metaclass;
-    Py_INCREF(metaclass);
+    PyObject *pygtype;
+    char *name;
+    guint signal_id;
+    gulong hook_id;
+    GType gtype;
 
-    Py_TYPE(&PyGObject_Type) = metaclass;
+    if (!PyArg_ParseTuple(args, "Osk:gobject.remove_emission_hook",
+                         &pygtype, &name, &hook_id))
+       return NULL;
 
-    Py_INCREF(Py_None);
-    return Py_None;
-}
+    if ((gtype = pyg_type_from_object(pygtype)) == 0) {
+       return NULL;
+    }
 
-PyObject *
-pyg__gvalue_get(PyObject *module, PyObject *pygvalue)
-{
-    if (!pyg_boxed_check (pygvalue, G_TYPE_VALUE)) {
-        PyErr_SetString (PyExc_TypeError, "Expected GValue argument.");
-        return NULL;
+    if (!g_signal_parse_name(name, gtype, &signal_id, NULL, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                 PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                 name);
+       return NULL;
     }
 
-    return pyg_value_as_pyobject (pyg_boxed_get(pygvalue, GValue),
-                                  /*copy_boxed=*/ TRUE);
+    g_signal_remove_emission_hook(signal_id, hook_id);
+
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
-PyObject *
-pyg__gvalue_set(PyObject *module, PyObject *args)
+static PyObject *
+pyg__install_metaclass(PyObject *dummy, PyTypeObject *metaclass)
 {
-    PyObject *pygvalue;
-    PyObject *pyobject;
-
-    if (!PyArg_ParseTuple (args, "OO:_gi._gvalue_set",
-                           &pygvalue, &pyobject))
-        return NULL;
-
-    if (!pyg_boxed_check (pygvalue, G_TYPE_VALUE)) {
-        PyErr_SetString (PyExc_TypeError, "Expected GValue argument.");
-        return NULL;
-    }
+    Py_INCREF(metaclass);
+    PyGObject_MetaType = metaclass;
+    Py_INCREF(metaclass);
 
-    if (pyg_value_from_pyobject_with_error (pyg_boxed_get (pygvalue, GValue),
-                                            pyobject) == -1)
-        return NULL;
+    Py_TYPE(&PyGObject_Type) = metaclass;
 
-    Py_RETURN_NONE;
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
+static PyMethodDef _gobject_functions[] = {
+    { "type_name", pyg_type_name, METH_VARARGS },
+    { "type_from_name", pyg_type_from_name, METH_VARARGS },
+    { "type_parent", pyg_type_parent, METH_VARARGS },
+    { "type_is_a", pyg_type_is_a, METH_VARARGS },
+    { "type_children", pyg_type_children, METH_VARARGS },
+    { "type_interfaces", pyg_type_interfaces, METH_VARARGS },
+    { "type_register", _wrap_pyg_type_register, METH_VARARGS },
+    { "signal_new", pyg_signal_new, METH_VARARGS },
+    { "signal_list_names",
+      (PyCFunction)pyg_signal_list_names, METH_VARARGS|METH_KEYWORDS },
+    { "signal_list_ids",
+      (PyCFunction)pyg_signal_list_ids, METH_VARARGS|METH_KEYWORDS },
+    { "signal_lookup",
+      (PyCFunction)pyg_signal_lookup, METH_VARARGS|METH_KEYWORDS },
+    { "signal_name",
+      (PyCFunction)pyg_signal_name, METH_VARARGS|METH_KEYWORDS },
+    { "signal_query",
+      (PyCFunction)pyg_signal_query, METH_VARARGS|METH_KEYWORDS },
+    { "list_properties",
+      pyg_object_class_list_properties, METH_VARARGS },
+    { "new",
+      (PyCFunction)pyg_object_new, METH_VARARGS|METH_KEYWORDS },
+    { "threads_init",
+      (PyCFunction)pyg_threads_init, METH_VARARGS|METH_KEYWORDS },
+    { "signal_accumulator_true_handled",
+      (PyCFunction)pyg_signal_accumulator_true_handled, METH_VARARGS },
+    { "add_emission_hook",
+      (PyCFunction)pyg_add_emission_hook, METH_VARARGS },
+    { "remove_emission_hook",
+      (PyCFunction)pyg_remove_emission_hook, METH_VARARGS },
+    { "_install_metaclass",
+      (PyCFunction)pyg__install_metaclass, METH_O },
+
+    { NULL, NULL, 0 }
+};
+
 
 /* ----------------- Constant extraction ------------------------ */
 
@@ -1596,7 +2033,7 @@ pyg__gvalue_set(PyObject *module, PyObject *args)
 const gchar *
 pyg_constant_strip_prefix(const gchar *name, const gchar *strip_prefix)
 {
-    size_t prefix_len;
+    gint prefix_len;
     guint i;
 
     prefix_len = strlen(strip_prefix);
@@ -1612,9 +2049,9 @@ pyg_constant_strip_prefix(const gchar *name, const gchar *strip_prefix)
 
     /* strip off prefix from value name, while keeping it a valid
      * identifier */
-    for (i = prefix_len + 1; i > 0; i--) {
-       if (g_ascii_isalpha(name[i - 1]) || name[i - 1] == '_') {
-           return &name[i - 1];
+    for (i = prefix_len; i >= 0; i--) {
+       if (g_ascii_isalpha(name[i]) || name[i] == '_') {
+           return &name[i];
        }
     }
     return name;
@@ -1699,6 +2136,55 @@ pyg_flags_add_constants(PyObject *module, GType flags_type,
 }
 
 /**
+ * pyg_error_check:
+ * @error: a pointer to the GError.
+ *
+ * Checks to see if the GError has been set.  If the error has been
+ * set, then the gobject.GError Python exception will be raised, and
+ * the GError cleared.
+ *
+ * Returns: True if an error was set.
+ *
+ * Deprecated: Since 2.16, use pyglib_error_check instead.
+ */
+gboolean
+pyg_error_check(GError **error)
+{
+#if 0
+    if (PyErr_Warn(PyExc_DeprecationWarning,
+                  "pyg_error_check is deprecated, use "
+                  "pyglib_error_check instead"))
+        return NULL;
+#endif
+    return pyglib_error_check(error);
+}
+
+/**
+ * pyg_gerror_exception_check:
+ * @error: a standard GLib GError ** output parameter
+ *
+ * Checks to see if a GError exception has been raised, and if so
+ * translates the python exception to a standard GLib GError.  If the
+ * raised exception is not a GError then PyErr_Print() is called.
+ *
+ * Returns: 0 if no exception has been raised, -1 if it is a
+ * valid gobject.GError, -2 otherwise.
+ *
+ * Deprecated: Since 2.16, use pyglib_gerror_exception_check instead.
+ */
+gboolean
+pyg_gerror_exception_check(GError **error)
+{
+#if 0
+    if (PyErr_Warn(PyExc_DeprecationWarning,
+                  "pyg_gerror_exception_check is deprecated, use "
+                  "pyglib_gerror_exception_check instead"))
+        return NULL;
+#endif
+    return pyglib_gerror_exception_check(error);
+}
+
+/**
  * pyg_parse_constructor_args: helper function for PyGObject constructors
  * @obj_type: GType of the GObject, for parameter introspection
  * @arg_names: %NULL-terminated array of constructor argument names
@@ -1737,7 +2223,7 @@ pyg_parse_constructor_args(GType        obj_type,
         params[param_i].name = prop_names[arg_i];
         g_value_init(&params[param_i].value, spec->value_type);
         if (pyg_value_from_pyobject(&params[param_i].value, py_args[arg_i]) == -1) {
-            guint i;
+            int i;
             PyErr_Format(PyExc_TypeError, "could not convert parameter '%s' of type '%s'",
                          arg_names[arg_i], g_type_name(spec->value_type));
             g_type_class_unref(oclass);
@@ -1752,6 +2238,27 @@ pyg_parse_constructor_args(GType        obj_type,
     return TRUE;
 }
 
+PyObject *
+pyg_integer_richcompare(PyObject *v, PyObject *w, int op)
+{
+    PyObject *result;
+    gboolean t;
+
+    switch (op) {
+    case Py_EQ: t = PYGLIB_PyLong_AS_LONG(v) == PYGLIB_PyLong_AS_LONG(w); break;
+    case Py_NE: t = PYGLIB_PyLong_AS_LONG(v) != PYGLIB_PyLong_AS_LONG(w); break;
+    case Py_LE: t = PYGLIB_PyLong_AS_LONG(v) <= PYGLIB_PyLong_AS_LONG(w); break;
+    case Py_GE: t = PYGLIB_PyLong_AS_LONG(v) >= PYGLIB_PyLong_AS_LONG(w); break;
+    case Py_LT: t = PYGLIB_PyLong_AS_LONG(v) <  PYGLIB_PyLong_AS_LONG(w); break;
+    case Py_GT: t = PYGLIB_PyLong_AS_LONG(v) >  PYGLIB_PyLong_AS_LONG(w); break;
+    default: g_assert_not_reached();
+    }
+
+    result = t ? Py_True : Py_False;
+    Py_INCREF(result);
+    return result;
+}
+
 static void
 _log_func(const gchar *log_domain,
           GLogLevelFlags log_level,
@@ -1763,9 +2270,9 @@ _log_func(const gchar *log_domain,
        PyGILState_STATE state;
        PyObject* warning = user_data;
 
-       state = PyGILState_Ensure();
+       state = pyglib_gil_state_ensure();
        PyErr_Warn(warning, (char *) message);
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
     } else
         g_log_default_handler(log_domain, log_level, message, user_data);
 }
@@ -1850,9 +2357,9 @@ struct _PyGObject_Functions pygobject_api_functions = {
 
   pyg_constant_strip_prefix,
 
-  pygi_error_check,
+  pyg_error_check,
 
-  _pyg_set_thread_block_funcs,
+  pyg_set_thread_block_funcs,
   (PyGThreadBlockFunc)0, /* block_threads */
   (PyGThreadBlockFunc)0, /* unblock_threads */
 
@@ -1873,8 +2380,7 @@ struct _PyGObject_Functions pygobject_api_functions = {
   pyg_flags_add,
   pyg_flags_from_gtype,
 
-  TRUE, /* threads_enabled */
-
+  FALSE, /* threads_enabled */
   pygobject_enable_threads,
   pygobject_gil_state_ensure,
   pygobject_gil_state_release,
@@ -1886,21 +2392,15 @@ struct _PyGObject_Functions pygobject_api_functions = {
   add_warning_redirection,
   disable_warning_redirections,
 
-  NULL, /* previously type_register_custom */
-
-  pygi_gerror_exception_check,
+  pyg_type_register_custom_callback,
+  pyg_gerror_exception_check,
 
-  pyg_option_group_new,
-  pyg_type_from_object_strict,
-
-  pygobject_new_full,
-  &PyGObject_Type,
-
-  pyg_value_from_pyobject_with_error
+  pyglib_option_group_new,
+  pyg_type_from_object_strict
 };
 
 /* for addon libraries ... */
-void
+static void
 pygobject_register_api(PyObject *d)
 {
     PyObject *api;
@@ -1911,7 +2411,7 @@ pygobject_register_api(PyObject *d)
 }
 
 /* some constants */
-void
+static void
 pygobject_register_constants(PyObject *m)
 {
     /* PyFloat_ return a new ref, and add object takes the ref */
@@ -1924,17 +2424,52 @@ pygobject_register_constants(PyObject *m)
     PyModule_AddIntConstant(m,  "G_MAXUSHORT", G_MAXUSHORT);
     PyModule_AddIntConstant(m,  "G_MININT", G_MININT);
     PyModule_AddIntConstant(m,  "G_MAXINT", G_MAXINT);
-    PyModule_AddObject(m,       "G_MAXUINT", PyLong_FromUnsignedLong(G_MAXUINT));
     PyModule_AddObject(m,       "G_MINLONG", PyLong_FromLong(G_MINLONG));
     PyModule_AddObject(m,       "G_MAXLONG", PyLong_FromLong(G_MAXLONG));
     PyModule_AddObject(m,       "G_MAXULONG", PyLong_FromUnsignedLong(G_MAXULONG));
+    PyModule_AddIntConstant(m,  "G_MININT8", G_MININT8);
+    PyModule_AddIntConstant(m,  "G_MAXINT8", G_MAXINT8);
+    PyModule_AddIntConstant(m,  "G_MAXUINT8", G_MAXUINT8);
+    PyModule_AddIntConstant(m,  "G_MININT16", G_MININT16);
+    PyModule_AddIntConstant(m,  "G_MAXINT16", G_MAXINT16);
+    PyModule_AddIntConstant(m,  "G_MAXUINT16", G_MAXUINT16);
+    PyModule_AddIntConstant(m,  "G_MININT32", G_MININT32);
+    PyModule_AddIntConstant(m,  "G_MAXINT32", G_MAXINT32);
+    PyModule_AddObject(m,       "G_MININT64", PyLong_FromLongLong(G_MININT64));
+    PyModule_AddObject(m,       "G_MAXINT64", PyLong_FromLongLong(G_MAXINT64));
+    PyModule_AddObject(m,       "G_MAXUINT64", PyLong_FromUnsignedLongLong(G_MAXUINT64));
+#if PY_VERSION_HEX < 0x02050000 /* 2.3, 2.4 */
+    PyModule_AddObject(m,       "G_MAXSIZE", PyLong_FromUnsignedLongLong(G_MAXSIZE));
+    PyModule_AddObject(m,       "G_MAXSSIZE", PyLong_FromUnsignedLongLong(G_MAXSSIZE));
+#elif PY_VERSION_HEX < 0x02060000 /* 2.5 */
+    PyModule_AddObject(m,       "G_MAXSIZE", PYGLIB_PyLong_FromSize_t(G_MAXSIZE));
+    PyModule_AddObject(m,       "G_MAXSSIZE", PYGLIB_PyLong_FromSsize_t(G_MAXSSIZE));
+#else /* 2.6+ */
     PyModule_AddObject(m,       "G_MAXSIZE", PyLong_FromSize_t(G_MAXSIZE));
     PyModule_AddObject(m,       "G_MAXSSIZE", PyLong_FromSsize_t(G_MAXSSIZE));
-    PyModule_AddObject(m,       "G_MINSSIZE", PyLong_FromSsize_t(G_MINSSIZE));
+#endif
     PyModule_AddObject(m,       "G_MINOFFSET", PyLong_FromLongLong(G_MINOFFSET));
     PyModule_AddObject(m,       "G_MAXOFFSET", PyLong_FromLongLong(G_MAXOFFSET));
 
+    /* in order for test_properties to pass, G_MAXUINT must be initialized using
+       PyLong_FromUnsignedLong, despite AFAICT it is unecessary for 32bit int types.
+       In the interests of consistancy I did the same for MAXUINT32 */
+    PyModule_AddObject(m,       "G_MAXUINT32", PyLong_FromUnsignedLong(G_MAXUINT32));
+    PyModule_AddObject(m,       "G_MAXUINT", PyLong_FromUnsignedLong(G_MAXUINT));
+
     PyModule_AddIntConstant(m, "SIGNAL_RUN_FIRST", G_SIGNAL_RUN_FIRST);
+    PyModule_AddIntConstant(m, "SIGNAL_RUN_LAST", G_SIGNAL_RUN_LAST);
+    PyModule_AddIntConstant(m, "SIGNAL_RUN_CLEANUP", G_SIGNAL_RUN_CLEANUP);
+    PyModule_AddIntConstant(m, "SIGNAL_NO_RECURSE", G_SIGNAL_NO_RECURSE);
+    PyModule_AddIntConstant(m, "SIGNAL_DETAILED", G_SIGNAL_DETAILED);
+    PyModule_AddIntConstant(m, "SIGNAL_ACTION", G_SIGNAL_ACTION);
+    PyModule_AddIntConstant(m, "SIGNAL_NO_HOOKS", G_SIGNAL_NO_HOOKS);
+
+    PyModule_AddIntConstant(m, "PARAM_READABLE", G_PARAM_READABLE);
+    PyModule_AddIntConstant(m, "PARAM_WRITABLE", G_PARAM_WRITABLE);
+    PyModule_AddIntConstant(m, "PARAM_CONSTRUCT", G_PARAM_CONSTRUCT);
+    PyModule_AddIntConstant(m, "PARAM_CONSTRUCT_ONLY", G_PARAM_CONSTRUCT_ONLY);
+    PyModule_AddIntConstant(m, "PARAM_LAX_VALIDATION", G_PARAM_LAX_VALIDATION);
     PyModule_AddIntConstant(m, "PARAM_READWRITE", G_PARAM_READWRITE);
 
     /* The rest of the types are set in __init__.py */
@@ -1943,7 +2478,7 @@ pygobject_register_constants(PyObject *m)
 }
 
 /* features */
-void
+static void
 pygobject_register_features(PyObject *d)
 {
     PyObject *features;
@@ -1954,7 +2489,7 @@ pygobject_register_features(PyObject *d)
     Py_DECREF(features);
 }
 
-void
+static void
 pygobject_register_version_tuples(PyObject *d)
 {
     PyObject *tuple;
@@ -1967,7 +2502,7 @@ pygobject_register_version_tuples(PyObject *d)
     PyDict_SetItemString(d, "pygobject_version", tuple);
 }
 
-void
+static void
 pygobject_register_warnings(PyObject *d)
 {
     PyObject *warning;
@@ -1978,3 +2513,35 @@ pygobject_register_warnings(PyObject *d)
     add_warning_redirection("GLib-GObject", warning);
     add_warning_redirection("GThread", warning);
 }
+
+
+PYGLIB_MODULE_START(_gobject, "_gobject")
+{
+    PyObject *d;
+
+    g_type_init();
+    pyglib_init();
+
+    d = PyModule_GetDict(module);
+    pygobject_register_api(d);
+    pygobject_register_constants(module);
+    pygobject_register_features(d);
+    pygobject_register_version_tuples(d);
+    pygobject_register_warnings(d);
+    pygobject_type_register_types(d);
+    pygobject_object_register_types(d);
+    pygobject_interface_register_types(d);
+    pygobject_paramspec_register_types(d);
+    pygobject_boxed_register_types(d);
+    pygobject_pointer_register_types(d);
+    pygobject_enum_register_types(d);
+    pygobject_flags_register_types(d);
+
+      /* signal registration recognizes this special accumulator 'constant' */
+    _pyg_signal_accumulator_true_handled_func = \
+        PyDict_GetItemString(d, "signal_accumulator_true_handled");
+
+    pygobject_api_functions.threads_enabled = pyglib_threads_enabled();
+    _pyglib_notify_on_enabling_threads(pyg_note_threads_enabled);
+}
+PYGLIB_MODULE_END
diff --git a/gi/_gobject/propertyhelper.py b/gi/_gobject/propertyhelper.py
new file mode 100644 (file)
index 0000000..dff1d79
--- /dev/null
@@ -0,0 +1,348 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# pygobject - Python bindings for the GObject library
+# Copyright (C) 2007 Johan Dahlin
+#
+#   gobject/propertyhelper.py: GObject property wrapper/helper
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+import sys
+
+from . import _gobject
+
+from .constants import \
+     TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, \
+     TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, \
+     TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, TYPE_FLAGS, \
+     TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, \
+     TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
+     TYPE_PYOBJECT, TYPE_GTYPE
+from .constants import \
+     G_MAXFLOAT, G_MAXDOUBLE, \
+     G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
+     G_MAXULONG
+
+if sys.version_info >= (3, 0):
+    _basestring = str
+    _long = int
+else:
+    _basestring = basestring
+    _long = long
+
+
+class Property(object):
+    """
+    Creates a new property which in conjunction with GObject subclass will
+    create a property proxy:
+
+    >>> class MyObject(GObject.GObject):
+    >>> ... prop = GObject.Property(type=str)
+
+    >>> obj = MyObject()
+    >>> obj.prop = 'value'
+
+    >>> obj.prop
+    'value'
+
+    The API is similar to the builtin property:
+
+    class AnotherObject(GObject.GObject):
+        @GObject.Property
+        def prop(self):
+            '''Read only property.'''
+            return ...
+
+        @GObject.Property(type=int)
+        def propInt(self):
+            '''Read-write integer property.'''
+            return ...
+
+        @propInt.setter
+        def propInt(self, value):
+            ...
+    """
+
+    class __metaclass__(type):
+        def __repr__(self):
+            return "<class 'GObject.Property'>"
+
+    def __init__(self, getter=None, setter=None, type=None, default=None,
+                 nick='', blurb='', flags=_gobject.PARAM_READWRITE,
+                 minimum=None, maximum=None):
+        """
+        @param  getter: getter to get the value of the property
+        @type   getter: callable
+        @param  setter: setter to set the value of the property
+        @type   setter: callable
+        @param    type: type of property
+        @type     type: type
+        @param default: default value
+        @param    nick: short description
+        @type     nick: string
+        @param   blurb: long description
+        @type    blurb: string
+        @param flags:    parameter flags, one of:
+        - gobject.PARAM_READABLE
+        - gobject.PARAM_READWRITE
+        - gobject.PARAM_WRITABLE
+        - gobject.PARAM_CONSTRUCT
+        - gobject.PARAM_CONSTRUCT_ONLY
+        - gobject.PARAM_LAX_VALIDATION
+        @keyword minimum:  minimum allowed value (int, float, long only)
+        @keyword maximum:  maximum allowed value (int, float, long only)
+        """
+
+        if type is None:
+            type = object
+        self.type = self._type_from_python(type)
+        self.default = self._get_default(default)
+        self._check_default()
+
+        if not isinstance(nick, _basestring):
+            raise TypeError("nick must be a string")
+        self.nick = nick
+
+        if not isinstance(blurb, _basestring):
+            raise TypeError("blurb must be a string")
+        self.blurb = blurb
+
+        if flags < 0 or flags > 32:
+            raise TypeError("invalid flag value: %r" % (flags,))
+        self.flags = flags
+
+        # Call after setting blurb for potential __doc__ usage.
+        if getter and not setter:
+            setter = self._readonly_setter
+        elif setter and not getter:
+            getter = self._writeonly_getter
+        elif not setter and not getter:
+            getter = self._default_getter
+            setter = self._default_setter
+        self.getter(getter)
+        self.setter(setter)
+
+        if minimum is not None:
+            if minimum < self._get_minimum():
+                raise TypeError(
+                    "Minimum for type %s cannot be lower than %d" % (
+                    self.type, self._get_minimum()))
+        else:
+            minimum = self._get_minimum()
+        self.minimum = minimum
+        if maximum is not None:
+            if maximum > self._get_maximum():
+                raise TypeError(
+                    "Maximum for type %s cannot be higher than %d" % (
+                    self.type, self._get_maximum()))
+        else:
+            maximum = self._get_maximum()
+        self.maximum = maximum
+
+        self.name = None
+
+        self._exc = None
+
+    def __repr__(self):
+        return '<GObject Property %s (%s)>' % (
+            self.name or '(uninitialized)',
+            _gobject.type_name(self.type))
+
+    def __get__(self, instance, klass):
+        if instance is None:
+            return self
+
+        self._exc = None
+        value = instance.get_property(self.name)
+        if self._exc:
+            exc = self._exc
+            self._exc = None
+            raise exc
+
+        return value
+
+    def __set__(self, instance, value):
+        if instance is None:
+            raise TypeError
+
+        self._exc = None
+        instance.set_property(self.name, value)
+        if self._exc:
+            exc = self._exc
+            self._exc = None
+            raise exc
+
+    def __call__(self, fget):
+        """Allows application of the getter along with init arguments."""
+        return self.getter(fget)
+
+    def getter(self, fget):
+        """Set the getter function to fget. For use as a decorator."""
+        if self.__doc__ is None:
+            self.__doc__ = fget.__doc__
+        if not self.blurb and fget.__doc__:
+            self.blurb = fget.__doc__
+        self.fget = fget
+        return self
+
+    def setter(self, fset):
+        """Set the setter function to fset. For use as a decorator."""
+        self.fset = fset
+        return self
+
+    def _type_from_python(self, type_):
+        if type_ == _long:
+            return TYPE_LONG
+        elif type_ == int:
+            return TYPE_INT
+        elif type_ == bool:
+            return TYPE_BOOLEAN
+        elif type_ == float:
+            return TYPE_DOUBLE
+        elif type_ == str:
+            return TYPE_STRING
+        elif type_ == object:
+            return TYPE_PYOBJECT
+        elif (isinstance(type_, type) and
+              issubclass(type_, (_gobject.GObject,
+                                 _gobject.GEnum,
+                                 _gobject.GFlags,
+                                 _gobject.GBoxed))):
+            return type_.__gtype__
+        elif type_ in [TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
+                       TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
+                       TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
+                       TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
+                       TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
+                       TYPE_PYOBJECT, TYPE_GTYPE]:
+            return type_
+        else:
+            raise TypeError("Unsupported type: %r" % (type_,))
+
+    def _get_default(self, default):
+        ptype = self.type
+        if default is not None:
+            return default
+
+        if ptype in [TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
+                     TYPE_INT64, TYPE_UINT64]:
+            return 0
+        elif ptype == TYPE_STRING:
+            return ''
+        elif ptype == TYPE_FLOAT or ptype == TYPE_DOUBLE:
+            return 0.0
+        else:
+            return None
+
+    def _check_default(self):
+        ptype = self.type
+        default = self.default
+        if (ptype == TYPE_BOOLEAN and (default not in (True, False))):
+            raise TypeError(
+                "default must be True or False, not %r" % (default,))
+        elif ptype == TYPE_PYOBJECT:
+            if default is not None:
+                raise TypeError("object types does not have default values")
+        elif ptype == TYPE_GTYPE:
+            if default is not None:
+                raise TypeError("GType types does not have default values")
+        elif _gobject.type_is_a(ptype, TYPE_ENUM):
+            if default is None:
+                raise TypeError("enum properties needs a default value")
+            elif not _gobject.type_is_a(default, ptype):
+                raise TypeError("enum value %s must be an instance of %r" %
+                                (default, ptype))
+        elif _gobject.type_is_a(ptype, TYPE_FLAGS):
+            if not _gobject.type_is_a(default, ptype):
+                raise TypeError("flags value %s must be an instance of %r" %
+                                (default, ptype))
+
+    def _get_minimum(self):
+        ptype = self.type
+        if ptype in [TYPE_UINT, TYPE_ULONG, TYPE_UINT64]:
+            return 0
+        # Remember that G_MINFLOAT and G_MINDOUBLE are something different.
+        elif ptype == TYPE_FLOAT:
+            return -G_MAXFLOAT
+        elif ptype == TYPE_DOUBLE:
+            return -G_MAXDOUBLE
+        elif ptype == TYPE_INT:
+            return G_MININT
+        elif ptype == TYPE_LONG:
+            return G_MINLONG
+        elif ptype == TYPE_INT64:
+            return -2 ** 62 - 1
+
+        return None
+
+    def _get_maximum(self):
+        ptype = self.type
+        if ptype == TYPE_UINT:
+            return G_MAXUINT
+        elif ptype == TYPE_ULONG:
+            return G_MAXULONG
+        elif ptype == TYPE_INT64:
+            return 2 ** 62 - 1
+        elif ptype == TYPE_UINT64:
+            return 2 ** 63 - 1
+        elif ptype == TYPE_FLOAT:
+            return G_MAXFLOAT
+        elif ptype == TYPE_DOUBLE:
+            return G_MAXDOUBLE
+        elif ptype == TYPE_INT:
+            return G_MAXINT
+        elif ptype == TYPE_LONG:
+            return G_MAXLONG
+
+        return None
+
+    #
+    # Getter and Setter
+    #
+
+    def _default_setter(self, instance, value):
+        setattr(instance, '_property_helper_' + self.name, value)
+
+    def _default_getter(self, instance):
+        return getattr(instance, '_property_helper_' + self.name, self.default)
+
+    def _readonly_setter(self, instance, value):
+        self._exc = TypeError("%s property of %s is read-only" % (
+            self.name, type(instance).__name__))
+
+    def _writeonly_getter(self, instance):
+        self._exc = TypeError("%s property of %s is write-only" % (
+            self.name, type(instance).__name__))
+
+    #
+    # Public API
+    #
+
+    def get_pspec_args(self):
+        ptype = self.type
+        if ptype in [TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
+                     TYPE_INT64, TYPE_UINT64, TYPE_FLOAT, TYPE_DOUBLE]:
+            args = self.minimum, self.maximum, self.default
+        elif (ptype == TYPE_STRING or ptype == TYPE_BOOLEAN or
+              ptype.is_a(TYPE_ENUM) or ptype.is_a(TYPE_FLAGS)):
+            args = (self.default,)
+        elif ptype in [TYPE_PYOBJECT, TYPE_GTYPE]:
+            args = ()
+        elif ptype.is_a(TYPE_OBJECT) or ptype.is_a(TYPE_BOXED):
+            args = ()
+        else:
+            raise NotImplementedError(ptype)
+
+        return (self.type, self.nick, self.blurb) + args + (self.flags,)
similarity index 71%
rename from gi/pygboxed.c
rename to gi/_gobject/pygboxed.c
index e521c96..a00386b 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
 
-#include <Python.h>
-#include <glib-object.h>
-
 #include <pyglib.h>
+#include "pygobject-private.h"
 #include "pygboxed.h"
-#include "pygtype.h"
 
-#include "pygi-type.h"
+#include "pygi.h"
 
 GQuark pygboxed_type_key;
 GQuark pygboxed_marshal_key;
@@ -39,10 +38,10 @@ PYGLIB_DEFINE_TYPE("gobject.GBoxed", PyGBoxed_Type, PyGBoxed);
 static void
 pyg_boxed_dealloc(PyGBoxed *self)
 {
-    if (self->free_on_dealloc && pyg_boxed_get_ptr (self)) {
-       PyGILState_STATE state = PyGILState_Ensure();
-       g_boxed_free (self->gtype, pyg_boxed_get_ptr (self));
-       PyGILState_Release(state);
+    if (self->free_on_dealloc && self->boxed) {
+       PyGILState_STATE state = pyglib_gil_state_ensure();
+       g_boxed_free(self->gtype, self->boxed);
+       pyglib_gil_state_release(state);
     }
 
     Py_TYPE(self)->tp_free((PyObject *)self);
@@ -51,11 +50,10 @@ pyg_boxed_dealloc(PyGBoxed *self)
 static PyObject*
 pyg_boxed_richcompare(PyObject *self, PyObject *other, int op)
 {
-    if (Py_TYPE(self) == Py_TYPE(other) &&
-        PyObject_IsInstance(self, (PyObject*)&PyGBoxed_Type))
-        return _pyglib_generic_ptr_richcompare (pyg_boxed_get_ptr (self),
-                                                pyg_boxed_get_ptr (other),
-                                                op);
+    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGBoxed_Type)
+        return _pyglib_generic_ptr_richcompare(((PyGBoxed*)self)->boxed,
+                                               ((PyGBoxed*)other)->boxed,
+                                               op);
     else {
         Py_INCREF(Py_NotImplemented);
         return Py_NotImplemented;
@@ -63,41 +61,20 @@ pyg_boxed_richcompare(PyObject *self, PyObject *other, int op)
 }
 
 
-static PYGLIB_Py_hash_t
+static long
 pyg_boxed_hash(PyGBoxed *self)
 {
-    return PYGLIB_Py_hash_t_FromVoidPtr (pyg_boxed_get_ptr (self));
+    return (long)self->boxed;
 }
 
 static PyObject *
-pyg_boxed_repr(PyGBoxed *boxed)
+pyg_boxed_repr(PyGBoxed *self)
 {
-    PyObject *module, *repr, *self = (PyObject *)boxed;
-    gchar *module_str, *namespace;
-
-    module = PyObject_GetAttrString (self, "__module__");
-    if (module == NULL)
-        return NULL;
-
-    if (!PYGLIB_PyUnicode_Check (module)) {
-        Py_DECREF (module);
-        return NULL;
-    }
+    gchar buf[128];
 
-    module_str = PYGLIB_PyUnicode_AsString (module);
-    namespace = g_strrstr (module_str, ".");
-    if (namespace == NULL) {
-        namespace = module_str;
-    } else {
-        namespace += 1;
-    }
-
-    repr = PYGLIB_PyUnicode_FromFormat ("<%s.%s object at %p (%s at %p)>",
-                                        namespace, Py_TYPE (self)->tp_name,
-                                        self, g_type_name (boxed->gtype),
-                                        pyg_boxed_get_ptr (boxed));
-    Py_DECREF (module);
-    return repr;
+    g_snprintf(buf, sizeof(buf), "<%s at 0x%lx>", g_type_name(self->gtype),
+              (long)self->boxed);
+    return PYGLIB_PyUnicode_FromString(buf);
 }
 
 static int
@@ -108,7 +85,7 @@ pyg_boxed_init(PyGBoxed *self, PyObject *args, PyObject *kwargs)
     if (!PyArg_ParseTuple(args, ":GBoxed.__init__"))
        return -1;
 
-    pyg_boxed_set_ptr (self, NULL);
+    self->boxed = NULL;
     self->gtype = 0;
     self->free_on_dealloc = FALSE;
 
@@ -127,7 +104,7 @@ pyg_boxed_free(PyObject *op)
 static PyObject *
 pyg_boxed_copy(PyGBoxed *self)
 {
-    return pyg_boxed_new (self->gtype, pyg_boxed_get_ptr (self), TRUE, TRUE);
+    return pyg_boxed_new (self->gtype, self->boxed, TRUE, TRUE);
 }
 
 
@@ -191,7 +168,7 @@ pyg_register_boxed(PyObject *dict, const gchar *class_name,
  * wrapper will be freed when the wrapper is deallocated.  If
  * @copy_boxed is True, then @own_ref must also be True.
  *
- * Returns: the boxed wrapper or %NULL and sets an exception.
+ * Returns: the boxed wrapper.
  */
 PyObject *
 pyg_boxed_new(GType boxed_type, gpointer boxed, gboolean copy_boxed,
@@ -204,11 +181,11 @@ pyg_boxed_new(GType boxed_type, gpointer boxed, gboolean copy_boxed,
     g_return_val_if_fail(boxed_type != 0, NULL);
     g_return_val_if_fail(!copy_boxed || (copy_boxed && own_ref), NULL);
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     if (!boxed) {
        Py_INCREF(Py_None);
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return Py_None;
     }
 
@@ -220,26 +197,20 @@ pyg_boxed_new(GType boxed_type, gpointer boxed, gboolean copy_boxed,
     if (!tp)
        tp = (PyTypeObject *)&PyGBoxed_Type; /* fallback */
 
-    if (!PyType_IsSubtype (tp, &PyGBoxed_Type)) {
-        PyErr_Format (PyExc_RuntimeError, "%s isn't a GBoxed", tp->tp_name);
-        PyGILState_Release (state);
-        return NULL;
-    }
-
     self = (PyGBoxed *)tp->tp_alloc(tp, 0);
 
     if (self == NULL) {
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
         return NULL;
     }
 
     if (copy_boxed)
        boxed = g_boxed_copy(boxed_type, boxed);
-    pyg_boxed_set_ptr (self, boxed);
+    self->boxed = boxed;
     self->gtype = boxed_type;
     self->free_on_dealloc = own_ref;
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
     
     return (PyObject *)self;
 }
similarity index 63%
rename from gi/pygboxed.h
rename to gi/_gobject/pygboxed.h
index 93b3de6..8433b9d 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGOBJECT_BOXED_H__ 
 #define __PYGOBJECT_BOXED_H__
 
-extern GQuark pygboxed_type_key;
-
-extern PyTypeObject PyGBoxed_Type;
-
-void       pyg_register_boxed (PyObject *dict, const gchar *class_name,
-                               GType boxed_type, PyTypeObject *type);
-PyObject * pyg_boxed_new      (GType boxed_type, gpointer boxed,
-                               gboolean copy_boxed, gboolean own_ref);
-
-const gchar * pyg_constant_strip_prefix(const gchar *name, const gchar *strip_prefix);
-
 void pygobject_boxed_register_types(PyObject *d);
 
 #endif /* __PYGOBJECT_BOXED_H__ */
similarity index 78%
rename from gi/pygenum.c
rename to gi/_gobject/pygenum.c
index 6897d53..c0a51a9 100644 (file)
@@ -16,7 +16,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
-#include "pyglib-python-compat.h"
-#include "pygi-type.h"
-#include "pygi-util.h"
+#include "pygobject-private.h"
 
-#include "pygtype.h"
-#include "pygenum.h"
-#include "pygboxed.h"
+#include "pygi.h"
 
 GQuark pygenum_class_key;
 
@@ -38,15 +36,18 @@ PYGLIB_DEFINE_TYPE("gobject.GEnum", PyGEnum_Type, PyGEnum);
 
 static PyObject *
 pyg_enum_val_new(PyObject* subclass, GType gtype, PyObject *intval)
-{
-    PyObject *args, *item;
-    args = Py_BuildValue("(O)", intval);
-    item =  (&PYGLIB_PyLong_Type)->tp_new((PyTypeObject*)subclass, args, NULL);
-    Py_DECREF(args);
-    if (!item)
-       return NULL;
+{     
+    PyObject *item;
+    
+#if PY_VERSION_HEX >= 0x03000000
+    item = PyObject_CallMethod((PyObject*)&PyLong_Type, "__new__", "OO",
+                               subclass, intval);
+#else
+    item = ((PyTypeObject *)subclass)->tp_alloc((PyTypeObject *)subclass, 0);
+    ((PyIntObject*)item)->ob_ival = PyInt_AS_LONG(intval);
+#endif    
     ((PyGEnum*)item)->gtype = gtype;
-
+    
     return item;
 }
 
@@ -73,50 +74,29 @@ pyg_enum_richcompare(PyGEnum *self, PyObject *other, int op)
 static PyObject *
 pyg_enum_repr(PyGEnum *self)
 {
-    PyObject *module;
-    GEnumClass *enum_class;
-    const char *value;
-    guint index;
-    char *namespace, *module_str;
-    static char tmp[256];
-    long l;
-
-    module = PyObject_GetAttrString ((PyObject *)self, "__module__");
-    if (module == NULL)
-        return NULL;
-
-    if (!PYGLIB_PyUnicode_Check (module)) {
-        Py_DECREF (module);
-        return NULL;
-    }
+  GEnumClass *enum_class;
+  const char *value;
+  guint index;
+  static char tmp[256];
+  long l;
 
-    enum_class = g_type_class_ref(self->gtype);
-    g_assert(G_IS_ENUM_CLASS(enum_class));
+  enum_class = g_type_class_ref(self->gtype);
+  g_assert(G_IS_ENUM_CLASS(enum_class));
 
-    l = PYGLIB_PyLong_AS_LONG(self);
-    for (index = 0; index < enum_class->n_values; index++)
-        if (l == enum_class->values[index].value)
-            break;
+  l = PYGLIB_PyLong_AS_LONG(self);
+  for (index = 0; index < enum_class->n_values; index++) 
+      if (l == enum_class->values[index].value)
+          break;
 
-    module_str = PYGLIB_PyUnicode_AsString (module);
-    namespace = g_strrstr (module_str, ".");
-    if (namespace == NULL) {
-        namespace = module_str;
-    } else {
-        namespace += 1;
-    }
+  value = enum_class->values[index].value_name;
+  if (value)
+      sprintf(tmp, "<enum %s of type %s>", value, g_type_name(self->gtype));
+  else
+      sprintf(tmp, "<enum %ld of type %s>", PYGLIB_PyLong_AS_LONG(self), g_type_name(self->gtype));
 
-    value = enum_class->values[index].value_name;
-    if (value)
-        sprintf(tmp, "<enum %s of type %s.%s>", value,
-                namespace, Py_TYPE (self)->tp_name);
-    else
-        sprintf(tmp, "<enum %ld of type %s.%s>", PYGLIB_PyLong_AS_LONG(self),
-                namespace, Py_TYPE (self)->tp_name);
-    Py_DECREF (module);
-    g_type_class_unref(enum_class);
+  g_type_class_unref(enum_class);
 
-    return PYGLIB_PyUnicode_FromString(tmp);
+  return PYGLIB_PyUnicode_FromString(tmp);
 }
 
 static PyObject *
@@ -165,7 +145,7 @@ pyg_enum_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
      * values might not have been that good", but we need to keep
      * backward compatibility.
      */
-    if (!PyDict_Check(values) || (gsize)PyDict_Size(values) > eclass->n_values) {
+    if (!PyDict_Check(values) || PyDict_Size(values) > eclass->n_values) {
        PyErr_SetString(PyExc_TypeError, "__enum_values__ badly formed");
        Py_DECREF(values);
        g_type_class_unref(eclass);
@@ -222,10 +202,6 @@ pyg_enum_from_gtype (GType gtype, int value)
     return retval;
 }
 
-/*
- * pyg_enum_add
- * Dynamically create a class derived from PyGEnum based on the given GType.
- */
 PyObject *
 pyg_enum_add (PyObject *   module,
              const char * typename,
@@ -235,20 +211,17 @@ pyg_enum_add (PyObject *   module,
     PyGILState_STATE state;
     PyObject *instance_dict, *stub, *values, *o;
     GEnumClass *eclass;
-    guint i;
+    int i;
 
     g_return_val_if_fail(typename != NULL, NULL);
-    if (!g_type_is_a (gtype, G_TYPE_ENUM)) {
-        PyErr_Format (PyExc_TypeError, "Trying to register gtype '%s' as enum when in fact it is of type '%s'",
-                      g_type_name (gtype), g_type_name (G_TYPE_FUNDAMENTAL (gtype)));
+    if (!g_type_is_a(gtype, G_TYPE_ENUM)) {
+        g_warning("Trying to register gtype '%s' as enum when in fact it is of type '%s'",
+                  g_type_name(gtype), g_type_name(G_TYPE_FUNDAMENTAL(gtype)));
         return NULL;
     }
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
-    /* Create a new type derived from GEnum. This is the same as:
-     * >>> stub = type(typename, (GEnum,), {})
-     */
     instance_dict = PyDict_New();
     stub = PyObject_CallFunction((PyObject *)&PyType_Type, "s(O)O",
                                  typename, (PyObject *)&PyGEnum_Type,
@@ -256,7 +229,7 @@ pyg_enum_add (PyObject *   module,
     Py_DECREF(instance_dict);
     if (!stub) {
        PyErr_SetString(PyExc_RuntimeError, "can't create const");
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return NULL;
     }
 
@@ -309,7 +282,7 @@ pyg_enum_add (PyObject *   module,
 
     g_type_class_unref(eclass);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
     return stub;
 }
 
@@ -381,7 +354,7 @@ pygobject_enum_register_types(PyObject *d)
     PyGEnum_Type.tp_new = pyg_enum_new;
 #else
     PyGEnum_Type.tp_new = PyLong_Type.tp_new;
-    PyGEnum_Type.tp_hash = PyLong_Type.tp_hash;
+    PyGEnum_Type.tp_hash = PyLong_Type.tp_hash;    
 #endif
     PyGEnum_Type.tp_repr = (reprfunc)pyg_enum_repr;
     PyGEnum_Type.tp_str = (reprfunc)pyg_enum_repr;
diff --git a/gi/_gobject/pygenum.h b/gi/_gobject/pygenum.h
new file mode 100644 (file)
index 0000000..0558831
--- /dev/null
@@ -0,0 +1,27 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGOBJECT_ENUM_H__ 
+#define __PYGOBJECT_ENUM_H__
+
+void pygobject_enum_register_types(PyObject *d);
+
+#endif /* __PYGOBJECT_ENUM_H__ */
similarity index 79%
rename from gi/pygflags.c
rename to gi/_gobject/pygflags.c
index fa12341..8c00f15 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (C) 1998-2003  James Henstridge
  * Copyright (C) 2004       Johan Dahlin
  *
- *   pygflags.c: GFlags wrapper
+ *   pygenum.c: GFlags wrapper
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -16,7 +16,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
-#include "pygi-type.h"
-#include "pygi-util.h"
-#include "pygtype.h"
+#include "pygobject-private.h"
 #include "pygflags.h"
-#include "pygboxed.h"
+
+#include "pygi.h"
 
 GQuark pygflags_class_key;
 
@@ -36,16 +37,18 @@ PYGLIB_DEFINE_TYPE("gobject.GFlags", PyGFlags_Type, PyGFlags);
 
 static PyObject *
 pyg_flags_val_new(PyObject* subclass, GType gtype, PyObject *intval)
-{
-    PyObject *args, *item;
-    args = Py_BuildValue("(O)", intval);
-    g_assert(PyObject_IsSubclass(subclass, (PyObject*) &PyGFlags_Type));
-    item = PYGLIB_PyLong_Type.tp_new((PyTypeObject*)subclass, args, NULL);
-    Py_DECREF(args);
-    if (!item)
-       return NULL;
+{     
+    PyObject *item;
+    
+#if PY_VERSION_HEX >= 0x03000000
+    item = PyObject_CallMethod((PyObject*)&PyLong_Type, "__new__", "OO",
+                               subclass, intval);
+#else
+    item = ((PyTypeObject *)subclass)->tp_alloc((PyTypeObject *)subclass, 0);
+    ((PyIntObject*)item)->ob_ival = PyInt_AS_LONG(intval);
+#endif    
     ((PyGFlags*)item)->gtype = gtype;
-
+    
     return item;
 }
 
@@ -70,11 +73,11 @@ pyg_flags_richcompare(PyGFlags *self, PyObject *other, int op)
 }
 
 static char *
-generate_repr(GType gtype, guint value)
+generate_repr(GType gtype, int value)
 {
     GFlagsClass *flags_class;
     char *retval = NULL, *tmp;
-    guint i;
+    int i;
 
     flags_class = g_type_class_ref(gtype);
     g_assert(G_IS_FLAGS_CLASS(flags_class));
@@ -105,37 +108,18 @@ generate_repr(GType gtype, guint value)
 static PyObject *
 pyg_flags_repr(PyGFlags *self)
 {
-    char *tmp, *retval, *module_str, *namespace;
-    PyObject *pyretval, *module;
+    char *tmp, *retval;
+    PyObject *pyretval;
 
-    tmp = generate_repr(self->gtype, PYGLIB_PyLong_AsUnsignedLong(self));
-
-    module = PyObject_GetAttrString ((PyObject *)self, "__module__");
-    if (module == NULL)
-        return NULL;
-
-    if (!PYGLIB_PyUnicode_Check (module)) {
-        Py_DECREF (module);
-        return NULL;
-    }
-
-    module_str = PYGLIB_PyUnicode_AsString (module);
-    namespace = g_strrstr (module_str, ".");
-    if (namespace == NULL) {
-        namespace = module_str;
-    } else {
-        namespace += 1;
-    }
+    tmp = generate_repr(self->gtype, PYGLIB_PyLong_AS_LONG(self));
 
     if (tmp)
-        retval = g_strdup_printf("<flags %s of type %s.%s>", tmp,
-                                 namespace, Py_TYPE (self)->tp_name);
+        retval = g_strdup_printf("<flags %s of type %s>", tmp,
+                                 g_type_name(self->gtype));
     else
-        retval = g_strdup_printf("<flags %ld of type %s.%s>",
-                                 PYGLIB_PyLong_AsUnsignedLong (self),
-                                 namespace, Py_TYPE (self)->tp_name);
+        retval = g_strdup_printf("<flags %ld of type %s>", PYGLIB_PyLong_AS_LONG(self),
+                                 g_type_name(self->gtype));
     g_free(tmp);
-    Py_DECREF (module);
 
     pyretval = PYGLIB_PyUnicode_FromString(retval);
     g_free(retval);
@@ -147,12 +131,12 @@ static PyObject *
 pyg_flags_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 {
     static char *kwlist[] = { "value", NULL };
-    gulong value;
+    long value;
     PyObject *pytc, *values, *ret, *pyint;
     GType gtype;
     GFlagsClass *eclass;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "k", kwlist, &value))
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "l", kwlist, &value))
        return NULL;
 
     pytc = PyObject_GetAttrString((PyObject *)type, "__gtype__");
@@ -186,7 +170,7 @@ pyg_flags_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 
     g_type_class_unref(eclass);
 
-    pyint = PYGLIB_PyLong_FromUnsignedLong(value);
+    pyint = PYGLIB_PyLong_FromLong(value);
     ret = PyDict_GetItem(values, pyint);
     if (!ret) {
         PyErr_Clear();
@@ -204,13 +188,10 @@ pyg_flags_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 }
 
 PyObject*
-pyg_flags_from_gtype (GType gtype, guint value)
+pyg_flags_from_gtype (GType gtype, int value)
 {
     PyObject *pyclass, *values, *retval, *pyint;
 
-    if (PyErr_Occurred())
-        return PYGLIB_PyLong_FromUnsignedLong(0);
-
     g_return_val_if_fail(gtype != G_TYPE_INVALID, NULL);
 
     /* Get a wrapper class by:
@@ -224,11 +205,11 @@ pyg_flags_from_gtype (GType gtype, guint value)
     if (!pyclass)
         pyclass = pyg_flags_add(NULL, g_type_name(gtype), NULL, gtype);
     if (!pyclass)
-       return PYGLIB_PyLong_FromUnsignedLong(value);
+       return PYGLIB_PyLong_FromLong(value);
 
     values = PyDict_GetItemString(((PyTypeObject *)pyclass)->tp_dict,
                                  "__flags_values__");
-    pyint = PYGLIB_PyLong_FromUnsignedLong(value);
+    pyint = PYGLIB_PyLong_FromLong(value);
     retval = PyDict_GetItem(values, pyint);
     if (!retval) {
        PyErr_Clear();
@@ -243,10 +224,6 @@ pyg_flags_from_gtype (GType gtype, guint value)
     return retval;
 }
 
-/*
- * pyg_flags_add
- * Dynamically create a class derived from PyGFlags based on the given GType.
- */
 PyObject *
 pyg_flags_add (PyObject *   module,
               const char * typename,
@@ -256,7 +233,7 @@ pyg_flags_add (PyObject *   module,
     PyGILState_STATE state;
     PyObject *instance_dict, *stub, *values, *o;
     GFlagsClass *eclass;
-    guint i;
+    int i;
 
     g_return_val_if_fail(typename != NULL, NULL);
     if (!g_type_is_a(gtype, G_TYPE_FLAGS)) {
@@ -265,19 +242,16 @@ pyg_flags_add (PyObject *   module,
         return NULL;
     }
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
-    /* Create a new type derived from GFlags. This is the same as:
-     * >>> stub = type(typename, (GFlags,), {})
-     */
     instance_dict = PyDict_New();
     stub = PyObject_CallFunction((PyObject *)&PyType_Type, "s(O)O",
                                  typename, (PyObject *)&PyGFlags_Type,
                                  instance_dict);
     Py_DECREF(instance_dict);
     if (!stub) {
-       PyErr_SetString(PyExc_RuntimeError, "can't create GFlags subtype");
-       PyGILState_Release(state);
+       PyErr_SetString(PyExc_RuntimeError, "can't create const");
+       pyglib_gil_state_release(state);
         return NULL;
     }
 
@@ -306,8 +280,7 @@ pyg_flags_add (PyObject *   module,
     for (i = 0; i < eclass->n_values; i++) {
       PyObject *item, *intval;
       
-      intval = PYGLIB_PyLong_FromUnsignedLong(eclass->values[i].value);
-      g_assert(PyErr_Occurred() == NULL);
+      intval = PYGLIB_PyLong_FromLong(eclass->values[i].value);
       item = pyg_flags_val_new(stub, gtype, intval);
       PyDict_SetItem(values, intval, item);
       Py_DECREF(intval);
@@ -329,7 +302,7 @@ pyg_flags_add (PyObject *   module,
 
     g_type_class_unref(eclass);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 
     return stub;
 }
@@ -342,7 +315,7 @@ pyg_flags_and(PyGFlags *a, PyGFlags *b)
                                                       (PyObject*)b);
 
        return pyg_flags_from_gtype(a->gtype,
-                                   PYGLIB_PyLong_AsUnsignedLong(a) & PYGLIB_PyLong_AsUnsignedLong(b));
+                                   PYGLIB_PyLong_AS_LONG(a) & PYGLIB_PyLong_AS_LONG(b));
 }
 
 static PyObject *
@@ -352,7 +325,7 @@ pyg_flags_or(PyGFlags *a, PyGFlags *b)
                return PYGLIB_PyLong_Type.tp_as_number->nb_or((PyObject*)a,
                                                      (PyObject*)b);
 
-       return pyg_flags_from_gtype(a->gtype, PYGLIB_PyLong_AsUnsignedLong(a) | PYGLIB_PyLong_AsUnsignedLong(b));
+       return pyg_flags_from_gtype(a->gtype, PYGLIB_PyLong_AS_LONG(a) | PYGLIB_PyLong_AS_LONG(b));
 }
 
 static PyObject *
@@ -363,7 +336,7 @@ pyg_flags_xor(PyGFlags *a, PyGFlags *b)
                                                       (PyObject*)b);
 
        return pyg_flags_from_gtype(a->gtype,
-                                   PYGLIB_PyLong_AsUnsignedLong(a) ^ PYGLIB_PyLong_AsUnsignedLong(b));
+                                   PYGLIB_PyLong_AS_LONG(a) ^ PYGLIB_PyLong_AS_LONG(b));
 
 }
 
@@ -386,7 +359,7 @@ pyg_flags_get_first_value_name(PyGFlags *self, void *closure)
 
   flags_class = g_type_class_ref(self->gtype);
   g_assert(G_IS_FLAGS_CLASS(flags_class));
-  flags_value = g_flags_get_first_value(flags_class, PYGLIB_PyLong_AsUnsignedLong(self));
+  flags_value = g_flags_get_first_value(flags_class, PYGLIB_PyLong_AS_LONG(self));
   if (flags_value)
       retval = PYGLIB_PyUnicode_FromString(flags_value->value_name);
   else {
@@ -408,7 +381,7 @@ pyg_flags_get_first_value_nick(PyGFlags *self, void *closure)
   flags_class = g_type_class_ref(self->gtype);
   g_assert(G_IS_FLAGS_CLASS(flags_class));
 
-  flags_value = g_flags_get_first_value(flags_class, PYGLIB_PyLong_AsUnsignedLong(self));
+  flags_value = g_flags_get_first_value(flags_class, PYGLIB_PyLong_AS_LONG(self));
   if (flags_value)
       retval = PYGLIB_PyUnicode_FromString(flags_value->value_nick);
   else {
@@ -425,14 +398,14 @@ pyg_flags_get_value_names(PyGFlags *self, void *closure)
 {
   GFlagsClass *flags_class;
   PyObject *retval;
-  guint i;
+  int i;
 
   flags_class = g_type_class_ref(self->gtype);
   g_assert(G_IS_FLAGS_CLASS(flags_class));
 
   retval = PyList_New(0);
   for (i = 0; i < flags_class->n_values; i++)
-      if ((PYGLIB_PyLong_AsUnsignedLong(self) & flags_class->values[i].value) == flags_class->values[i].value)
+      if ((PYGLIB_PyLong_AS_LONG(self) & flags_class->values[i].value) == flags_class->values[i].value)
          PyList_Append(retval, PYGLIB_PyUnicode_FromString(flags_class->values[i].value_name));
 
   g_type_class_unref(flags_class);
@@ -445,18 +418,15 @@ pyg_flags_get_value_nicks(PyGFlags *self, void *closure)
 {
   GFlagsClass *flags_class;
   PyObject *retval;
-  guint i;
+  int i;
 
   flags_class = g_type_class_ref(self->gtype);
   g_assert(G_IS_FLAGS_CLASS(flags_class));
 
   retval = PyList_New(0);
   for (i = 0; i < flags_class->n_values; i++)
-      if ((PYGLIB_PyLong_AsUnsignedLong(self) & flags_class->values[i].value) == flags_class->values[i].value) {
-         PyObject *py_nick = PYGLIB_PyUnicode_FromString(flags_class->values[i].value_nick);
-         PyList_Append(retval, py_nick);
-         Py_DECREF (py_nick);
-      }
+      if ((PYGLIB_PyLong_AS_LONG(self) & flags_class->values[i].value) == flags_class->values[i].value)
+         PyList_Append(retval, PYGLIB_PyUnicode_FromString(flags_class->values[i].value_nick));
 
   g_type_class_unref(flags_class);
 
diff --git a/gi/_gobject/pygflags.h b/gi/_gobject/pygflags.h
new file mode 100644 (file)
index 0000000..e93265c
--- /dev/null
@@ -0,0 +1,27 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGOBJECT_FLAGS_H__ 
+#define __PYGOBJECT_FLAGS_H__
+
+void pygobject_flags_register_types(PyObject *d);
+
+#endif /* __PYGOBJECT_FLAGS_H__ */
similarity index 94%
rename from gi/pyginterface.c
rename to gi/_gobject/pyginterface.c
index 1737de5..29af546 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <Python.h>
-#include <glib-object.h>
 #include "pyglib.h"
-
-#include "pyginterface.h"
-#include "pygtype.h"
+#include "pygobject-private.h"
 
 GQuark pyginterface_type_key;
 GQuark pyginterface_info_key;
similarity index 89%
rename from gi/pyginterface.h
rename to gi/_gobject/pyginterface.h
index d6d8b9d..0f390c2 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGOBJECT_INTERFACE_H__ 
diff --git a/gi/_gobject/pygobject-private.h b/gi/_gobject/pygobject-private.h
new file mode 100644 (file)
index 0000000..1b1d6db
--- /dev/null
@@ -0,0 +1,240 @@
+#ifndef _PYGOBJECT_PRIVATE_H_
+#define _PYGOBJECT_PRIVATE_H_
+
+#ifdef _PYGOBJECT_H_
+#  error "include pygobject.h or pygobject-private.h, but not both"
+#endif
+
+#define _INSIDE_PYGOBJECT_
+#include "pygobject.h"
+
+#include "pyglib-python-compat.h"
+
+#define PYGOBJECT_REGISTER_GTYPE(d, type, name, gtype)      \
+  {                                                         \
+    PyObject *o;                                           \
+    PYGLIB_REGISTER_TYPE(d, type, name);                    \
+    PyDict_SetItemString(type.tp_dict, "__gtype__",         \
+                        o=pyg_type_wrapper_new(gtype));    \
+    Py_DECREF(o);                                           \
+}
+
+/* from gobjectmodule.c */
+extern struct _PyGObject_Functions pygobject_api_functions;
+#define pyg_block_threads()   G_STMT_START { \
+    if (pygobject_api_functions.block_threads != NULL)    \
+      (* pygobject_api_functions.block_threads)();        \
+  } G_STMT_END
+#define pyg_unblock_threads() G_STMT_START { \
+    if (pygobject_api_functions.unblock_threads != NULL)  \
+      (* pygobject_api_functions.unblock_threads)();      \
+  } G_STMT_END
+
+#define pyg_threads_enabled (pygobject_api_functions.threads_enabled)
+
+#ifdef DISABLE_THREADING
+#define pyg_gil_state_ensure() 0
+#define pyg_gil_state_release(state) G_STMT_START {     \
+    } G_STMT_END
+
+#else
+#define pyg_gil_state_ensure() (pygobject_api_functions.threads_enabled? (PyGILState_Ensure()) : 0)
+#define pyg_gil_state_release(state) G_STMT_START {     \
+    if (pygobject_api_functions.threads_enabled)        \
+        PyGILState_Release(state);                      \
+    } G_STMT_END
+#endif
+
+#define pyg_begin_allow_threads                         \
+    G_STMT_START {                                      \
+        PyThreadState *_save = NULL;                    \
+        if (pygobject_api_functions.threads_enabled)    \
+            _save = PyEval_SaveThread();
+#define pyg_end_allow_threads                           \
+        if (pygobject_api_functions.threads_enabled)    \
+            PyEval_RestoreThread(_save);                \
+    } G_STMT_END
+
+
+#ifndef Py_CLEAR /* since Python 2.4 */
+# define Py_CLEAR(op)                          \
+        do {                                   \
+                if (op) {                      \
+                        PyObject *tmp = (PyObject *)(op);      \
+                        (op) = NULL;           \
+                        Py_DECREF(tmp);                \
+                }                              \
+        } while (0)
+#endif
+
+extern GType PY_TYPE_OBJECT;
+
+extern GQuark pygboxed_type_key;
+extern GQuark pygboxed_marshal_key;
+extern GQuark pygenum_class_key;
+extern GQuark pygflags_class_key;
+extern GQuark pyginterface_type_key;
+extern GQuark pyginterface_info_key;
+extern GQuark pygobject_class_init_key;
+extern GQuark pygobject_class_key;
+extern GQuark pygobject_wrapper_key;
+extern GQuark pygpointer_class_key;
+extern GQuark pygobject_has_updated_constructor_key;
+extern GQuark pygobject_instance_data_key;
+
+void     pygobject_data_free  (PyGObjectData *data);
+void     pyg_destroy_notify   (gpointer     user_data);
+gboolean pyg_handler_marshal  (gpointer     user_data);
+gboolean pyg_error_check      (GError     **error);
+int      pygobject_constructv (PyGObject   *self,
+                               guint        n_parameters,
+                               GParameter  *parameters);
+
+PyObject *pyg_integer_richcompare(PyObject *v,
+                                  PyObject *w,
+                                  int op);
+
+gboolean pyg_gerror_exception_check(GError **error);
+
+void pygobject_ref_float(PyGObject *self);
+void pygobject_ref_sink(PyGObject *self);
+
+/* from pygtype.h */
+extern PyTypeObject PyGTypeWrapper_Type;
+
+PyObject *pyg_type_wrapper_new (GType type);
+GType     pyg_type_from_object_strict (PyObject *obj, gboolean strict);
+GType     pyg_type_from_object (PyObject *obj);
+
+gint pyg_enum_get_value  (GType enum_type, PyObject *obj, gint *val);
+gint pyg_flags_get_value (GType flag_type, PyObject *obj, gint *val);
+int pyg_pyobj_to_unichar_conv (PyObject* py_obj, void* ptr);
+
+typedef PyObject *(* fromvaluefunc)(const GValue *value);
+typedef int (*tovaluefunc)(GValue *value, PyObject *obj);
+
+void      pyg_register_gtype_custom(GType gtype,
+                            fromvaluefunc from_func,
+                            tovaluefunc to_func);
+int       pyg_value_from_pyobject(GValue *value, PyObject *obj);
+PyObject *pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed);
+int       pyg_param_gvalue_from_pyobject(GValue* value,
+                                         PyObject* py_obj,
+                                         const GParamSpec* pspec);
+PyObject *pyg_param_gvalue_as_pyobject(const GValue* gvalue,
+                                       gboolean copy_boxed,
+                                       const GParamSpec* pspec);
+
+GClosure *pyg_closure_new(PyObject *callback, PyObject *extra_args, PyObject *swap_data);
+void     pyg_closure_set_exception_handler(GClosure *closure,
+                                           PyClosureExceptionHandler handler);
+GClosure *pyg_signal_class_closure_get(void);
+GClosure *gclosure_from_pyfunc(PyGObject *object, PyObject *func);
+
+PyObject *pyg_object_descr_doc_get(void);
+void pygobject_object_register_types(PyObject *d);
+
+extern PyTypeObject *PyGObject_MetaType;
+
+/* from pygobject.h */
+extern PyTypeObject PyGObject_Type;
+extern PyTypeObject PyGProps_Type;
+extern PyTypeObject PyGPropsDescr_Type;
+extern PyTypeObject PyGPropsIter_Type;
+
+  /* Data that belongs to the GObject instance, not the Python wrapper */
+struct _PyGObjectData {
+    PyTypeObject *type; /* wrapper type for this instance */
+    GSList *closures;
+};
+
+void          pygobject_register_class   (PyObject *dict,
+                                         const gchar *type_name,
+                                         GType gtype, PyTypeObject *type,
+                                         PyObject *bases);
+void          pygobject_register_wrapper (PyObject *self);
+PyObject *    pygobject_new              (GObject *obj);
+PyObject *    pygobject_new_full         (GObject *obj, gboolean sink, gpointer g_class);
+void          pygobject_sink             (GObject *obj);
+PyTypeObject *pygobject_lookup_class     (GType gtype);
+void          pygobject_watch_closure    (PyObject *self, GClosure *closure);
+void          pygobject_register_sinkfunc(GType type,
+                                         void (* sinkfunc)(GObject *object));
+int           pyg_type_register          (PyTypeObject *class,
+                                         const gchar *type_name);
+
+/* from pygboxed.c */
+extern PyTypeObject PyGBoxed_Type;
+
+void       pyg_register_boxed (PyObject *dict, const gchar *class_name,
+                              GType boxed_type, PyTypeObject *type);
+PyObject * pyg_boxed_new      (GType boxed_type, gpointer boxed,
+                              gboolean copy_boxed, gboolean own_ref);
+
+extern PyTypeObject PyGPointer_Type;
+
+void       pyg_register_pointer (PyObject *dict, const gchar *class_name,
+                                GType pointer_type, PyTypeObject *type);
+PyObject * pyg_pointer_new      (GType pointer_type, gpointer pointer);
+
+const gchar * pyg_constant_strip_prefix(const gchar *name, const gchar *strip_prefix);
+
+/* pygflags */
+typedef struct {
+       PYGLIB_PyLongObject parent;
+    GType gtype;
+} PyGFlags;
+
+extern PyTypeObject PyGFlags_Type;
+
+#define PyGFlags_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGFlags_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_FLAGS))
+
+extern PyObject * pyg_flags_add        (PyObject *   module,
+                                       const char * type_name,
+                                       const char * strip_prefix,
+                                       GType        gtype);
+extern PyObject * pyg_flags_from_gtype (GType        gtype,
+                                       int          value);
+
+/* pygenum */
+#define PyGEnum_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGEnum_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_ENUM))
+
+typedef struct {
+       PYGLIB_PyLongObject parent;
+    GType gtype;
+} PyGEnum;
+
+extern PyTypeObject PyGEnum_Type;
+
+extern PyObject * pyg_enum_add        (PyObject *   module,
+                                      const char * type_name,
+                                      const char * strip_prefix,
+                                      GType        gtype);
+extern PyObject * pyg_enum_from_gtype (GType        gtype,
+                                      int          value);
+
+/* pygtype.c */
+extern GHashTable *custom_type_registration;
+void pyg_type_register_custom_callback(const gchar *type_name,
+                                      PyGTypeRegistrationFunction callback,
+                                      gpointer data);
+PyTypeObject * pyg_type_get_custom(const gchar *name);
+GType _pyg_type_from_name(const gchar *name);
+
+/* pygobject.c */
+extern PyTypeObject PyGObjectWeakRef_Type;
+
+static inline PyGObjectData *
+pyg_object_peek_inst_data(GObject *obj)
+{
+    return ((PyGObjectData *)
+            g_object_get_qdata(obj, pygobject_instance_data_key));
+}
+
+gboolean        pygobject_prepare_construct_properties  (GObjectClass *class,
+                                                         PyObject *kwargs,
+                                                         guint *n_params,
+                                                         GParameter **params);
+
+
+#endif
similarity index 75%
rename from gi/pygobject-object.c
rename to gi/_gobject/pygobject.c
index ca82ffb..9d20b97 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
-#include "pygobject-object.h"
+#include "pygobject-private.h"
 #include "pyginterface.h"
 #include "pygparamspec.h"
-#include "pygtype.h"
-#include "pygboxed.h"
-#include "gobjectmodule.h"
 
-#include "pygi-value.h"
-#include "pygi-type.h"
-#include "pygi-property.h"
-#include "pygi-signal-closure.h"
+#include "pygi.h"
 
-extern PyObject *PyGIDeprecationWarning;
 
 static void pygobject_dealloc(PyGObject *self);
 static int  pygobject_traverse(PyGObject *self, visitproc visit, void *arg);
@@ -44,86 +39,33 @@ static PyObject * pyg_type_get_bases(GType gtype);
 static inline int pygobject_clear(PyGObject *self);
 static PyObject * pygobject_weak_ref_new(GObject *obj, PyObject *callback, PyObject *user_data);
 static inline PyGObjectData * pyg_object_peek_inst_data(GObject *obj);
+static PyObject * pygobject_weak_ref_new(GObject *obj, PyObject *callback, PyObject *user_data);
 static void pygobject_inherit_slots(PyTypeObject *type, PyObject *bases,
                                    gboolean check_for_present);
 static void pygobject_find_slot_for(PyTypeObject *type, PyObject *bases, int slot_offset,
                                    gboolean check_for_present);
 GType PY_TYPE_OBJECT = 0;
-GQuark pygobject_custom_key;
 GQuark pygobject_class_key;
 GQuark pygobject_class_init_key;
 GQuark pygobject_wrapper_key;
 GQuark pygobject_has_updated_constructor_key;
 GQuark pygobject_instance_data_key;
 
-GClosure *
-gclosure_from_pyfunc(PyGObject *object, PyObject *func)
-{
-    GSList *l;
-    PyGObjectData *inst_data;
-    inst_data = pyg_object_peek_inst_data(object->obj);
-    if (inst_data) {
-        for (l = inst_data->closures; l; l = l->next) {
-            PyGClosure *pyclosure = l->data;
-            int res = PyObject_RichCompareBool(pyclosure->callback, func, Py_EQ);
-            if (res == -1) {
-                PyErr_Clear(); /* Is there anything else to do? */
-            } else if (res) {
-                return (GClosure*)pyclosure;
-            }
-        }
-    }
-    return NULL;
-}
-
-/* Copied from glib. gobject uses hyphens in property names, but in Python
- * we can only represent hyphens as underscores. Convert underscores to
- * hyphens for glib compatibility. */
-static void
-canonicalize_key (gchar *key)
-{
-    gchar *p;
-
-    for (p = key; *p != 0; p++)
-    {
-        gchar c = *p;
-
-        if (c != '-' &&
-            (c < '0' || c > '9') &&
-            (c < 'A' || c > 'Z') &&
-            (c < 'a' || c > 'z'))
-                *p = '-';
-    }
-}
 
 /* -------------- class <-> wrapper manipulation --------------- */
 
-static void
+void
 pygobject_data_free(PyGObjectData *data)
 {
-    /* This function may be called after the python interpreter has already
-     * been shut down. If this happens, we cannot do any python calls, so just
-     * free the memory. */
-    PyGILState_STATE state;
-    PyThreadState *_save = NULL;
-    gboolean state_saved = FALSE;
-
+    PyGILState_STATE state = pyglib_gil_state_ensure();
     GSList *closures, *tmp;
-
-    if (Py_IsInitialized()) {
-       state_saved = TRUE;
-       state = PyGILState_Ensure();
-       Py_DECREF(data->type);
-       /* We cannot use Py_BEGIN_ALLOW_THREADS here because this is inside
-        * a branch. */
-       Py_UNBLOCK_THREADS; /* Modifies _save */
-    }
-
+    Py_DECREF(data->type);
     tmp = closures = data->closures;
 #ifndef NDEBUG
     data->closures = NULL;
     data->type = NULL;
 #endif
+    pyg_begin_allow_threads;
     while (tmp) {
        GClosure *closure = tmp->data;
  
@@ -132,16 +74,13 @@ pygobject_data_free(PyGObjectData *data)
        tmp = tmp->next;
        g_closure_invalidate(closure);
     }
+    pyg_end_allow_threads;
  
     if (data->closures != NULL)
        g_warning("invalidated all closures, but data->closures != NULL !");
 
     g_free(data);
-
-    if (state_saved && Py_IsInitialized ()) {
-       Py_BLOCK_THREADS; /* Restores _save */
-       PyGILState_Release(state);
-    }
+    pyglib_gil_state_release(state);
 }
 
 static inline PyGObjectData *
@@ -174,6 +113,8 @@ pygobject_get_inst_data(PyGObject *self)
 }
 
 
+GHashTable *custom_type_registration = NULL;
+
 PyTypeObject *PyGObject_MetaType = NULL;
 
 /**
@@ -206,7 +147,7 @@ typedef struct {
     guint index;
 } PyGPropsIter;
 
-PYGLIB_DEFINE_TYPE("gi._gi.GPropsIter", PyGPropsIter_Type, PyGPropsIter);
+PYGLIB_DEFINE_TYPE("gi._gobject.GPropsIter", PyGPropsIter_Type, PyGPropsIter);
 
 static void
 pyg_props_iter_dealloc(PyGPropsIter *self)
@@ -277,9 +218,11 @@ build_parameter_list(GObjectClass *class)
 static PyObject*
 PyGProps_getattro(PyGProps *self, PyObject *attr)
 {
-    char *attr_name, *property_name;
+    char *attr_name;
     GObjectClass *class;
     GParamSpec *pspec;
+    GValue value = { 0, };
+    PyObject *ret;
 
     attr_name = PYGLIB_PyUnicode_AsString(attr);
     if (!attr_name) {
@@ -288,30 +231,48 @@ PyGProps_getattro(PyGProps *self, PyObject *attr)
     }
 
     class = g_type_class_ref(self->gtype);
+    
+    if (!strcmp(attr_name, "__members__")) {
+       return build_parameter_list(class);
+    }
+
+    if (self->pygobject != NULL) {
+        ret = pygi_get_property_value (self->pygobject, attr_name);
+        if (ret != NULL)
+            return ret;
+    }
 
-    /* g_object_class_find_property recurses through the class hierarchy,
-     * so the resulting pspec tells us the owner_type that owns the property
-     * we're dealing with. */
-    property_name = g_strdup(attr_name);
-    canonicalize_key(property_name);
-    pspec = g_object_class_find_property(class, property_name);
-    g_free(property_name);
+    pspec = g_object_class_find_property(class, attr_name);
     g_type_class_unref(class);
 
     if (!pspec) {
        return PyObject_GenericGetAttr((PyObject *)self, attr);
     }
 
+    if (!(pspec->flags & G_PARAM_READABLE)) {
+       PyErr_Format(PyExc_TypeError,
+                    "property '%s' is not readable", attr_name);
+       return NULL;
+    }
+
+    /* If we're doing it without an instance, return a GParamSpec */
     if (!self->pygobject) {
-        /* If we're doing it without an instance, return a GParamSpec */
         return pyg_param_spec_new(pspec);
     }
-
-    return pygi_get_property_value (self->pygobject, pspec);
+    
+    g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+    pyg_begin_allow_threads;
+    g_object_get_property(self->pygobject->obj, attr_name, &value);
+    pyg_end_allow_threads;
+    ret = pyg_param_gvalue_as_pyobject(&value, TRUE, pspec);
+    g_value_unset(&value);
+    
+    return ret;
 }
 
 static gboolean
 set_property_from_pspec(GObject *obj,
+                       char *attr_name,
                        GParamSpec *pspec,
                        PyObject *pvalue)
 {
@@ -320,44 +281,39 @@ set_property_from_pspec(GObject *obj,
     if (pspec->flags & G_PARAM_CONSTRUCT_ONLY) {
        PyErr_Format(PyExc_TypeError,
                     "property '%s' can only be set in constructor",
-                    pspec->name);
+                    attr_name);
        return FALSE;
     }  
 
     if (!(pspec->flags & G_PARAM_WRITABLE)) {
        PyErr_Format(PyExc_TypeError,
-                    "property '%s' is not writable", pspec->name);
+                    "property '%s' is not writable", attr_name);
        return FALSE;
     }  
 
     g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
     if (pyg_param_gvalue_from_pyobject(&value, pvalue, pspec) < 0) {
-        PyObject *pvalue_str = PyObject_Str(pvalue);
-       PyErr_Format(PyExc_TypeError,
-                    "could not convert '%s' to type '%s' when setting property '%s.%s'",
-                    PYGLIB_PyUnicode_AsString(pvalue_str),
-                    g_type_name(G_PARAM_SPEC_VALUE_TYPE(pspec)),
-                    G_OBJECT_TYPE_NAME(obj),
-                    pspec->name);
-       Py_DECREF(pvalue_str);
+       PyErr_SetString(PyExc_TypeError,
+                       "could not convert argument to correct param type");
        return FALSE;
     }
 
-    Py_BEGIN_ALLOW_THREADS;
-    g_object_set_property(obj, pspec->name, &value);
-    g_value_unset(&value);
-    Py_END_ALLOW_THREADS;
+    pyg_begin_allow_threads;
+    g_object_set_property(obj, attr_name, &value);
+    pyg_end_allow_threads;
 
+    g_value_unset(&value);
+    
     return TRUE;
 }
 
-PYGLIB_DEFINE_TYPE("gi._gi.GProps", PyGProps_Type, PyGProps);
+PYGLIB_DEFINE_TYPE("gi._gobject.GProps", PyGProps_Type, PyGProps);
 
 static int
 PyGProps_setattro(PyGProps *self, PyObject *attr, PyObject *pvalue)
 {
     GParamSpec *pspec;
-    char *attr_name, *property_name;
+    char *attr_name;
     GObject *obj;
     int ret = -1;
     
@@ -379,33 +335,20 @@ PyGProps_setattro(PyGProps *self, PyObject *attr, PyObject *pvalue)
         return -1;
     }
 
-    obj = self->pygobject->obj;
-
-    property_name = g_strdup(attr_name);
-    canonicalize_key(property_name);
+    ret = pygi_set_property_value (self->pygobject, attr_name, pvalue);
+    if (ret == 0)
+        return 0;
+    else if (ret == -1)
+        if (PyErr_Occurred())
+            return -1;
 
-    /* g_object_class_find_property recurses through the class hierarchy,
-     * so the resulting pspec tells us the owner_type that owns the property
-     * we're dealing with. */
-    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj),
-                                         property_name);
-    g_free(property_name);
+    obj = self->pygobject->obj;
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj), attr_name);
     if (!pspec) {
        return PyObject_GenericSetAttr((PyObject *)self, attr, pvalue);
     }
-    if (!pyg_gtype_is_custom (pspec->owner_type)) {
-        /* This GType is not implemented in Python: see if we can set the
-         * property via gi. */
-        ret = pygi_set_property_value (self->pygobject, pspec, pvalue);
-        if (ret == 0)
-            return 0;
-        else if (ret == -1 && PyErr_Occurred())
-            return -1;
-    }
 
-    /* This GType is implemented in Python, or we failed to set it via gi:
-     * do a straightforward set. */
-    if (!set_property_from_pspec(obj, pspec, pvalue))
+    if (!set_property_from_pspec(obj, attr_name, pspec, pvalue))
        return -1;
                                  
     return 0;
@@ -433,25 +376,6 @@ pygobject_props_get_iter(PyGProps *self)
     return (PyObject *) iter;
 }
 
-static PyObject*
-pygobject_props_dir(PyGProps *self)
-{
-    PyObject *ret;
-    GObjectClass *class;
-
-    class = g_type_class_ref (self->gtype);
-    ret = build_parameter_list (class);
-    g_type_class_unref (class);
-
-    return ret;
-}
-
-static PyMethodDef pygobject_props_methods[] = {
-    { "__dir__", (PyCFunction)pygobject_props_dir, METH_NOARGS},
-    { NULL, NULL, 0}
-};
-
-
 static Py_ssize_t
 PyGProps_length(PyGProps *self)
 {
@@ -477,7 +401,7 @@ static PySequenceMethods _PyGProps_as_sequence = {
     0
 };
 
-PYGLIB_DEFINE_TYPE("gi._gi.GPropsDescr", PyGPropsDescr_Type, PyObject);
+PYGLIB_DEFINE_TYPE("gi._gobject.GPropsDescr", PyGPropsDescr_Type, PyObject);
 
 static PyObject *
 pyg_props_descr_descr_get(PyObject *self, PyObject *obj, PyObject *type)
@@ -603,24 +527,17 @@ pygobject_register_class(PyObject *dict, const gchar *type_name,
 static void
 pyg_toggle_notify (gpointer data, GObject *object, gboolean is_last_ref)
 {
-    PyGObject *self;
+    PyGObject *self = (PyGObject*) data;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
-    /* Avoid thread safety problems by using qdata for wrapper retrieval
-     * instead of the user data argument.
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=709223
-     */
-    self = (PyGObject *)g_object_get_qdata (object, pygobject_wrapper_key);
-    if (self) {
-        if (is_last_ref)
-            Py_DECREF(self);
-        else
-            Py_INCREF(self);
-    }
+    if (is_last_ref)
+       Py_DECREF(self);
+    else
+        Py_INCREF(self);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
   /* Called when the inst_dict is first created; switches the 
@@ -639,7 +556,7 @@ pygobject_switch_to_toggle_ref(PyGObject *self)
       /* Note that add_toggle_ref will never immediately call back into 
          pyg_toggle_notify */
     Py_INCREF((PyObject *) self);
-    g_object_add_toggle_ref(self->obj, pyg_toggle_notify, NULL);
+    g_object_add_toggle_ref(self->obj, pyg_toggle_notify, self);
     g_object_unref(self->obj);
 }
 
@@ -701,7 +618,7 @@ pyg_type_get_bases(GType gtype)
     guint n_interfaces;
     PyTypeObject *py_parent_type, *py_interface_type;
     PyObject *bases;
-    guint i;
+    int i;
     
     if (G_UNLIKELY(gtype == G_TYPE_OBJECT))
         return NULL;
@@ -737,7 +654,7 @@ pyg_type_get_bases(GType gtype)
  *
  * Returns: a PyTypeObject for the new type or NULL if it couldn't be created
  */
-static PyTypeObject *
+PyTypeObject *
 pygobject_new_with_interfaces(GType gtype)
 {
     PyGILState_STATE state;
@@ -746,8 +663,10 @@ pygobject_new_with_interfaces(GType gtype)
     PyObject *dict;
     PyTypeObject *py_parent_type;
     PyObject *bases;
+    PyObject *modules, *module;
+    gchar *type_name, *mod_name, *gtype_name;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     bases = pyg_type_get_bases(gtype);
     py_parent_type = (PyTypeObject *) PyTuple_GetItem(bases, 0);
@@ -761,18 +680,36 @@ pygobject_new_with_interfaces(GType gtype)
     /* set up __doc__ descriptor on type */
     PyDict_SetItemString(dict, "__doc__", pyg_object_descr_doc_get());
 
-    /* Something special to point out that it's not accessible through
-     * gi.repository */
-    o = PYGLIB_PyUnicode_FromString ("__gi__");
-    PyDict_SetItemString (dict, "__module__", o);
-    Py_DECREF (o);
+    /* generate the pygtk module name and extract the base type name */
+    gtype_name = (gchar*)g_type_name(gtype);
+    if (g_str_has_prefix(gtype_name, "Gtk")) {
+       mod_name = "gtk";
+       gtype_name += 3;
+       type_name = g_strconcat(mod_name, ".", gtype_name, NULL);
+    } else if (g_str_has_prefix(gtype_name, "Gdk")) {
+       mod_name = "gtk.gdk";
+       gtype_name += 3;
+       type_name = g_strconcat(mod_name, ".", gtype_name, NULL);
+    } else if (g_str_has_prefix(gtype_name, "Atk")) {
+       mod_name = "atk";
+       gtype_name += 3;
+       type_name = g_strconcat(mod_name, ".", gtype_name, NULL);
+    } else if (g_str_has_prefix(gtype_name, "Pango")) {
+       mod_name = "pango";
+       gtype_name += 5;
+       type_name = g_strconcat(mod_name, ".", gtype_name, NULL);
+    } else {
+       mod_name = "__main__";
+       type_name = g_strconcat(mod_name, ".", gtype_name, NULL);
+    }
 
     type = (PyTypeObject*)PyObject_CallFunction((PyObject *) Py_TYPE(py_parent_type),
-                                                "sNN", g_type_name (gtype), bases, dict);
+                                                "sNN", type_name, bases, dict);
+    g_free(type_name);
 
     if (type == NULL) {
        PyErr_Print();
-        PyGILState_Release(state);
+        pyglib_gil_state_release(state);
        return NULL;
     }
 
@@ -797,15 +734,21 @@ pygobject_new_with_interfaces(GType gtype)
 
     if (PyType_Ready(type) < 0) {
        g_warning ("couldn't make the type `%s' ready", type->tp_name);
-        PyGILState_Release(state);
+        pyglib_gil_state_release(state);
        return NULL;
     }
+    /* insert type name in module dict */
+    modules = PyImport_GetModuleDict();
+    if ((module = PyDict_GetItemString(modules, mod_name)) != NULL) {
+        if (PyObject_SetAttrString(module, gtype_name, (PyObject *)type) < 0)
+            PyErr_Clear();
+    }
 
     /* stash a pointer to the python class with the GType */
     Py_INCREF(type);
     g_type_set_qdata(gtype, pygobject_class_key, type);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 
     return type;
 }
@@ -847,7 +790,7 @@ pygobject_inherit_slots(PyTypeObject *type, PyObject *bases, gboolean check_for_
                                   offsetof(PyTypeObject, tp_repr),
                                   offsetof(PyTypeObject, tp_str),
                                   offsetof(PyTypeObject, tp_print) };
-    gsize i;
+    int i;
 
     /* Happens when registering gobject.GObject itself, at least. */
     if (!bases)
@@ -913,8 +856,6 @@ pygobject_find_slot_for(PyTypeObject *type, PyObject *bases, int slot_offset,
  * or interface has been registered for the given GType, then a new
  * type will be created.
  *
- * Does not set an exception when NULL is returned.
- *
  * Returns: The wrapper class for the GObject or NULL if the
  *          GType has no registered type and a new type couldn't be created
  */
@@ -924,22 +865,23 @@ pygobject_lookup_class(GType gtype)
     PyTypeObject *py_type;
 
     if (gtype == G_TYPE_INTERFACE)
-        return &PyGInterface_Type;
+       return &PyGInterface_Type;
     
+    py_type = pyg_type_get_custom(g_type_name(gtype));
+    if (py_type)
+       return py_type;
+
     py_type = g_type_get_qdata(gtype, pygobject_class_key);
     if (py_type == NULL) {
-        py_type = g_type_get_qdata(gtype, pyginterface_type_key);
+       py_type = g_type_get_qdata(gtype, pyginterface_type_key);
 
-        if (py_type == NULL) {
-            py_type = (PyTypeObject *)pygi_type_import_by_g_type(gtype);
-            PyErr_Clear ();
-        }
+    if (py_type == NULL)
+        py_type = (PyTypeObject *)pygi_type_import_by_g_type(gtype);
 
-        if (py_type == NULL) {
-            py_type = pygobject_new_with_interfaces(gtype);
-            PyErr_Clear ();
-            g_type_set_qdata(gtype, pyginterface_type_key, py_type);
-        }
+       if (py_type == NULL) {
+           py_type = pygobject_new_with_interfaces(gtype);
+           g_type_set_qdata(gtype, pyginterface_type_key, py_type);
+       }
     }
     
     return py_type;
@@ -948,7 +890,7 @@ pygobject_lookup_class(GType gtype)
 /**
  * pygobject_new_full:
  * @obj: a GObject instance.
- * @steal: whether to steal a ref from the GObject or add (sink) a new one.
+ * @sink: whether to sink any floating reference found on the GObject. DEPRECATED.
  * @g_class: the GObjectClass
  *
  * This function gets a reference to a wrapper for the given GObject
@@ -959,30 +901,19 @@ pygobject_lookup_class(GType gtype)
  * Returns: a reference to the wrapper for the GObject.
  */
 PyObject *
-pygobject_new_full(GObject *obj, gboolean steal, gpointer g_class)
+pygobject_new_full(GObject *obj, gboolean sink, gpointer g_class)
 {
     PyGObject *self;
 
     if (obj == NULL) {
-        Py_RETURN_NONE;
+       Py_INCREF(Py_None);
+       return Py_None;
     }
 
-    /* If the GObject already has a PyObject wrapper stashed in its qdata, re-use it.
-     */
+    /* we already have a wrapper for this object -- return it. */
     self = (PyGObject *)g_object_get_qdata(obj, pygobject_wrapper_key);
     if (self != NULL) {
-        /* Note the use of "pygobject_ref_sink" here only deals with PyObject
-         * wrapper ref counts and has nothing to do with GObject.
-         */
-        pygobject_ref_sink(self);
-
-        /* If steal is true, we also want to decref the incoming GObjects which
-         * already have a Python wrapper because the wrapper is already holding a
-         * strong reference.
-         */
-        if (steal)
-            g_object_unref (obj);
-
+       pygobject_ref_sink(self);
     } else {
        /* create wrapper */
         PyGObjectData *inst_data = pyg_object_peek_inst_data(obj);
@@ -1008,15 +939,10 @@ pygobject_new_full(GObject *obj, gboolean steal, gpointer g_class)
        self->weakreflist = NULL;
        self->private_flags.flags = 0;
        self->obj = obj;
-
-        /* If we are not stealing a ref or the object is floating,
-         * add a regular ref or sink the object. */
-        if (g_object_is_floating (obj))
-            self->private_flags.flags |= PYGOBJECT_GOBJECT_WAS_FLOATING;
-        if (!steal || self->private_flags.flags & PYGOBJECT_GOBJECT_WAS_FLOATING)
-            g_object_ref_sink (obj);
-
-        pygobject_register_wrapper((PyObject *)self);
+        /* if we are creating a wrapper around a newly created object, it can have
+           a floating ref (e.g. for methods like Gtk.Button.new()). Bug 640868 */
+       g_object_ref_sink(obj);
+       pygobject_register_wrapper((PyObject *)self);
        PyObject_GC_Track((PyObject *)self);
     }
 
@@ -1027,9 +953,7 @@ pygobject_new_full(GObject *obj, gboolean steal, gpointer g_class)
 PyObject *
 pygobject_new(GObject *obj)
 {
-    return pygobject_new_full(obj,
-                              /*steal=*/FALSE,
-                              NULL);
+    return pygobject_new_full(obj, TRUE, NULL);
 }
 
 static void
@@ -1070,9 +994,118 @@ pygobject_watch_closure(PyObject *self, GClosure *closure)
 }
 
 
+/* -------------- Freeze Notify Context Manager ----------------- */
+
+/**
+ * pygcontext_manager_enter
+ * @self: Freeze or Block context instance
+ *
+ * Method used for __enter__ on both GContextFeezeNotify and
+ * GContextHandlerBlock. Does nothing since this is an object returned
+ * by the freeze_notify() and handler_block() methods which do the actual
+ * work of freezing and blocking.
+ */
+static PyObject *
+pygcontext_manager_enter(PyObject *self)
+{
+       Py_INCREF(self);
+       return self;
+}
+
+typedef struct {
+    PyObject_HEAD
+    GObject *obj;
+} PyGContextFreezeNotify;
+
+PYGLIB_DEFINE_TYPE("gi._gobject.GContextFreezeNotify",
+               PyGContextFreezeNotify_Type, PyGContextFreezeNotify);
+
+static PyObject *
+pygcontext_freeze_notify_new(GObject *gobj)
+{
+       PyGContextFreezeNotify *context;
+
+       context = PyObject_New(PyGContextFreezeNotify, &PyGContextFreezeNotify_Type);
+       if (context == NULL)
+               return NULL;
+
+       g_object_ref(gobj);
+       context->obj = gobj;
+       return (PyObject*)context;
+}
+
+static void
+pygcontext_freeze_notify_dealloc(PyGContextFreezeNotify* self)
+{
+    g_object_unref(self->obj);
+    self->obj = NULL;
+    PyObject_Del((PyObject*)self);
+}
+
+static PyObject *
+pygcontext_freeze_notify_exit(PyGContextFreezeNotify *self, PyObject *args)
+{
+       g_object_thaw_notify(self->obj);
+       Py_RETURN_NONE;
+}
+
+static PyMethodDef pygcontext_freeze_notify_methods[] = {
+       {"__enter__", (PyCFunction)pygcontext_manager_enter, METH_NOARGS, ""},
+       {"__exit__", (PyCFunction)pygcontext_freeze_notify_exit, METH_VARARGS, ""},
+    {NULL}
+};
+
+/* -------------- Handler Block Context Manager ----------------- */
+typedef struct {
+    PyObject_HEAD
+    GObject *obj;
+    gulong handler_id;
+} PyGContextHandlerBlock;
+
+PYGLIB_DEFINE_TYPE("gi._gobject.GContextHandlerBlock",
+               PyGContextHandlerBlock_Type, PyGContextHandlerBlock);
+
+static PyObject *
+pygcontext_handler_block_new(GObject *gobj, gulong handler_id)
+{
+       PyGContextHandlerBlock *context;
+
+       context = PyObject_New(PyGContextHandlerBlock, &PyGContextHandlerBlock_Type);
+       if (context == NULL)
+               return NULL;
+
+       g_object_ref(gobj);
+       context->obj = gobj;
+       context->handler_id = handler_id;
+       return (PyObject*)context;
+}
+
+static void
+pygcontext_handler_block_dealloc(PyGContextHandlerBlock* self)
+{
+    g_object_unref(self->obj);
+    self->obj = NULL;
+    PyObject_Del((PyObject*)self);
+}
+
+static PyObject *
+pygcontext_handler_block_exit(PyGContextHandlerBlock *self, PyObject *args)
+{
+       g_signal_handler_unblock(self->obj, self->handler_id);
+       Py_RETURN_NONE;
+}
+
+
+static PyMethodDef pygcontext_handler_block_methods[] = {
+       {"__enter__", (PyCFunction)pygcontext_manager_enter, METH_NOARGS, ""},
+       {"__exit__", (PyCFunction)pygcontext_handler_block_exit, METH_VARARGS, ""},
+    {NULL}
+};
+
+
 /* -------------- PyGObject behaviour ----------------- */
 
-PYGLIB_DEFINE_TYPE("gi._gi.GObject", PyGObject_Type, PyGObject);
+PYGLIB_DEFINE_TYPE("gi._gobject.GObject", PyGObject_Type, PyGObject);
 
 static void
 pygobject_dealloc(PyGObject *self)
@@ -1120,41 +1153,24 @@ pygobject_richcompare(PyObject *self, PyObject *other, int op)
                                            op);
 }
 
-static PYGLIB_Py_hash_t
+static long
 pygobject_hash(PyGObject *self)
 {
-    return PYGLIB_Py_hash_t_FromVoidPtr (self->obj);
+    return (long)self->obj;
 }
 
 static PyObject *
 pygobject_repr(PyGObject *self)
 {
-    PyObject *module, *repr;
-    gchar *module_str, *namespace;
-
-    module = PyObject_GetAttrString ((PyObject *)self, "__module__");
-    if (module == NULL)
-        return NULL;
-
-    if (!PYGLIB_PyUnicode_Check (module)) {
-        Py_DECREF (module);
-        return NULL;
-    }
-
-    module_str = PYGLIB_PyUnicode_AsString (module);
-    namespace = g_strrstr (module_str, ".");
-    if (namespace == NULL) {
-        namespace = module_str;
-    } else {
-        namespace += 1;
-    }
+    gchar buf[256];
 
-    repr = PYGLIB_PyUnicode_FromFormat ("<%s.%s object at %p (%s at %p)>",
-                                        namespace, Py_TYPE (self)->tp_name, self,
-                                        self->obj ? G_OBJECT_TYPE_NAME (self->obj) : "uninitialized",
-                                        self->obj);
-    Py_DECREF (module);
-    return repr;
+    g_snprintf(buf, sizeof(buf),
+              "<%s object at 0x%lx (%s at 0x%lx)>",
+              Py_TYPE(self)->tp_name,
+              (long)self,
+              self->obj ? G_OBJECT_TYPE_NAME(self->obj) : "uninitialized",
+               (long)self->obj);
+    return PYGLIB_PyUnicode_FromString(buf);
 }
 
 
@@ -1192,12 +1208,12 @@ pygobject_clear(PyGObject *self)
     if (self->obj) {
         g_object_set_qdata_full(self->obj, pygobject_wrapper_key, NULL, NULL);
         if (self->inst_dict) {
-            g_object_remove_toggle_ref(self->obj, pyg_toggle_notify, NULL);
+            g_object_remove_toggle_ref(self->obj, pyg_toggle_notify, self);
             self->private_flags.flags &= ~PYGOBJECT_USING_TOGGLE_REF;
         } else {
-            Py_BEGIN_ALLOW_THREADS;
+            pyg_begin_allow_threads;
             g_object_unref(self->obj);
-            Py_END_ALLOW_THREADS;
+            pyg_end_allow_threads;
         }
         self->obj = NULL;
     }
@@ -1261,19 +1277,7 @@ pygobject_init(PyGObject *self, PyObject *args, PyObject *kwargs)
     GParameter *params = NULL;
     GObjectClass *class;
 
-    /* Only do GObject creation and property setting if the GObject hasn't
-     * already been created. The case where self->obj already exists can occur
-     * when C constructors are called directly (Gtk.Button.new_with_label)
-     * and we are simply wrapping the result with a PyGObject.
-     * In these cases we want to ignore any keyword arguments passed along
-     * to __init__ and simply return.
-     *
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=705810
-     */
-    if (self->obj != NULL)
-        return 0;
-
-    if (!PyArg_ParseTuple(args, ":GObject.__init__", NULL))
+    if (!PyArg_ParseTuple(args, ":GObject.__init__", &object_type))
        return -1;
 
     object_type = pyg_type_from_object((PyObject *)self);
@@ -1297,7 +1301,7 @@ pygobject_init(PyGObject *self, PyObject *args, PyObject *kwargs)
 
     if (pygobject_constructv(self, n_params, params))
        PyErr_SetString(PyExc_RuntimeError, "could not create object");
-
+          
  cleanup:
     for (i = 0; i < n_params; i++) {
        g_free((gchar *) params[i].name);
@@ -1318,22 +1322,44 @@ pygobject_init(PyGObject *self, PyObject *args, PyObject *kwargs)
     }
 
 static PyObject *
-pygobject_get_property (PyGObject *self, PyObject *args)
+pygobject_get_property(PyGObject *self, PyObject *args)
 {
     gchar *param_name;
+    GParamSpec *pspec;
+    GValue value = { 0, };
+    PyObject *ret;
 
-    if (!PyArg_ParseTuple (args, "s:GObject.get_property", &param_name)) {
-        return NULL;
-    }
+    if (!PyArg_ParseTuple(args, "s:GObject.get_property", &param_name))
+       return NULL;
 
     CHECK_GOBJECT(self);
-
-    return pygi_get_property_value_by_name (self, param_name);
+    
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(self->obj),
+                                        param_name);
+    if (!pspec) {
+       PyErr_Format(PyExc_TypeError,
+                    "object of type `%s' does not have property `%s'",
+                    g_type_name(G_OBJECT_TYPE(self->obj)), param_name);
+       return NULL;
+    }
+    if (!(pspec->flags & G_PARAM_READABLE)) {
+       PyErr_Format(PyExc_TypeError, "property %s is not readable",
+                    param_name);
+       return NULL;
+    }
+    g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+    pyg_begin_allow_threads;
+    g_object_get_property(self->obj, param_name, &value);
+    pyg_end_allow_threads;
+    ret = pyg_param_gvalue_as_pyobject(&value, TRUE, pspec);
+    g_value_unset(&value);
+    return ret;
 }
 
 static PyObject *
 pygobject_get_properties(PyGObject *self, PyObject *args)
 {
+    GObjectClass *class;
     int len, i;
     PyObject *tuple;
 
@@ -1343,27 +1369,48 @@ pygobject_get_properties(PyGObject *self, PyObject *args)
     }
 
     tuple = PyTuple_New(len);
+    class = G_OBJECT_GET_CLASS(self->obj);
     for (i = 0; i < len; i++) {
         PyObject *py_property = PyTuple_GetItem(args, i);
         gchar *property_name;
+        GParamSpec *pspec;
+        GValue value = { 0 };
         PyObject *item;
 
         if (!PYGLIB_PyUnicode_Check(py_property)) {
             PyErr_SetString(PyExc_TypeError,
                             "Expected string argument for property.");
-            goto fail;
+            return NULL;
         }
 
         property_name = PYGLIB_PyUnicode_AsString(py_property);
-        item = pygi_get_property_value_by_name (self, property_name);
-        PyTuple_SetItem (tuple, i, item);
+
+        pspec = g_object_class_find_property(class,
+                                        property_name);
+        if (!pspec) {
+           PyErr_Format(PyExc_TypeError,
+                        "object of type `%s' does not have property `%s'",
+                        g_type_name(G_OBJECT_TYPE(self->obj)), property_name);
+       return NULL;
+        }
+        if (!(pspec->flags & G_PARAM_READABLE)) {
+           PyErr_Format(PyExc_TypeError, "property %s is not readable",
+                       property_name);
+           return NULL;
+        }
+        g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+
+        pyg_begin_allow_threads;
+        g_object_get_property(self->obj, property_name, &value);
+        pyg_end_allow_threads;
+
+        item = pyg_value_as_pyobject(&value, TRUE);
+        PyTuple_SetItem(tuple, i, item);
+
+        g_value_unset(&value);
     }
 
     return tuple;
-
-fail:
-    Py_DECREF (tuple);
-    return NULL;
 }
 
 static PyObject *
@@ -1372,7 +1419,6 @@ pygobject_set_property(PyGObject *self, PyObject *args)
     gchar *param_name;
     GParamSpec *pspec;
     PyObject *pvalue;
-    int ret = -1;
 
     if (!PyArg_ParseTuple(args, "sO:GObject.set_property", &param_name,
                          &pvalue))
@@ -1389,17 +1435,9 @@ pygobject_set_property(PyGObject *self, PyObject *args)
        return NULL;
     }
     
-    ret = pygi_set_property_value (self, pspec, pvalue);
-    if (ret == 0)
-       goto done;
-    else if (PyErr_Occurred())
-        return  NULL;
-
-    if (!set_property_from_pspec(self->obj, pspec, pvalue))
+    if (!set_property_from_pspec(self->obj, param_name, pspec, pvalue))
        return NULL;
-
-done:
-
+    
     Py_INCREF(Py_None);
     return Py_None;
 }
@@ -1423,7 +1461,6 @@ pygobject_set_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
     while (kwargs && PyDict_Next (kwargs, &pos, &key, &value)) {
        gchar *key_str = PYGLIB_PyUnicode_AsString(key);
        GParamSpec *pspec;
-       int ret = -1;
 
        pspec = g_object_class_find_property(class, key_str);
        if (!pspec) {
@@ -1436,17 +1473,8 @@ pygobject_set_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
            goto exit;
        }
 
-        ret = pygi_set_property_value (self, pspec, value);
-        if (ret != 0) {
-            /* Non-zero return code means that either an error occured ...*/
-            if (PyErr_Occurred())
-                goto exit;
-
-            /* ... or the property couldn't be found , so let's try the default
-             * call. */
-            if (!set_property_from_pspec(G_OBJECT(self->obj), pspec, value))
-                goto exit;
-        }
+       if (!set_property_from_pspec(G_OBJECT(self->obj), key_str, pspec, value))
+           goto exit;
     }
 
     result = Py_None;
@@ -1457,219 +1485,55 @@ pygobject_set_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
     return result;
 }
 
-/* custom closure for gobject bindings */
-static void
-pygbinding_closure_invalidate(gpointer data, GClosure *closure)
-{
-    PyGClosure *pc = (PyGClosure *)closure;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-    Py_XDECREF(pc->callback);
-    Py_XDECREF(pc->extra_args);
-    PyGILState_Release(state);
-
-    pc->callback = NULL;
-    pc->extra_args = NULL;
-}
-
-static void
-pygbinding_marshal (GClosure     *closure,
-                    GValue       *return_value,
-                    guint         n_param_values,
-                    const GValue *param_values,
-                    gpointer      invocation_hint,
-                    gpointer      marshal_data)
+static PyObject *
+pygobject_freeze_notify(PyGObject *self, PyObject *args)
 {
-    PyGILState_STATE state;
-    PyGClosure *pc = (PyGClosure *)closure;
-    PyObject *params, *ret;
-    GValue *out_value;
-
-    state = PyGILState_Ensure();
-
-    /* construct Python tuple for the parameter values */
-    params = PyTuple_New(2);
-    PyTuple_SetItem (params, 0, pyg_value_as_pyobject(&param_values[0], FALSE));
-    PyTuple_SetItem (params, 1, pyg_value_as_pyobject(&param_values[1], FALSE));
-
-    /* params passed to function may have extra arguments */
-    if (pc->extra_args) {
-        PyObject *tuple = params;
-        params = PySequence_Concat(tuple, pc->extra_args);
-        Py_DECREF(tuple);
-    }
-    ret = PyObject_CallObject(pc->callback, params);
-    if (!ret) {
-        PyErr_Print ();
-        goto out;
-    } else if (ret == Py_None) {
-        g_value_set_boolean (return_value, FALSE);
-        goto out;
-    }
-
-    out_value = g_value_get_boxed (&param_values[2]);
-    if (pyg_value_from_pyobject (out_value, ret) != 0) {
-        PyErr_SetString (PyExc_ValueError, "can't convert value");
-        PyErr_Print ();
-        g_value_set_boolean (return_value, FALSE);
-    } else {
-        g_value_set_boolean (return_value, TRUE);
-    }
-
-    Py_DECREF(ret);
-
-out:
-    Py_DECREF(params);
-    PyGILState_Release(state);
-}
+    if (!PyArg_ParseTuple(args, ":GObject.freeze_notify"))
+       return NULL;
 
-static GClosure *
-pygbinding_closure_new (PyObject *callback, PyObject *extra_args)
-{
-    GClosure *closure;
+    CHECK_GOBJECT(self);
 
-    g_return_val_if_fail(callback != NULL, NULL);
-    closure = g_closure_new_simple(sizeof(PyGClosure), NULL);
-    g_closure_add_invalidate_notifier(closure, NULL, pygbinding_closure_invalidate);
-    g_closure_set_marshal(closure, pygbinding_marshal);
-    Py_INCREF(callback);
-    ((PyGClosure *)closure)->callback = callback;
-    if (extra_args && extra_args != Py_None) {
-        Py_INCREF(extra_args);
-        if (!PyTuple_Check(extra_args)) {
-            PyObject *tmp = PyTuple_New(1);
-            PyTuple_SetItem(tmp, 0, extra_args);
-            extra_args = tmp;
-        }
-        ((PyGClosure *)closure)->extra_args = extra_args;
-    }
-    return closure;
+    g_object_freeze_notify(self->obj);
+    return pygcontext_freeze_notify_new(self->obj);
 }
 
 static PyObject *
-pygobject_bind_property(PyGObject *self, PyObject *args)
-{
-       gchar *source_name, *target_name;
-       gchar *source_canon, *target_canon;
-       PyObject *target, *source_repr, *target_repr;
-       PyObject *transform_to, *transform_from, *user_data = NULL;
-       GBinding *binding;
-       GBindingFlags flags = G_BINDING_DEFAULT;
-       GClosure *to_closure = NULL, *from_closure = NULL;
-
-       transform_from = NULL;
-       transform_to = NULL;
-
-       if (!PyArg_ParseTuple(args, "sOs|iOOO:GObject.bind_property",
-                             &source_name, &target, &target_name, &flags,
-                             &transform_to, &transform_from, &user_data))
-               return NULL;
-
-       CHECK_GOBJECT(self);
-       if (!PyObject_TypeCheck(target, &PyGObject_Type)) {
-               PyErr_SetString(PyExc_TypeError, "Second argument must be a GObject");
-               return NULL;
-       }
-
-       if (transform_to && transform_to != Py_None) {
-               if (!PyCallable_Check (transform_to)) {
-                       PyErr_SetString (PyExc_TypeError,
-                                        "transform_to must be callable or None");
-                       return NULL;
-               }
-               to_closure = pygbinding_closure_new (transform_to, user_data);
-       }
+pygobject_notify(PyGObject *self, PyObject *args)
+{
+    char *property_name;
 
-       if (transform_from && transform_from != Py_None) {
-               if (!PyCallable_Check (transform_from)) {
-                       PyErr_SetString (PyExc_TypeError,
-                                        "transform_from must be callable or None");
-                       return NULL;
-               }
-               from_closure = pygbinding_closure_new (transform_from, user_data);
-       }
+    if (!PyArg_ParseTuple(args, "s:GObject.notify", &property_name))
+       return NULL;
 
-       /* Canonicalize underscores to hyphens. Note the results must be freed. */
-       source_canon = g_strdelimit(g_strdup(source_name), "_", '-');
-       target_canon = g_strdelimit(g_strdup(target_name), "_", '-');
-
-       binding = g_object_bind_property_with_closures (G_OBJECT(self->obj), source_canon,
-                                                       pygobject_get(target), target_canon,
-                                                       flags, to_closure, from_closure);
-       g_free(source_canon);
-       g_free(target_canon);
-       source_canon = target_canon = NULL;
-
-       if (binding == NULL) {
-               source_repr = PyObject_Repr((PyObject*)self);
-               target_repr = PyObject_Repr(target);
-               PyErr_Format(PyExc_TypeError, "Cannot create binding from %s.%s to %s.%s",
-                            PYGLIB_PyUnicode_AsString(source_repr), source_name,
-                            PYGLIB_PyUnicode_AsString(target_repr), target_name);
-               Py_DECREF(source_repr);
-               Py_DECREF(target_repr);
-               return NULL;
-       }
+    CHECK_GOBJECT(self);
 
-       return pygobject_new (G_OBJECT (binding));
+    g_object_notify(self->obj, property_name);
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 static PyObject *
-connect_helper(PyGObject *self, gchar *name, PyObject *callback, PyObject *extra_args, PyObject *object, gboolean after)
+pygobject_thaw_notify(PyGObject *self, PyObject *args)
 {
-    guint sigid;
-    GQuark detail = 0;
-    GClosure *closure = NULL;
-    gulong handlerid;
-    GSignalQuery query_info;
-
-    if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
-                            &sigid, &detail, TRUE)) {
-       PyObject *repr = PyObject_Repr((PyObject*)self);
-       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(repr),
-                    name);
-       Py_DECREF(repr);
+    if (!PyArg_ParseTuple(args, ":GObject.thaw_notify"))
        return NULL;
-    }
-
-    if (object && !PyObject_TypeCheck (object, &PyGObject_Type)) {
-        if (PyErr_WarnEx (PyGIDeprecationWarning,
-                          "Using non GObject arguments for connect_object() is deprecated, use: "
-                          "connect_data(signal, callback, data, connect_flags=GObject.ConnectFlags.SWAPPED)",
-                          1)) {
-            return NULL;
-        }
-    }
-
-    g_signal_query (sigid, &query_info);
-    if (!pyg_gtype_is_custom (query_info.itype)) {
-        /* The signal is implemented by a non-Python class, probably
-         * something in the gi repository. */
-        closure = pygi_signal_closure_new (self, query_info.itype,
-                                           query_info.signal_name, callback,
-                                           extra_args, object);
-    }
-
-    if (!closure) {
-        /* The signal is either implemented at the Python level, or it comes
-         * from a foreign class that we don't have introspection data for. */
-        closure = pyg_closure_new (callback, extra_args, object);
-    }
-
-    pygobject_watch_closure((PyObject *)self, closure);
-    handlerid = g_signal_connect_closure_by_id(self->obj, sigid, detail,
-                                              closure, after);
-    return PyLong_FromUnsignedLong(handlerid);
+    
+    CHECK_GOBJECT(self);
+    
+    g_object_thaw_notify(self->obj);
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 static PyObject *
 pygobject_connect(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *ret;
+    PyObject *first, *callback, *extra_args;
     gchar *name;
-    guint len;
+    guint sigid, len;
+    gulong handlerid;
+    GQuark detail = 0;
+    GClosure *closure;
 
     len = PyTuple_Size(args);
     if (len < 2) {
@@ -1690,21 +1554,38 @@ pygobject_connect(PyGObject *self, PyObject *args)
     
     CHECK_GOBJECT(self);
     
+    if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
+                            &sigid, &detail, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    name);
+       return NULL;
+    }
     extra_args = PySequence_GetSlice(args, 2, len);
     if (extra_args == NULL)
        return NULL;
 
-    ret = connect_helper(self, name, callback, extra_args, NULL, FALSE);
+    closure = pygi_signal_closure_new(self, name, callback, extra_args, NULL);
+    if (closure == NULL)
+        closure = pyg_closure_new(callback, extra_args, NULL);
+
+    pygobject_watch_closure((PyObject *)self, closure);
+    handlerid = g_signal_connect_closure_by_id(self->obj, sigid, detail,
+                                              closure, FALSE);
     Py_DECREF(extra_args);
-    return ret;
+    return PyLong_FromUnsignedLong(handlerid);
 }
 
 static PyObject *
 pygobject_connect_after(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *ret;
+    PyObject *first, *callback, *extra_args;
     gchar *name;
+    guint sigid;
+    gulong handlerid;
     Py_ssize_t len;
+    GQuark detail;
+    GClosure *closure;
 
     len = PyTuple_Size(args);
     if (len < 2) {
@@ -1726,21 +1607,38 @@ pygobject_connect_after(PyGObject *self, PyObject *args)
     
     CHECK_GOBJECT(self);
     
+    if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
+                            &sigid, &detail, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    name);
+       return NULL;
+    }
     extra_args = PySequence_GetSlice(args, 2, len);
     if (extra_args == NULL)
        return NULL;
 
-    ret = connect_helper(self, name, callback, extra_args, NULL, TRUE);
+    closure = pygi_signal_closure_new(self, name, callback, extra_args, NULL);
+    if (closure == NULL)
+        closure = pyg_closure_new(callback, extra_args, NULL);
+
+    pygobject_watch_closure((PyObject *)self, closure);
+    handlerid = g_signal_connect_closure_by_id(self->obj, sigid, detail,
+                                              closure, TRUE);
     Py_DECREF(extra_args);
-    return ret;
+    return PyLong_FromUnsignedLong(handlerid);
 }
 
 static PyObject *
 pygobject_connect_object(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *object, *ret;
+    PyObject *first, *callback, *extra_args, *object;
     gchar *name;
+    guint sigid;
+    gulong handlerid;
     Py_ssize_t len;
+    GQuark detail;
+    GClosure *closure;
 
     len = PyTuple_Size(args);
     if (len < 3) {
@@ -1762,21 +1660,38 @@ pygobject_connect_object(PyGObject *self, PyObject *args)
     
     CHECK_GOBJECT(self);
     
+    if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
+                            &sigid, &detail, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    name);
+       return NULL;
+    }
     extra_args = PySequence_GetSlice(args, 3, len);
     if (extra_args == NULL)
        return NULL;
 
-    ret = connect_helper(self, name, callback, extra_args, object, FALSE);
+    closure = pygi_signal_closure_new(self, name, callback, extra_args, object);
+    if (closure == NULL)
+        closure = pyg_closure_new(callback, extra_args, object);
+
+    pygobject_watch_closure((PyObject *)self, closure);
+    handlerid = g_signal_connect_closure_by_id(self->obj, sigid, detail,
+                                              closure, FALSE);
     Py_DECREF(extra_args);
-    return ret;
+    return PyLong_FromUnsignedLong(handlerid);
 }
 
 static PyObject *
 pygobject_connect_object_after(PyGObject *self, PyObject *args)
 {
-    PyObject *first, *callback, *extra_args, *object, *ret;
+    PyObject *first, *callback, *extra_args, *object;
     gchar *name;
+    guint sigid;
+    gulong handlerid;
     Py_ssize_t len;
+    GQuark detail;
+    GClosure *closure;
 
     len = PyTuple_Size(args);
     if (len < 3) {
@@ -1798,22 +1713,90 @@ pygobject_connect_object_after(PyGObject *self, PyObject *args)
     
     CHECK_GOBJECT(self);
     
+    if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
+                            &sigid, &detail, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    name);
+       return NULL;
+    }
     extra_args = PySequence_GetSlice(args, 3, len);
     if (extra_args == NULL)
        return NULL;
 
-    ret = connect_helper(self, name, callback, extra_args, object, TRUE);
+    closure = pygi_signal_closure_new(self, name, callback, extra_args, object);
+    if (closure == NULL)
+        closure = pyg_closure_new(callback, extra_args, object);
+
+    pygobject_watch_closure((PyObject *)self, closure);
+    handlerid = g_signal_connect_closure_by_id(self->obj, sigid, detail,
+                                              closure, TRUE);
     Py_DECREF(extra_args);
-    return ret;
+    return PyLong_FromUnsignedLong(handlerid);
+}
+
+static PyObject *
+pygobject_disconnect(PyGObject *self, PyObject *args)
+{
+    gulong handler_id;
+
+    if (!PyArg_ParseTuple(args, "k:GObject.disconnect", &handler_id))
+       return NULL;
+    
+    CHECK_GOBJECT(self);
+    
+    g_signal_handler_disconnect(self->obj, handler_id);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
+pygobject_handler_is_connected(PyGObject *self, PyObject *args)
+{
+    gulong handler_id;
+
+    if (!PyArg_ParseTuple(args, "k:GObject.handler_is_connected", &handler_id))
+       return NULL;
+
+    
+    CHECK_GOBJECT(self);
+    
+    return PyBool_FromLong(g_signal_handler_is_connected(self->obj, handler_id));
+}
+
+static PyObject *
+pygobject_handler_block(PyGObject *self, PyObject *args)
+{
+    gulong handler_id;
+
+    if (!PyArg_ParseTuple(args, "k:GObject.handler_block", &handler_id))
+       return NULL;
+    
+    CHECK_GOBJECT(self);
+    
+    g_signal_handler_block(self->obj, handler_id);
+    return pygcontext_handler_block_new(self->obj, handler_id);
+}
+
+static PyObject *
+pygobject_handler_unblock(PyGObject *self, PyObject *args)
+{
+    gulong handler_id;
+
+    if (!PyArg_ParseTuple(args, "k:GObject.handler_unblock", &handler_id))
+       return NULL;
+    g_signal_handler_unblock(self->obj, handler_id);
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 static PyObject *
 pygobject_emit(PyGObject *self, PyObject *args)
 {
-    guint signal_id, i, j;
+    guint signal_id, i;
     Py_ssize_t len;
     GQuark detail;
-    PyObject *first, *py_ret, *repr = NULL;
+    PyObject *first, *py_ret;
     gchar *name;
     GSignalQuery query;
     GValue *params, ret = { 0, };
@@ -1834,15 +1817,13 @@ pygobject_emit(PyGObject *self, PyObject *args)
     
     if (!g_signal_parse_name(name, G_OBJECT_TYPE(self->obj),
                             &signal_id, &detail, TRUE)) {
-       repr = PyObject_Repr((PyObject*)self);
        PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
-                    PYGLIB_PyUnicode_AsString(repr),
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
                     name);
-       Py_DECREF(repr);
        return NULL;
     }
     g_signal_query(signal_id, &query);
-    if ((gsize)len != query.n_params + 1) {
+    if (len != query.n_params + 1) {
        gchar buf[128];
 
        g_snprintf(buf, sizeof(buf),
@@ -1867,11 +1848,11 @@ pygobject_emit(PyGObject *self, PyObject *args)
            g_snprintf(buf, sizeof(buf),
                       "could not convert type %s to %s required for parameter %d",
                       Py_TYPE(item)->tp_name,
-                       G_VALUE_TYPE_NAME(&params[i+1]), i);
+               g_type_name(G_VALUE_TYPE(&params[i+1])), i);
            PyErr_SetString(PyExc_TypeError, buf);
 
-           for (j = 0; j <= i; j++)
-               g_value_unset(&params[j]);
+           for (i = 0; i < query.n_params + 1; i++)
+               g_value_unset(&params[i]);
 
            g_free(params);
            return NULL;
@@ -1899,6 +1880,30 @@ pygobject_emit(PyGObject *self, PyObject *args)
 }
 
 static PyObject *
+pygobject_stop_emission(PyGObject *self, PyObject *args)
+{
+    gchar *signal;
+    guint signal_id;
+    GQuark detail;
+
+    if (!PyArg_ParseTuple(args, "s:GObject.stop_emission", &signal))
+       return NULL;
+    
+    CHECK_GOBJECT(self);
+    
+    if (!g_signal_parse_name(signal, G_OBJECT_TYPE(self->obj),
+                            &signal_id, &detail, TRUE)) {
+       PyErr_Format(PyExc_TypeError, "%s: unknown signal name: %s",
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)self)),
+                    signal);
+       return NULL;
+    }
+    g_signal_stop_emission(self->obj, signal_id, detail);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static PyObject *
 pygobject_chain_from_overridden(PyGObject *self, PyObject *args)
 {
     GSignalInvocationHint *ihint;
@@ -1927,7 +1932,7 @@ pygobject_chain_from_overridden(PyGObject *self, PyObject *args)
        return NULL;
     }
     g_signal_query(signal_id, &query);
-    if (len < 0 || (gsize)len != query.n_params) {
+    if (len != query.n_params) {
        gchar buf[128];
 
        g_snprintf(buf, sizeof(buf),
@@ -2020,7 +2025,7 @@ pygobject_deepcopy(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL, *repr = NULL;
+    PyObject *pyfunc = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2036,10 +2041,8 @@ pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
-       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(repr));
-       Py_DECREF(repr);
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
        return NULL;
     }
     
@@ -2054,7 +2057,7 @@ pygobject_disconnect_by_func(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL, *repr = NULL;
+    PyObject *pyfunc = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2070,10 +2073,8 @@ pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
-       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(repr));
-       Py_DECREF(repr);
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
        return NULL;
     }
     
@@ -2088,7 +2089,7 @@ pygobject_handler_block_by_func(PyGObject *self, PyObject *args)
 static PyObject *
 pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
 {
-    PyObject *pyfunc = NULL, *repr = NULL;
+    PyObject *pyfunc = NULL;
     GClosure *closure = NULL;
     guint retval;
     
@@ -2104,10 +2105,8 @@ pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
 
     closure = gclosure_from_pyfunc(self, pyfunc);
     if (!closure) {
-       repr = PyObject_Repr((PyObject*)pyfunc);
        PyErr_Format(PyExc_TypeError, "nothing connected to %s",
-                    PYGLIB_PyUnicode_AsString(repr));
-       Py_DECREF(repr);
+                    PYGLIB_PyUnicode_AsString(PyObject_Repr((PyObject*)pyfunc)));
        return NULL;
     }
     
@@ -2119,21 +2118,29 @@ pygobject_handler_unblock_by_func(PyGObject *self, PyObject *args)
     return PYGLIB_PyLong_FromLong(retval);
 }
 
-
 static PyMethodDef pygobject_methods[] = {
     { "get_property", (PyCFunction)pygobject_get_property, METH_VARARGS },
     { "get_properties", (PyCFunction)pygobject_get_properties, METH_VARARGS },
     { "set_property", (PyCFunction)pygobject_set_property, METH_VARARGS },
     { "set_properties", (PyCFunction)pygobject_set_properties, METH_VARARGS|METH_KEYWORDS },
-    { "bind_property", (PyCFunction)pygobject_bind_property, METH_VARARGS|METH_KEYWORDS },
+    { "freeze_notify", (PyCFunction)pygobject_freeze_notify, METH_VARARGS },
+    { "notify", (PyCFunction)pygobject_notify, METH_VARARGS },
+    { "thaw_notify", (PyCFunction)pygobject_thaw_notify, METH_VARARGS },
     { "connect", (PyCFunction)pygobject_connect, METH_VARARGS },
     { "connect_after", (PyCFunction)pygobject_connect_after, METH_VARARGS },
     { "connect_object", (PyCFunction)pygobject_connect_object, METH_VARARGS },
     { "connect_object_after", (PyCFunction)pygobject_connect_object_after, METH_VARARGS },
+    { "disconnect", (PyCFunction)pygobject_disconnect, METH_VARARGS },
     { "disconnect_by_func", (PyCFunction)pygobject_disconnect_by_func, METH_VARARGS },
+    { "handler_disconnect", (PyCFunction)pygobject_disconnect, METH_VARARGS },
+    { "handler_is_connected", (PyCFunction)pygobject_handler_is_connected, METH_VARARGS },
+    { "handler_block", (PyCFunction)pygobject_handler_block, METH_VARARGS },
+    { "handler_unblock", (PyCFunction)pygobject_handler_unblock,METH_VARARGS },
     { "handler_block_by_func", (PyCFunction)pygobject_handler_block_by_func, METH_VARARGS },
     { "handler_unblock_by_func", (PyCFunction)pygobject_handler_unblock_by_func, METH_VARARGS },
     { "emit", (PyCFunction)pygobject_emit, METH_VARARGS },
+    { "stop_emission", (PyCFunction)pygobject_stop_emission, METH_VARARGS },
+    { "emit_stop_by_name", (PyCFunction)pygobject_stop_emission,METH_VARARGS },
     { "chain", (PyCFunction)pygobject_chain_from_overridden,METH_VARARGS },
     { "weak_ref", (PyCFunction)pygobject_weak_ref, METH_VARARGS },
     { "__copy__", (PyCFunction)pygobject_copy, METH_NOARGS },
@@ -2160,18 +2167,12 @@ static PyObject *
 pygobject_get_refcount(PyGObject *self, void *closure)
 {
     if (self->obj == NULL) {
-        PyErr_Format(PyExc_TypeError, "GObject instance is not yet created");
-        return NULL;
+       PyErr_Format(PyExc_TypeError, "GObject instance is not yet created");
+       return NULL;
     }
     return PYGLIB_PyLong_FromLong(self->obj->ref_count);
 }
 
-static PyObject *
-pygobject_get_pointer(PyGObject *self, void *closure)
-{
-    return PYGLIB_CPointer_WrapPointer (self->obj, NULL);
-}
-
 static int
 pygobject_setattro(PyObject *self, PyObject *name, PyObject *value)
 {
@@ -2190,7 +2191,6 @@ pygobject_setattro(PyObject *self, PyObject *name, PyObject *value)
 static PyGetSetDef pygobject_getsets[] = {
     { "__dict__", (getter)pygobject_get_dict, (setter)0 },
     { "__grefcount__", (getter)pygobject_get_refcount, (setter)0, },
-    { "__gpointer__", (getter)pygobject_get_pointer, (setter)0, },
     { NULL, 0, 0 }
 };
 
@@ -2206,7 +2206,7 @@ typedef struct {
     gboolean have_floating_ref;
 } PyGObjectWeakRef;
 
-PYGLIB_DEFINE_TYPE("gi._gi.GObjectWeakRef", PyGObjectWeakRef_Type, PyGObjectWeakRef);
+PYGLIB_DEFINE_TYPE("gi._gobject.GObjectWeakRef", PyGObjectWeakRef_Type, PyGObjectWeakRef);
 
 static int
 pygobject_weak_ref_traverse(PyGObjectWeakRef *self, visitproc visit, void *arg)
@@ -2224,7 +2224,7 @@ pygobject_weak_ref_notify(PyGObjectWeakRef *self, GObject *dummy)
     self->obj = NULL;
     if (self->callback) {
         PyObject *retval;
-        PyGILState_STATE state = PyGILState_Ensure();
+        PyGILState_STATE state = pyglib_gil_state_ensure();
         retval = PyObject_Call(self->callback, self->user_data, NULL);
         if (retval) {
             if (retval != Py_None)
@@ -2242,7 +2242,7 @@ pygobject_weak_ref_notify(PyGObjectWeakRef *self, GObject *dummy)
             self->have_floating_ref = FALSE;
             Py_DECREF((PyObject *) self);
         }
-        PyGILState_Release(state);
+        pyglib_gil_state_release(state);
     }
 }
 
@@ -2318,7 +2318,7 @@ pygobject_weak_ref_call(PyGObjectWeakRef *self, PyObject *args, PyObject *kw)
         return NULL;
 
     if (self->obj)
-        return pygobject_new(self->obj);
+        return pygobject_new_full(self->obj, FALSE, NULL);
     else {
         Py_INCREF(Py_None);
         return Py_None;
@@ -2329,11 +2329,8 @@ static gpointer
 pyobject_copy(gpointer boxed)
 {
     PyObject *object = boxed;
-    PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
     Py_INCREF(object);
-    PyGILState_Release(state);
     return object;
 }
 
@@ -2343,9 +2340,9 @@ pyobject_free(gpointer boxed)
     PyObject *object = boxed;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
     Py_DECREF(object);
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 void
@@ -2353,7 +2350,6 @@ pygobject_object_register_types(PyObject *d)
 {
     PyObject *o, *descr;
 
-    pygobject_custom_key = g_quark_from_static_string("PyGObject::custom");
     pygobject_class_key = g_quark_from_static_string("PyGObject::class");
     pygobject_class_init_key = g_quark_from_static_string("PyGObject::class-init");
     pygobject_wrapper_key = g_quark_from_static_string("PyGObject::wrapper");
@@ -2398,7 +2394,6 @@ pygobject_object_register_types(PyObject *d)
        "Python attributes.";
     PyGProps_Type.tp_traverse = (traverseproc)pygobject_props_traverse;
     PyGProps_Type.tp_iter = (getiterfunc)pygobject_props_get_iter;
-    PyGProps_Type.tp_methods = pygobject_props_methods;
     if (PyType_Ready(&PyGProps_Type) < 0)
         return;
 
@@ -2410,7 +2405,7 @@ pygobject_object_register_types(PyObject *d)
     descr = PyObject_New(PyObject, &PyGPropsDescr_Type);
     PyDict_SetItemString(PyGObject_Type.tp_dict, "props", descr);
     PyDict_SetItemString(PyGObject_Type.tp_dict, "__module__",
-                        o=PYGLIB_PyUnicode_FromString("gi._gi"));
+                        o=PYGLIB_PyUnicode_FromString("gi._gobject._gobject"));
     Py_DECREF(o);
 
     /* GPropsIter */
@@ -2431,4 +2426,18 @@ pygobject_object_register_types(PyObject *d)
     if (PyType_Ready(&PyGObjectWeakRef_Type) < 0)
         return;
     PyDict_SetItemString(d, "GObjectWeakRef", (PyObject *) &PyGObjectWeakRef_Type);
+
+    PyGContextFreezeNotify_Type.tp_dealloc = (destructor)pygcontext_freeze_notify_dealloc;
+    PyGContextFreezeNotify_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGContextFreezeNotify_Type.tp_doc = "Context manager for freeze/thaw of GObjects";
+    PyGContextFreezeNotify_Type.tp_methods = pygcontext_freeze_notify_methods;
+    if (PyType_Ready(&PyGContextFreezeNotify_Type) < 0)
+        return;
+
+    PyGContextHandlerBlock_Type.tp_dealloc = (destructor)pygcontext_handler_block_dealloc;
+    PyGContextHandlerBlock_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+    PyGContextHandlerBlock_Type.tp_doc = "Context manager for handler blocking of GObjects";
+    PyGContextHandlerBlock_Type.tp_methods = pygcontext_handler_block_methods;
+    if (PyType_Ready(&PyGContextHandlerBlock_Type) < 0)
+        return;
 }
similarity index 92%
rename from gi/pygobject.h
rename to gi/_gobject/pygobject.h
index 3762429..8879fd0 100644 (file)
@@ -24,8 +24,7 @@ struct _PyGClosure {
 
 typedef enum {
     PYGOBJECT_USING_TOGGLE_REF = 1 << 0,
-    PYGOBJECT_IS_FLOATING_REF = 1 << 1,
-    PYGOBJECT_GOBJECT_WAS_FLOATING = 1 << 2
+    PYGOBJECT_IS_FLOATING_REF = 1 << 1
 } PyGObjectFlags;
 
   /* closures is just an alias for what is found in the
@@ -57,8 +56,6 @@ typedef struct {
 } PyGBoxed;
 
 #define pyg_boxed_get(v,t)      ((t *)((PyGBoxed *)(v))->boxed)
-#define pyg_boxed_get_ptr(v)    (((PyGBoxed *)(v))->boxed)
-#define pyg_boxed_set_ptr(v,p)  (((PyGBoxed *)(v))->boxed = (gpointer)p)
 #define pyg_boxed_check(v,typecode) (PyObject_TypeCheck(v, &PyGBoxed_Type) && ((PyGBoxed *)(v))->gtype == typecode)
 
 typedef struct {
@@ -68,8 +65,6 @@ typedef struct {
 } PyGPointer;
 
 #define pyg_pointer_get(v,t)      ((t *)((PyGPointer *)(v))->pointer)
-#define pyg_pointer_get_ptr(v)    (((PyGPointer *)(v))->pointer)
-#define pyg_pointer_set_ptr(v,p)  (((PyGPointer *)(v))->pointer = (gpointer)p)
 #define pyg_pointer_check(v,typecode) (PyObject_TypeCheck(v, &PyGPointer_Type) && ((PyGPointer *)(v))->gtype == typecode)
 
 typedef void (*PyGFatalExceptionFunc) (void);
@@ -80,13 +75,8 @@ typedef struct {
     GParamSpec *pspec;
 } PyGParamSpec;
 
-#define pyg_param_spec_get(v)    (((PyGParamSpec *)v)->pspec)
-#define pyg_param_spec_set(v,p)  (((PyGParamSpec *)v)->pspec = (GParamSpec*)p)
-#define pyg_param_spec_check(v)  (PyObject_TypeCheck(v, &PyGParamSpec_Type))
-
-/* Deprecated in favor of lower case with underscore macros above. */
-#define PyGParamSpec_Get    pyg_param_spec_get
-#define PyGParamSpec_Check  pyg_param_spec_check
+#define PyGParamSpec_Get(v) (((PyGParamSpec *)v)->pspec)
+#define PyGParamSpec_Check(v) (PyObject_TypeCheck(v, &PyGParamSpec_Type))
 
 typedef int (*PyGClassInitFunc) (gpointer gclass, PyTypeObject *pyclass);
 typedef PyTypeObject * (*PyGTypeRegistrationFunction) (const gchar *name,
@@ -112,7 +102,7 @@ struct _PyGObject_Functions {
     PyObject *(* type_wrapper_new)(GType type);
 
     gint (* enum_get_value)(GType enum_type, PyObject *obj, gint *val);
-    gint (* flags_get_value)(GType flag_type, PyObject *obj, guint *val);
+    gint (* flags_get_value)(GType flag_type, PyObject *obj, gint *val);
     void (* register_gtype_custom)(GType gtype,
                            PyObject *(* from_func)(const GValue *value),
                            int (* to_func)(GValue *value, PyObject *obj));
@@ -149,7 +139,6 @@ struct _PyGObject_Functions {
                                     PyGThreadBlockFunc unblock_threads_func);
     PyGThreadBlockFunc block_threads;
     PyGThreadBlockFunc unblock_threads;
-
     PyTypeObject *paramspec_type;
     PyObject *(* paramspec_new)(GParamSpec *spec);
     GParamSpec *(*paramspec_get)(PyObject *tuple);
@@ -178,7 +167,7 @@ struct _PyGObject_Functions {
                           const char *type_name_,
                           const char *strip_prefix,
                           GType gtype);
-    PyObject* (*flags_from_gtype)(GType gtype, guint value);
+    PyObject* (*flags_from_gtype)(GType gtype, int value);
 
     gboolean threads_enabled;
     int       (*enable_threads) (void);
@@ -193,33 +182,14 @@ struct _PyGObject_Functions {
     void      (*add_warning_redirection) (const char *domain,
                                           PyObject   *warning);
     void      (*disable_warning_redirections) (void);
-
-    /* type_register_custom API now removed, but leave a pointer here to not
-     * break ABI. */
-    void      *_type_register_custom;
-
+    void      (*type_register_custom)(const gchar *type_name,
+                                     PyGTypeRegistrationFunction callback,
+                                     gpointer data);
     gboolean  (*gerror_exception_check) (GError **error);
     PyObject* (*option_group_new) (GOptionGroup *group);
-    GType (* type_from_object_strict) (PyObject *obj, gboolean strict);
-
-    PyObject *(* newgobj_full)(GObject *obj, gboolean steal, gpointer g_class);
-    PyTypeObject *object_type;
-    int (* value_from_pyobject_with_error)(GValue *value, PyObject *obj);
+    GType (* type_from_object_strict) (PyObject *obj, gboolean strict);    
 };
 
-
-/* Deprecated, only available for API compatibility. */
-#define pyg_threads_enabled           TRUE
-#define pyg_gil_state_ensure          PyGILState_Ensure
-#define pyg_gil_state_release         PyGILState_Release
-#define pyg_begin_allow_threads       Py_BEGIN_ALLOW_THREADS
-#define pyg_end_allow_threads         Py_END_ALLOW_THREADS
-#define pyg_enable_threads()
-#define pyg_set_thread_block_funcs(a, b)
-#define pyg_block_threads()
-#define pyg_unblock_threads()
-
-
 #ifndef _INSIDE_PYGOBJECT_
 
 #if defined(NO_IMPORT) || defined(NO_IMPORT_PYGOBJECT)
@@ -232,8 +202,6 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define pygobject_register_wrapper  (_PyGObject_API->register_wrapper)
 #define pygobject_lookup_class      (_PyGObject_API->lookup_class)
 #define pygobject_new               (_PyGObject_API->newgobj)
-#define pygobject_new_full          (_PyGObject_API->newgobj_full)
-#define PyGObject_Type              (*_PyGObject_API->object_type)
 #define pyg_closure_new             (_PyGObject_API->closure_new)
 #define pygobject_watch_closure     (_PyGObject_API->object_watch_closure)
 #define pyg_closure_set_exception_handler (_PyGObject_API->closure_set_exception_handler)
@@ -245,7 +213,6 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define pyg_flags_get_value         (_PyGObject_API->flags_get_value)
 #define pyg_register_gtype_custom   (_PyGObject_API->register_gtype_custom)
 #define pyg_value_from_pyobject     (_PyGObject_API->value_from_pyobject)
-#define pyg_value_from_pyobject_with_error (_PyGObject_API->value_from_pyobject_with_error)
 #define pyg_value_as_pyobject       (_PyGObject_API->value_as_pyobject)
 #define pyg_register_interface      (_PyGObject_API->register_interface)
 #define PyGBoxed_Type               (*_PyGObject_API->boxed_type)
@@ -258,6 +225,7 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define pyg_flags_add_constants     (_PyGObject_API->flags_add_constants)
 #define pyg_constant_strip_prefix   (_PyGObject_API->constant_strip_prefix)
 #define pyg_error_check             (_PyGObject_API->error_check)
+#define pyg_set_thread_block_funcs  (_PyGObject_API->set_thread_block_funcs)
 #define PyGParamSpec_Type           (*_PyGObject_API->paramspec_type)
 #define pyg_param_spec_new          (_PyGObject_API->paramspec_new)
 #define pyg_param_spec_from_object  (_PyGObject_API->paramspec_get)
@@ -271,13 +239,38 @@ struct _PyGObject_Functions *_PyGObject_API;
 #define PyGFlags_Type               (*_PyGObject_API->flags_type)
 #define pyg_flags_add               (_PyGObject_API->flags_add)
 #define pyg_flags_from_gtype        (_PyGObject_API->flags_from_gtype)
+#define pyg_enable_threads          (_PyGObject_API->enable_threads)
+#define pyg_gil_state_ensure        (_PyGObject_API->gil_state_ensure)
+#define pyg_gil_state_release       (_PyGObject_API->gil_state_release)
 #define pyg_register_class_init     (_PyGObject_API->register_class_init)
 #define pyg_register_interface_info (_PyGObject_API->register_interface_info)
 #define pyg_add_warning_redirection   (_PyGObject_API->add_warning_redirection)
 #define pyg_disable_warning_redirections (_PyGObject_API->disable_warning_redirections)
+#define pyg_type_register_custom_callback (_PyGObject_API->type_register_custom)
 #define pyg_gerror_exception_check (_PyGObject_API->gerror_exception_check)
 #define pyg_option_group_new       (_PyGObject_API->option_group_new)
 
+#define pyg_block_threads()   G_STMT_START {   \
+    if (_PyGObject_API->block_threads != NULL) \
+      (* _PyGObject_API->block_threads)();     \
+  } G_STMT_END
+#define pyg_unblock_threads() G_STMT_START {     \
+    if (_PyGObject_API->unblock_threads != NULL) \
+      (* _PyGObject_API->unblock_threads)();     \
+  } G_STMT_END
+
+#define pyg_threads_enabled (_PyGObject_API->threads_enabled)
+
+#define pyg_begin_allow_threads                 \
+    G_STMT_START {                              \
+        PyThreadState *_save = NULL;            \
+        if (_PyGObject_API->threads_enabled)    \
+            _save = PyEval_SaveThread();
+#define pyg_end_allow_threads                   \
+        if (_PyGObject_API->threads_enabled)    \
+            PyEval_RestoreThread(_save);        \
+    } G_STMT_END
+
 
 /**
  * pygobject_init:
@@ -343,8 +336,14 @@ pygobject_init(int req_major, int req_minor, int req_micro)
     }
 
     cobject = PyObject_GetAttrString(gobject, "_PyGObject_API");
+#if PY_VERSION_HEX >= 0x03000000
     if (cobject && PyCapsule_CheckExact(cobject))
         _PyGObject_API = (struct _PyGObject_Functions *) PyCapsule_GetPointer(cobject, "gobject._PyGObject_API");
+
+#else
+    if (cobject && PyCObject_Check(cobject))
+        _PyGObject_API = (struct _PyGObject_Functions *) PyCObject_AsVoidPtr(cobject);
+#endif
     else {
         PyErr_SetString(PyExc_ImportError,
                         "could not import gobject (could not find _PyGObject_API object)");
similarity index 59%
rename from gi/pygparamspec.c
rename to gi/_gobject/pygparamspec.c
index 4ace96c..94f1dbb 100644 (file)
@@ -16,7 +16,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
-#include <glib-object.h>
 
-#include "pygenum.h"
-#include "pygflags.h"
-#include "pygtype.h"
+#include "pygobject-private.h"
 #include "pygparamspec.h"
 
 PYGLIB_DEFINE_TYPE("gobject.GParamSpec", PyGParamSpec_Type, PyGParamSpec);
@@ -37,19 +36,19 @@ static PyObject*
 pyg_param_spec_richcompare(PyObject *self, PyObject *other, int op)
 {
     if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGParamSpec_Type)
-        return _pyglib_generic_ptr_richcompare (pyg_param_spec_get (self),
-                                                pyg_param_spec_get (other),
-                                                op);
+        return _pyglib_generic_ptr_richcompare(((PyGParamSpec*)self)->pspec,
+                                               ((PyGParamSpec*)other)->pspec,
+                                               op);
     else {
         Py_INCREF(Py_NotImplemented);
         return Py_NotImplemented;
     }
 }
 
-static PYGLIB_Py_hash_t
+static long
 pyg_param_spec_hash(PyGParamSpec *self)
 {
-    return PYGLIB_Py_hash_t_FromVoidPtr (pyg_param_spec_get (self));
+    return (long)self->pspec;
 }
 
 static PyObject *
@@ -58,15 +57,15 @@ pyg_param_spec_repr(PyGParamSpec *self)
     char buf[80];
 
     g_snprintf(buf, sizeof(buf), "<%s '%s'>",
-              G_PARAM_SPEC_TYPE_NAME (pyg_param_spec_get (self)),
-              g_param_spec_get_name (pyg_param_spec_get (self)));
+              G_PARAM_SPEC_TYPE_NAME(self->pspec),
+              g_param_spec_get_name(self->pspec));
     return PYGLIB_PyUnicode_FromString(buf);
 }
 
 static void
 pyg_param_spec_dealloc(PyGParamSpec *self)
 {
-    g_param_spec_unref (pyg_param_spec_get (self));
+    g_param_spec_unref(self->pspec);
     PyObject_DEL(self);
 }
 
@@ -115,8 +114,8 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
 {
     GParamSpec *pspec;
 
-    pspec = pyg_param_spec_get (self);
-
+    pspec = self->pspec;
+    
     /* common attributes */
     if (!strcmp(attr, "__gtype__")) {
        return pyg_type_wrapper_new(G_PARAM_SPEC_TYPE(pspec));
@@ -135,7 +134,12 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
     }
 
     if (G_IS_PARAM_SPEC_CHAR(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value", "flags",
+                                "maximum", "minimum", "name", "nick",
+                                "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PYGLIB_PyUnicode_FromFormat(
                "%c", G_PARAM_SPEC_CHAR(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
@@ -144,7 +148,13 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PYGLIB_PyLong_FromLong(G_PARAM_SPEC_CHAR(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_UCHAR(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum", 
+                                "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PYGLIB_PyUnicode_FromFormat(
                "%c", G_PARAM_SPEC_UCHAR(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
@@ -153,11 +163,21 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PYGLIB_PyLong_FromLong(G_PARAM_SPEC_UCHAR(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_BOOLEAN(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyBool_FromLong(G_PARAM_SPEC_BOOLEAN(pspec)->default_value);
        }
     } else if (G_IS_PARAM_SPEC_INT(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum", "name",
+                                "nick", "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PYGLIB_PyLong_FromLong(G_PARAM_SPEC_INT(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PYGLIB_PyLong_FromLong(G_PARAM_SPEC_INT(pspec)->minimum);
@@ -165,7 +185,13 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PYGLIB_PyLong_FromLong(G_PARAM_SPEC_INT(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_UINT(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum",
+                                "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_UINT(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_UINT(pspec)->minimum);
@@ -173,7 +199,12 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_UINT(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_LONG(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum", "name",
+                                "nick", "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyLong_FromLong(G_PARAM_SPEC_LONG(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyLong_FromLong(G_PARAM_SPEC_LONG(pspec)->minimum);
@@ -181,7 +212,12 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyLong_FromLong(G_PARAM_SPEC_LONG(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_ULONG(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum", "name",
+                                "nick", "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_ULONG(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_ULONG(pspec)->minimum);
@@ -189,7 +225,12 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyLong_FromUnsignedLong(G_PARAM_SPEC_ULONG(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_INT64(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum", "name",
+                                "nick", "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyLong_FromLongLong(G_PARAM_SPEC_INT64(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyLong_FromLongLong(G_PARAM_SPEC_INT64(pspec)->minimum);
@@ -197,7 +238,13 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyLong_FromLongLong(G_PARAM_SPEC_INT64(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_UINT64(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "maximum", "minimum",
+                                "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyLong_FromUnsignedLongLong(G_PARAM_SPEC_UINT64(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyLong_FromUnsignedLongLong(G_PARAM_SPEC_UINT64(pspec)->minimum);
@@ -205,26 +252,47 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyLong_FromUnsignedLongLong(G_PARAM_SPEC_UINT64(pspec)->maximum);
        }
     } else if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[sssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PYGLIB_PyUnicode_FromFormat(
                "%c", G_PARAM_SPEC_UNICHAR(pspec)->default_value);
        }
     } else if (G_IS_PARAM_SPEC_ENUM(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value", "enum_class",
+                                "flags", "name", "nick", "owner_type",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return pyg_enum_from_gtype(
                pspec->value_type, G_PARAM_SPEC_ENUM(pspec)->default_value);
        } else if (!strcmp(attr, "enum_class")) {
            return pygenum_from_pspec(pspec);
        }
     } else if (G_IS_PARAM_SPEC_FLAGS(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value",
+                                "flags", "flags_class", "name", "nick",
+                                "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return pyg_flags_from_gtype(
                pspec->value_type, G_PARAM_SPEC_FLAGS(pspec)->default_value);
        } else if (!strcmp(attr, "flags_class")) {
            return pygflags_from_pspec(pspec);
        }
     } else if (G_IS_PARAM_SPEC_FLOAT(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "epsilon",
+                                "flags", "maximum", "minimum", "name", "nick", "owner_type",
+                                "value_type", 
+                                "default_value");
+       } else if (!strcmp(attr, "default_value")) {
            return PyFloat_FromDouble(G_PARAM_SPEC_FLOAT(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
            return PyFloat_FromDouble(G_PARAM_SPEC_FLOAT(pspec)->minimum);
@@ -234,7 +302,12 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyFloat_FromDouble(G_PARAM_SPEC_FLOAT(pspec)->epsilon);
        }
     } else if (G_IS_PARAM_SPEC_DOUBLE(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "default_value", "epsilon",
+                                "flags", "maximum", "minimum", "name", "nick",
+                                "owner_type", "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return PyFloat_FromDouble(
                G_PARAM_SPEC_DOUBLE(pspec)->default_value);
        } else if (!strcmp(attr, "minimum")) {
@@ -245,7 +318,13 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
            return PyFloat_FromDouble(G_PARAM_SPEC_DOUBLE(pspec)->epsilon);
        }
     } else if (G_IS_PARAM_SPEC_STRING(pspec)) {
-       if (!strcmp(attr, "default_value")) {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssssssssss]", "__doc__", "__gtype__",
+                                "blurb", "cset_first", "cset_nth", "default_value",
+                                "ensure_non_null", "flags", "name", "nick",
+                                "null_fold_if_empty", "owner_type", "substitutor",
+                                "value_type");
+       } else if (!strcmp(attr, "default_value")) {
            return Py_BuildValue(
                "s", G_PARAM_SPEC_STRING(pspec)->default_value);
        } else if (!strcmp(attr, "cset_first")) {
@@ -265,11 +344,16 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
                G_PARAM_SPEC_STRING(pspec)->ensure_non_null);
        }
     } else {
+       if (!strcmp(attr, "__members__")) {
+           return Py_BuildValue("[ssssssss]", "__doc__", "__gtype__", "blurb",
+                                "flags", "name", "nick",
+                                "owner_type", "value_type");
+           
        /* This is actually not what's exported by GObjects paramspecs,
         * But we exported this in earlier versions, so it's better to keep it here
-        * compatibility. But don't return it in __dir__, to "hide" it.
+        * compatibility. But don't add it in __members__, to "hide" it.
         */
-       if (!strcmp(attr, "default_value")) {
+       } else if (!strcmp(attr, "default_value")) {
            /* XXX: Raise deprecation warning */
            Py_INCREF(Py_None);
            return Py_None;
@@ -280,104 +364,6 @@ pyg_param_spec_getattr(PyGParamSpec *self, const gchar *attr)
     return NULL;
 }
 
-
-static PyObject *
-pyg_param_spec_dir(PyGParamSpec *self, PyObject *dummy)
-{
-    GParamSpec *pspec = pyg_param_spec_get (self);
-
-    if (G_IS_PARAM_SPEC_CHAR(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value", "flags",
-                             "maximum", "minimum", "name", "nick",
-                             "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_UCHAR(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum",
-                             "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_BOOLEAN(pspec)) {
-        return Py_BuildValue("[sssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_INT(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum", "name",
-                             "nick", "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_UINT(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum",
-                             "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_LONG(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum", "name",
-                             "nick", "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_ULONG(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum", "name",
-                             "nick", "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_INT64(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum", "name",
-                             "nick", "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_UINT64(pspec)) {
-        return Py_BuildValue("[sssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "maximum", "minimum",
-                             "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
-        return Py_BuildValue("[sssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_ENUM(pspec)) {
-        return Py_BuildValue("[ssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value", "enum_class",
-                             "flags", "name", "nick", "owner_type",
-                             "value_type");
-    } else if (G_IS_PARAM_SPEC_FLAGS(pspec)) {
-        return Py_BuildValue("[ssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value",
-                             "flags", "flags_class", "name", "nick",
-                             "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_FLOAT(pspec)) {
-        return Py_BuildValue("[ssssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "epsilon",
-                             "flags", "maximum", "minimum", "name", "nick", "owner_type",
-                             "value_type",
-                             "default_value");
-    } else if (G_IS_PARAM_SPEC_DOUBLE(pspec)) {
-        return Py_BuildValue("[ssssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "default_value", "epsilon",
-                             "flags", "maximum", "minimum", "name", "nick",
-                             "owner_type", "value_type");
-    } else if (G_IS_PARAM_SPEC_STRING(pspec)) {
-        return Py_BuildValue("[ssssssssssssss]", "__doc__", "__gtype__",
-                             "blurb", "cset_first", "cset_nth", "default_value",
-                             "ensure_non_null", "flags", "name", "nick",
-                             "null_fold_if_empty", "owner_type", "substitutor",
-                             "value_type");
-    } else {
-        return Py_BuildValue("[ssssssss]", "__doc__", "__gtype__", "blurb",
-                             "flags", "name", "nick",
-                             "owner_type", "value_type");
-    }
-}
-
-static PyMethodDef pyg_param_spec_methods[] = {
-    { "__dir__", (PyCFunction)pyg_param_spec_dir, METH_NOARGS},
-    { NULL, NULL, 0}
-};
-
 /**
  * pyg_param_spec_new:
  * @pspec: a GParamSpec.
@@ -396,7 +382,7 @@ pyg_param_spec_new(GParamSpec *pspec)
     if (self == NULL)
        return NULL;
 
-    pyg_param_spec_set (self, g_param_spec_ref (pspec));
+    self->pspec = g_param_spec_ref(pspec);
     return (PyObject *)self;
 }
 
@@ -410,7 +396,6 @@ pygobject_paramspec_register_types(PyObject *d)
     PyGParamSpec_Type.tp_flags = Py_TPFLAGS_DEFAULT;
     PyGParamSpec_Type.tp_repr = (reprfunc)pyg_param_spec_repr;
     PyGParamSpec_Type.tp_hash = (hashfunc)pyg_param_spec_hash;
-    PyGParamSpec_Type.tp_methods = pyg_param_spec_methods;
 
 
     if (PyType_Ready(&PyGParamSpec_Type))
similarity index 87%
rename from gi/pygparamspec.h
rename to gi/_gobject/pygparamspec.h
index db83e59..64aab0c 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGOBJECT_PARAMSPEC_H__ 
 #define __PYGOBJECT_PARAMSPEC_H__
 
-#include <glib-object.h>
-
 extern PyTypeObject PyGParamSpec_Type;
 PyObject * pyg_param_spec_new (GParamSpec *pspec);
 
similarity index 86%
rename from gi/pygpointer.c
rename to gi/_gobject/pygpointer.c
index dccd303..575c751 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 #endif
 
 #include <pyglib.h>
-#include <glib-object.h>
+#include "pygobject-private.h"
 #include "pygpointer.h"
-#include "pygtype.h"
 
-#include "pygi-type.h"
+#include "pygi.h"
 
 
 GQuark pygpointer_class_key;
@@ -44,19 +45,19 @@ static PyObject*
 pyg_pointer_richcompare(PyObject *self, PyObject *other, int op)
 {
     if (Py_TYPE(self) == Py_TYPE(other))
-        return _pyglib_generic_ptr_richcompare (pyg_pointer_get_ptr (self),
-                                                pyg_pointer_get_ptr (other),
-                                                op);
+        return _pyglib_generic_ptr_richcompare(((PyGPointer*)self)->pointer,
+                                               ((PyGPointer*)other)->pointer,
+                                               op);
     else {
         Py_INCREF(Py_NotImplemented);
         return Py_NotImplemented;
     }
 }
 
-static PYGLIB_Py_hash_t
+static long
 pyg_pointer_hash(PyGPointer *self)
 {
-    return PYGLIB_Py_hash_t_FromVoidPtr (pyg_pointer_get_ptr (self));
+    return (long)self->pointer;
 }
 
 static PyObject *
@@ -64,9 +65,8 @@ pyg_pointer_repr(PyGPointer *self)
 {
     gchar buf[128];
 
-    g_snprintf(buf, sizeof(buf), "<%s at 0x%" G_GUINTPTR_FORMAT ">",
-               g_type_name(self->gtype),
-               (guintptr)pyg_pointer_get_ptr (self));
+    g_snprintf(buf, sizeof(buf), "<%s at 0x%lx>", g_type_name(self->gtype),
+              (long)self->pointer);
     return PYGLIB_PyUnicode_FromString(buf);
 }
 
@@ -78,7 +78,7 @@ pyg_pointer_init(PyGPointer *self, PyObject *args, PyObject *kwargs)
     if (!PyArg_ParseTuple(args, ":GPointer.__init__"))
        return -1;
 
-    pyg_pointer_set_ptr (self, NULL);
+    self->pointer = NULL;
     self->gtype = 0;
 
     g_snprintf(buf, sizeof(buf), "%s can not be constructed",
@@ -154,11 +154,11 @@ pyg_pointer_new(GType pointer_type, gpointer pointer)
     PyTypeObject *tp;
     g_return_val_if_fail(pointer_type != 0, NULL);
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     if (!pointer) {
        Py_INCREF(Py_None);
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return Py_None;
     }
 
@@ -171,12 +171,12 @@ pyg_pointer_new(GType pointer_type, gpointer pointer)
        tp = (PyTypeObject *)&PyGPointer_Type; /* fallback */
     self = PyObject_NEW(PyGPointer, tp);
 
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 
     if (self == NULL)
        return NULL;
 
-    pyg_pointer_set_ptr (self, pointer);
+    self->pointer = pointer;
     self->gtype = pointer_type;
 
     return (PyObject *)self;
similarity index 71%
rename from gi/pygpointer.h
rename to gi/_gobject/pygpointer.h
index 363362c..f2923da 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGOBJECT_POINTER_H__ 
 #define __PYGOBJECT_POINTER_H__
 
-extern GQuark pygpointer_class_key;
-
-extern PyTypeObject PyGPointer_Type;
-
-void       pyg_register_pointer (PyObject *dict, const gchar *class_name,
-                                 GType pointer_type, PyTypeObject *type);
-PyObject * pyg_pointer_new      (GType pointer_type, gpointer pointer);
-
 void pygobject_pointer_register_types(PyObject *d);
 
 #endif /* __PYGOBJECT_POINTER_H__ */
similarity index 62%
rename from gi/pygtype.c
rename to gi/_gobject/pygtype.c
index 85a6d82..fa95d13 100644 (file)
@@ -15,7 +15,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifdef HAVE_CONFIG_H
 
 #include <pyglib.h>
 
-#include "pygobject-object.h"
-#include "pygboxed.h"
-#include "pygenum.h"
-#include "pygflags.h"
+#include "pygobject-private.h"
 #include "pygparamspec.h"
 #include "pygtype.h"
-#include "pygpointer.h"
-#include "pyginterface.h"
-
-#include "pygi-type.h"
-#include "pygi-value.h"
 
 /* -------------- __gtype__ objects ---------------------------- */
 
@@ -274,7 +268,7 @@ _wrap_g_type_from_name(PyGTypeWrapper *_, PyObject *args)
     if (!PyArg_ParseTuple(args, "s:GType.from_name", &type_name))
        return NULL;
 
-    type = g_type_from_name(type_name);
+    type = _pyg_type_from_name(type_name);
     if (type == 0) {
        PyErr_SetString(PyExc_RuntimeError, "unknown type name");
        return NULL;
@@ -407,7 +401,7 @@ pyg_type_from_object_strict(PyObject *obj, gboolean strict)
     if (PYGLIB_PyUnicode_Check(obj)) {
        gchar *name = PYGLIB_PyUnicode_AsString(obj);
 
-       type = g_type_from_name(name);
+       type = _pyg_type_from_name(name);
        if (type != 0) {
            return type;
        }
@@ -455,6 +449,8 @@ pyg_type_from_object(PyObject *obj)
     return pyg_type_from_object_strict(obj, TRUE);
 }
 
+/* -------------- GValue marshalling ------------------ */
+
 /**
  * pyg_enum_get_value:
  * @enum_type: the GType of the flag.
@@ -542,7 +538,7 @@ pyg_enum_get_value(GType enum_type, PyObject *obj, gint *val)
  * Returns: 0 on success or -1 on failure
  */
 gint
-pyg_flags_get_value(GType flag_type, PyObject *obj, guint *val)
+pyg_flags_get_value(GType flag_type, PyObject *obj, gint *val)
 {
     GFlagsClass *fclass = NULL;
     gint res = -1;
@@ -552,7 +548,7 @@ pyg_flags_get_value(GType flag_type, PyObject *obj, guint *val)
        *val = 0;
        res = 0;
     } else if (PYGLIB_PyLong_Check(obj)) {
-       *val = PYGLIB_PyLong_AsUnsignedLong(obj);
+       *val = PYGLIB_PyLong_AsLong(obj);
        res = 0;
     } else if (PyLong_Check(obj)) {
         *val = PyLong_AsLongLong(obj);
@@ -617,9 +613,13 @@ pyg_flags_get_value(GType flag_type, PyObject *obj, guint *val)
     return res;
 }
 
+typedef struct {
+    fromvaluefunc fromvalue;
+    tovaluefunc tovalue;
+} PyGTypeMarshal;
 static GQuark pyg_type_marshal_key = 0;
 
-PyGTypeMarshal *
+static PyGTypeMarshal *
 pyg_type_lookup(GType type)
 {
     GType      ptype = type;
@@ -627,7 +627,6 @@ pyg_type_lookup(GType type)
 
     /* recursively lookup types */
     while (ptype) {
-        pygi_type_import_by_g_type (ptype);
        if ((tm = g_type_get_qdata(ptype, pyg_type_marshal_key)) != NULL)
            break;
        ptype = g_type_parent(ptype);
@@ -662,6 +661,506 @@ pyg_register_gtype_custom(GType gtype,
     g_type_set_qdata(gtype, pyg_type_marshal_key, tm);
 }
 
+static int
+pyg_value_array_from_pyobject(GValue *value,
+                             PyObject *obj,
+                             const GParamSpecValueArray *pspec)
+{
+    int len;
+    GValueArray *value_array;
+    int i;
+
+    len = PySequence_Length(obj);
+    if (len == -1) {
+       PyErr_Clear();
+       return -1;
+    }
+
+    if (pspec && pspec->fixed_n_elements > 0 && len != pspec->fixed_n_elements)
+       return -1;
+
+    value_array = g_value_array_new(len);
+
+    for (i = 0; i < len; ++i) {
+       PyObject *item = PySequence_GetItem(obj, i);
+       GType type;
+       GValue item_value = { 0, };
+       int status;
+
+       if (! item) {
+           PyErr_Clear();
+           g_value_array_free(value_array);
+           return -1;
+       }
+
+       if (pspec && pspec->element_spec)
+           type = G_PARAM_SPEC_VALUE_TYPE(pspec->element_spec);
+       else if (item == Py_None)
+           type = G_TYPE_POINTER; /* store None as NULL */
+       else {
+           type = pyg_type_from_object((PyObject*)Py_TYPE(item));
+           if (! type) {
+               PyErr_Clear();
+               g_value_array_free(value_array);
+               Py_DECREF(item);
+               return -1;
+           }
+       }
+
+       g_value_init(&item_value, type);
+       status = (pspec && pspec->element_spec)
+           ? pyg_param_gvalue_from_pyobject(&item_value, item, pspec->element_spec)
+           : pyg_value_from_pyobject(&item_value, item);
+       Py_DECREF(item);
+
+       if (status == -1) {
+           g_value_array_free(value_array);
+           g_value_unset(&item_value);
+           return -1;
+       }
+
+       g_value_array_append(value_array, &item_value);
+       g_value_unset(&item_value);
+    }
+
+    g_value_take_boxed(value, value_array);
+    return 0;
+}
+
+/**
+ * pyg_value_from_pyobject:
+ * @value: the GValue object to store the converted value in.
+ * @obj: the Python object to convert.
+ *
+ * This function converts a Python object and stores the result in a
+ * GValue.  The GValue must be initialised in advance with
+ * g_value_init().  If the Python object can't be converted to the
+ * type of the GValue, then an error is returned.
+ *
+ * Returns: 0 on success, -1 on error.
+ */
+int
+pyg_value_from_pyobject(GValue *value, PyObject *obj)
+{
+    PyObject *tmp;
+    GType value_type = G_VALUE_TYPE(value);
+
+    switch (G_TYPE_FUNDAMENTAL(value_type)) {
+    case G_TYPE_INTERFACE:
+       /* we only handle interface types that have a GObject prereq */
+       if (g_type_is_a(value_type, G_TYPE_OBJECT)) {
+           if (obj == Py_None)
+               g_value_set_object(value, NULL);
+           else {
+               if (!PyObject_TypeCheck(obj, &PyGObject_Type)) {
+                   return -1;
+               }
+               if (!G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
+                                               value_type)) {
+                   return -1;
+               }
+               g_value_set_object(value, pygobject_get(obj));
+           }
+       } else {
+           return -1;
+       }
+       break;
+    case G_TYPE_CHAR:
+#if PY_VERSION_HEX < 0x03000000
+       if (PyString_Check(obj)) {
+           g_value_set_schar(value, PyString_AsString(obj)[0]);
+       } else
+#endif
+       if (PyUnicode_Check(obj)) {
+           tmp = PyUnicode_AsUTF8String(obj);
+           g_value_set_schar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
+           Py_DECREF(tmp);
+       } else {
+           PyErr_Clear();
+           return -1;
+       }
+
+       break;
+    case G_TYPE_UCHAR:
+       if (PYGLIB_PyLong_Check(obj)) {
+           glong val;
+           val = PYGLIB_PyLong_AsLong(obj);
+           if (val >= 0 && val <= 255)
+             g_value_set_uchar(value, (guchar)PYGLIB_PyLong_AsLong (obj));
+           else
+             return -1;
+#if PY_VERSION_HEX < 0x03000000
+       } else if (PyString_Check(obj)) {
+           g_value_set_uchar(value, PyString_AsString(obj)[0]);
+#endif
+       } else if (PyUnicode_Check(obj)) {
+           tmp = PyUnicode_AsUTF8String(obj);
+           g_value_set_uchar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
+           Py_DECREF(tmp);
+       } else {
+           PyErr_Clear();
+           return -1;
+       }
+       break;
+    case G_TYPE_BOOLEAN:
+       g_value_set_boolean(value, PyObject_IsTrue(obj));
+       break;
+    case G_TYPE_INT:
+       g_value_set_int(value, PYGLIB_PyLong_AsLong(obj));
+       break;
+    case G_TYPE_UINT:
+       {
+           if (PYGLIB_PyLong_Check(obj)) {
+               glong val;
+
+               val = PYGLIB_PyLong_AsLong(obj);
+               if (val >= 0 && val <= G_MAXUINT)
+                   g_value_set_uint(value, (guint)val);
+               else
+                   return -1;
+           } else {
+               g_value_set_uint(value, PyLong_AsUnsignedLong(obj));
+           }
+       }
+       break;
+    case G_TYPE_LONG:
+       g_value_set_long(value, PYGLIB_PyLong_AsLong(obj));
+       break;
+    case G_TYPE_ULONG:
+#if PY_VERSION_HEX < 0x03000000
+       if (PyInt_Check(obj)) {
+            long val;
+
+            val = PYGLIB_PyLong_AsLong(obj);
+            if (val < 0) {
+                PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
+                return -1;
+            }
+            g_value_set_ulong(value, (gulong)val);
+        } else
+#endif
+        if (PyLong_Check(obj))
+           g_value_set_ulong(value, PyLong_AsUnsignedLong(obj));
+        else
+            return -1;
+        break;
+    case G_TYPE_INT64:
+       g_value_set_int64(value, PyLong_AsLongLong(obj));
+       break;
+    case G_TYPE_UINT64:
+#if PY_VERSION_HEX < 0x03000000
+        if (PyInt_Check(obj)) {
+            long v = PyInt_AsLong(obj);
+            if (v < 0) {
+                PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
+                return -1;
+            }
+            g_value_set_uint64(value, v);
+        } else
+#endif
+        if (PyLong_Check(obj))
+            g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
+        else
+            return -1;
+       break;
+    case G_TYPE_ENUM:
+       {
+           gint val = 0;
+           if (pyg_enum_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
+               PyErr_Clear();
+               return -1;
+           }
+           g_value_set_enum(value, val);
+       }
+       break;
+    case G_TYPE_FLAGS:
+       {
+           gint val = 0;
+           if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
+               PyErr_Clear();
+               return -1;
+           }
+           g_value_set_flags(value, val);
+       }
+       break;
+    case G_TYPE_FLOAT:
+       g_value_set_float(value, PyFloat_AsDouble(obj));
+       break;
+    case G_TYPE_DOUBLE:
+       g_value_set_double(value, PyFloat_AsDouble(obj));
+       break;
+    case G_TYPE_STRING:
+       if (obj == Py_None) {
+           g_value_set_string(value, NULL);
+       } else {
+           PyObject* tmp_str = PyObject_Str(obj);
+           if (tmp_str == NULL) {
+               PyErr_Clear();
+               if (PyUnicode_Check(obj)) {
+                   tmp = PyUnicode_AsUTF8String(obj);
+                   g_value_set_string(value, PYGLIB_PyBytes_AsString(tmp));
+                   Py_DECREF(tmp);
+               } else {
+                   return -1;
+               }
+           } else {
+#if PY_VERSION_HEX < 0x03000000
+              g_value_set_string(value, PyString_AsString(tmp_str));
+#else
+              tmp = PyUnicode_AsUTF8String(tmp_str);
+              g_value_set_string(value, PyBytes_AsString(tmp));
+              Py_DECREF(tmp);
+#endif
+           }
+           Py_XDECREF(tmp_str);
+       }
+       break;
+    case G_TYPE_POINTER:
+       if (obj == Py_None)
+           g_value_set_pointer(value, NULL);
+       else if (PyObject_TypeCheck(obj, &PyGPointer_Type) &&
+                  G_VALUE_HOLDS(value, ((PyGPointer *)obj)->gtype))
+           g_value_set_pointer(value, pyg_pointer_get(obj, gpointer));
+       else if (PYGLIB_CPointer_Check(obj))
+           g_value_set_pointer(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+       else if (G_VALUE_HOLDS_GTYPE (value))
+           g_value_set_gtype (value, pyg_type_from_object (obj));
+       else
+           return -1;
+       break;
+    case G_TYPE_BOXED: {
+       PyGTypeMarshal *bm;
+
+       if (obj == Py_None)
+           g_value_set_boxed(value, NULL);
+       else if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT))
+           g_value_set_boxed(value, obj);
+       else if (PyObject_TypeCheck(obj, &PyGBoxed_Type) &&
+                  G_VALUE_HOLDS(value, ((PyGBoxed *)obj)->gtype))
+           g_value_set_boxed(value, pyg_boxed_get(obj, gpointer));
+        else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
+            GType type;
+            GValue *n_value;
+
+            type = pyg_type_from_object((PyObject*)Py_TYPE(obj));
+            if (G_UNLIKELY (! type)) {
+                PyErr_Clear();
+                return -1;
+            }
+            n_value = g_new0 (GValue, 1);
+            g_value_init (n_value, type);
+            g_value_take_boxed (value, n_value);
+            return pyg_value_from_pyobject (n_value, obj);
+        }
+        else if (PySequence_Check(obj) &&
+                  G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY))
+           return pyg_value_array_from_pyobject(value, obj, NULL);
+       else if (PYGLIB_PyUnicode_Check(obj) &&
+                 G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
+            GString *string;
+            char *buffer;
+            Py_ssize_t len;
+            if (PYGLIB_PyUnicode_AsStringAndSize(obj, &buffer, &len))
+                return -1;
+            string = g_string_new_len(buffer, len);
+           g_value_set_boxed(value, string);
+           g_string_free (string, TRUE);
+            break;
+        }
+       else if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL)
+           return bm->tovalue(value, obj);
+       else if (PYGLIB_CPointer_Check(obj))
+           g_value_set_boxed(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+       else
+           return -1;
+       break;
+    }
+    case G_TYPE_PARAM:
+       if (PyGParamSpec_Check(obj))
+           g_value_set_param(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+       else
+           return -1;
+       break;
+    case G_TYPE_OBJECT:
+       if (obj == Py_None) {
+           g_value_set_object(value, NULL);
+       } else if (PyObject_TypeCheck(obj, &PyGObject_Type) &&
+                  G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
+                                             G_VALUE_TYPE(value))) {
+           g_value_set_object(value, pygobject_get(obj));
+       } else
+           return -1;
+       break;
+    default:
+       {
+           PyGTypeMarshal *bm;
+           if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL)
+               return bm->tovalue(value, obj);
+           break;
+       }
+    }
+    if (PyErr_Occurred()) {
+        g_value_unset(value);
+        PyErr_Clear();
+        return -1;
+    }
+    return 0;
+}
+
+/**
+ * pyg_value_as_pyobject:
+ * @value: the GValue object.
+ * @copy_boxed: true if boxed values should be copied.
+ *
+ * This function creates/returns a Python wrapper object that
+ * represents the GValue passed as an argument.
+ *
+ * Returns: a PyObject representing the value.
+ */
+PyObject *
+pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
+{
+    gchar buf[128];
+
+    switch (G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value))) {
+    case G_TYPE_INTERFACE:
+       if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT))
+           return pygobject_new(g_value_get_object(value));
+       else
+           break;
+    case G_TYPE_CHAR: {
+       gint8 val = g_value_get_schar(value);
+       return PYGLIB_PyUnicode_FromStringAndSize((char *)&val, 1);
+    }
+    case G_TYPE_UCHAR: {
+       guint8 val = g_value_get_uchar(value);
+       return PYGLIB_PyBytes_FromStringAndSize((char *)&val, 1);
+    }
+    case G_TYPE_BOOLEAN: {
+       return PyBool_FromLong(g_value_get_boolean(value));
+    }
+    case G_TYPE_INT:
+       return PYGLIB_PyLong_FromLong(g_value_get_int(value));
+    case G_TYPE_UINT:
+       {
+           /* in Python, the Int object is backed by a long.  If a
+              long can hold the whole value of an unsigned int, use
+              an Int.  Otherwise, use a Long object to avoid overflow.
+              This matches the ULongArg behavior in codegen/argtypes.h */
+#if (G_MAXUINT <= G_MAXLONG)
+           return PYGLIB_PyLong_FromLong((glong) g_value_get_uint(value));
+#else
+           return PyLong_FromUnsignedLong((gulong) g_value_get_uint(value));
+#endif
+       }
+    case G_TYPE_LONG:
+       return PYGLIB_PyLong_FromLong(g_value_get_long(value));
+    case G_TYPE_ULONG:
+       {
+           gulong val = g_value_get_ulong(value);
+
+           if (val <= G_MAXLONG)
+               return PYGLIB_PyLong_FromLong((glong) val);
+           else
+               return PyLong_FromUnsignedLong(val);
+       }
+    case G_TYPE_INT64:
+       {
+           gint64 val = g_value_get_int64(value);
+
+           if (G_MINLONG <= val && val <= G_MAXLONG)
+               return PYGLIB_PyLong_FromLong((glong) val);
+           else
+               return PyLong_FromLongLong(val);
+       }
+    case G_TYPE_UINT64:
+       {
+           guint64 val = g_value_get_uint64(value);
+
+           if (val <= G_MAXLONG)
+               return PYGLIB_PyLong_FromLong((glong) val);
+           else
+               return PyLong_FromUnsignedLongLong(val);
+       }
+    case G_TYPE_ENUM:
+       return pyg_enum_from_gtype(G_VALUE_TYPE(value), g_value_get_enum(value));
+    case G_TYPE_FLAGS:
+       return pyg_flags_from_gtype(G_VALUE_TYPE(value), g_value_get_flags(value));
+    case G_TYPE_FLOAT:
+       return PyFloat_FromDouble(g_value_get_float(value));
+    case G_TYPE_DOUBLE:
+       return PyFloat_FromDouble(g_value_get_double(value));
+    case G_TYPE_STRING:
+       {
+           const gchar *str = g_value_get_string(value);
+
+           if (str)
+               return PYGLIB_PyUnicode_FromString(str);
+           Py_INCREF(Py_None);
+           return Py_None;
+       }
+    case G_TYPE_POINTER:
+       if (G_VALUE_HOLDS_GTYPE (value))
+           return pyg_type_wrapper_new (g_value_get_gtype (value));
+       else
+           return pyg_pointer_new(G_VALUE_TYPE(value),
+                                  g_value_get_pointer(value));
+    case G_TYPE_BOXED: {
+       PyGTypeMarshal *bm;
+
+       if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT)) {
+           PyObject *ret = (PyObject *)g_value_dup_boxed(value);
+           if (ret == NULL) {
+               Py_INCREF(Py_None);
+               return Py_None;
+           }
+           return ret;
+        } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
+            GValue *n_value = g_value_get_boxed (value);
+            return pyg_value_as_pyobject(n_value, copy_boxed);
+        } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY)) {
+           GValueArray *array = (GValueArray *) g_value_get_boxed(value);
+           PyObject *ret = PyList_New(array->n_values);
+           int i;
+           for (i = 0; i < array->n_values; ++i)
+               PyList_SET_ITEM(ret, i, pyg_value_as_pyobject
+                                (array->values + i, copy_boxed));
+           return ret;
+       } else if (G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
+           GString *string = (GString *) g_value_get_boxed(value);
+           PyObject *ret = PYGLIB_PyUnicode_FromStringAndSize(string->str, string->len);
+           return ret;
+       }
+       bm = pyg_type_lookup(G_VALUE_TYPE(value));
+       if (bm) {
+           return bm->fromvalue(value);
+       } else {
+           if (copy_boxed)
+               return pyg_boxed_new(G_VALUE_TYPE(value),
+                                    g_value_get_boxed(value), TRUE, TRUE);
+           else
+               return pyg_boxed_new(G_VALUE_TYPE(value),
+                                    g_value_get_boxed(value),FALSE,FALSE);
+       }
+    }
+    case G_TYPE_PARAM:
+       return pyg_param_spec_new(g_value_get_param(value));
+    case G_TYPE_OBJECT:
+       return pygobject_new(g_value_get_object(value));
+    default:
+       {
+           PyGTypeMarshal *bm;
+           if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))))
+               return bm->fromvalue(value);
+           break;
+       }
+    }
+    g_snprintf(buf, sizeof(buf), "unknown type %s",
+              g_type_name(G_VALUE_TYPE(value)));
+    PyErr_SetString(PyExc_TypeError, buf);
+    return NULL;
+}
+
 /* -------------- PyGClosure ----------------- */
 
 static void
@@ -670,11 +1169,11 @@ pyg_closure_invalidate(gpointer data, GClosure *closure)
     PyGClosure *pc = (PyGClosure *)closure;
     PyGILState_STATE state;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
     Py_XDECREF(pc->callback);
     Py_XDECREF(pc->extra_args);
     Py_XDECREF(pc->swap_data);
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 
     pc->callback = NULL;
     pc->extra_args = NULL;
@@ -694,7 +1193,7 @@ pyg_closure_marshal(GClosure *closure,
     PyObject *params, *ret;
     guint i;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     /* construct Python tuple for the parameter values */
     params = PyTuple_New(n_param_values);
@@ -709,16 +1208,7 @@ pyg_closure_marshal(GClosure *closure,
 
            /* error condition */
            if (!item) {
-            if (!PyErr_Occurred ())
-                PyErr_SetString (PyExc_TypeError,
-                                 "can't convert parameter to desired type");
-
-            if (pc->exception_handler)
-                pc->exception_handler (return_value, n_param_values, param_values);
-            else
-                PyErr_Print();
-
-            goto out;
+               goto out;
            }
            PyTuple_SetItem(params, i, item);
        }
@@ -738,12 +1228,9 @@ pyg_closure_marshal(GClosure *closure,
        goto out;
     }
 
-    if (G_IS_VALUE(return_value) && pyg_value_from_pyobject(return_value, ret) != 0) {
-       /* If we already have an exception set, use that, otherwise set a
-        * generic one */
-       if (!PyErr_Occurred())
-           PyErr_SetString(PyExc_TypeError,
-                            "can't convert return value to desired type");
+    if (return_value && pyg_value_from_pyobject(return_value, ret) != 0) {
+       PyErr_SetString(PyExc_TypeError,
+                       "can't convert return value to desired type");
 
        if (pc->exception_handler)
            pc->exception_handler(return_value, n_param_values, param_values);
@@ -754,7 +1241,7 @@ pyg_closure_marshal(GClosure *closure,
 
  out:
     Py_DECREF(params);
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 /**
@@ -847,7 +1334,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
     PyObject *params, *ret;
     guint i, len;
 
-    state = PyGILState_Ensure();
+    state = pyglib_gil_state_ensure();
 
     g_return_if_fail(invocation_hint != NULL);
     /* get the object passed as the first argument to the closure */
@@ -873,7 +1360,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
     if (!method) {
        PyErr_Clear();
        Py_DECREF(object_wrapper);
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return;
     }
     Py_DECREF(object_wrapper);
@@ -887,7 +1374,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
        /* error condition */
        if (!item) {
            Py_DECREF(params);
-           PyGILState_Release(state);
+           pyglib_gil_state_release(state);
            return;
        }
        PyTuple_SetItem(params, i - 1, item);
@@ -904,8 +1391,7 @@ pyg_signal_class_closure_marshal(GClosure *closure,
            && item->ob_refcnt != 1) {
            PyGBoxed* boxed_item = (PyGBoxed*)item;
            if (!boxed_item->free_on_dealloc) {
-               gpointer boxed_ptr = pyg_boxed_get_ptr (boxed_item);
-               pyg_boxed_set_ptr (boxed_item, g_boxed_copy (boxed_item->gtype, boxed_ptr));
+               boxed_item->boxed = g_boxed_copy(boxed_item->gtype, boxed_item->boxed);
                boxed_item->free_on_dealloc = TRUE;
            }
        }
@@ -915,15 +1401,15 @@ pyg_signal_class_closure_marshal(GClosure *closure,
        PyErr_Print();
        Py_DECREF(method);
        Py_DECREF(params);
-       PyGILState_Release(state);
+       pyglib_gil_state_release(state);
        return;
     }
     Py_DECREF(method);
     Py_DECREF(params);
-    if (G_IS_VALUE(return_value))
+    if (return_value)
        pyg_value_from_pyobject(return_value, ret);
     Py_DECREF(ret);
-    PyGILState_Release(state);
+    pyglib_gil_state_release(state);
 }
 
 /**
@@ -950,6 +1436,26 @@ pyg_signal_class_closure_get(void)
     return closure;
 }
 
+GClosure *
+gclosure_from_pyfunc(PyGObject *object, PyObject *func)
+{
+    GSList *l;
+    PyGObjectData *inst_data;
+    inst_data = pyg_object_peek_inst_data(object->obj);
+    if (inst_data) {
+        for (l = inst_data->closures; l; l = l->next) {
+            PyGClosure *pyclosure = l->data;
+            int res = PyObject_RichCompareBool(pyclosure->callback, func, Py_EQ);
+            if (res == -1) {
+                PyErr_Clear(); // Is there anything else to do?
+            } else if (res) {
+                return (GClosure*)pyclosure;
+            }
+        }
+    }
+    return NULL;
+}
+
 /* ----- __doc__ descriptor for GObject and GInterface ----- */
 
 static void
@@ -1174,10 +1680,149 @@ int pyg_pyobj_to_unichar_conv(PyObject* py_obj, void* ptr)
     return 0;
 }
 
-gboolean
-pyg_gtype_is_custom(GType gtype)
+
+int
+pyg_param_gvalue_from_pyobject(GValue* value,
+                               PyObject* py_obj,
+                              const GParamSpec* pspec)
 {
-    return g_type_get_qdata (gtype, pygobject_custom_key) != NULL;
+    if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
+       gunichar u;
+
+       if (!pyg_pyobj_to_unichar_conv(py_obj, &u)) {
+           PyErr_Clear();
+           return -1;
+       }
+        g_value_set_uint(value, u);
+       return 0;
+    }
+    else if (G_IS_PARAM_SPEC_VALUE_ARRAY(pspec))
+       return pyg_value_array_from_pyobject(value, py_obj,
+                                            G_PARAM_SPEC_VALUE_ARRAY(pspec));
+    else {
+       return pyg_value_from_pyobject(value, py_obj);
+    }
+}
+
+PyObject*
+pyg_param_gvalue_as_pyobject(const GValue* gvalue,
+                             gboolean copy_boxed,
+                            const GParamSpec* pspec)
+{
+    if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
+       gunichar u;
+       Py_UNICODE uni_buffer[2] = { 0, 0 };
+
+       u = g_value_get_uint(gvalue);
+       uni_buffer[0] = u;
+       return PyUnicode_FromUnicode(uni_buffer, 1);
+    }
+    else {
+       return pyg_value_as_pyobject(gvalue, copy_boxed);
+    }
+}
+
+/**
+ * pyg_type_registration_callback
+ * @gtypename: type name
+ * @callback: function to run
+ *
+ */
+typedef struct {
+    PyGTypeRegistrationFunction callback;
+    gpointer data;
+} CustomTypeData;
+
+void
+pyg_type_register_custom_callback(const gchar *typename,
+                                 PyGTypeRegistrationFunction callback,
+                                 gpointer user_data)
+{
+    CustomTypeData *data;
+
+    if (!custom_type_registration)
+       custom_type_registration = g_hash_table_new_full (g_str_hash, g_str_equal,
+                                                         g_free, g_free);
+
+    data = g_new (CustomTypeData, 1);
+    data->callback = callback;
+    data->data = user_data;
+
+    g_hash_table_insert(custom_type_registration,
+                       g_strdup(typename),
+                       data);
+}
+
+PyTypeObject *
+pyg_type_get_custom(const gchar *name)
+{
+    CustomTypeData *data;
+    PyTypeObject *retval;
+
+    if (!custom_type_registration)
+       return NULL;
+
+    data = g_hash_table_lookup(custom_type_registration, name);
+    if (!data)
+       return NULL;
+
+    retval = data->callback(name, data->data);
+
+    g_hash_table_remove(custom_type_registration, name);
+
+    return retval;
+}
+
+GType
+_pyg_type_from_name(const gchar *name)
+{
+    GType type;
+
+    type = g_type_from_name(name);
+    if (type == G_TYPE_INVALID) {
+       pyg_type_get_custom(name);
+       type = g_type_from_name(name);
+    }
+
+    return type;
+}
+
+static PyObject *
+_pyg_strv_from_gvalue(const GValue *value)
+{
+    gchar    **argv = (gchar **) g_value_get_boxed(value);
+    int        argc = 0, i;
+    PyObject  *py_argv;
+
+    if (argv) {
+        while (argv[argc])
+            argc++;
+    }
+    py_argv = PyList_New(argc);
+    for (i = 0; i < argc; ++i)
+       PyList_SET_ITEM(py_argv, i, PYGLIB_PyUnicode_FromString(argv[i]));
+    return py_argv;
+}
+
+static int
+_pyg_strv_to_gvalue(GValue *value, PyObject *obj)
+{
+    Py_ssize_t argc, i;
+    gchar **argv;
+
+    if (!(PyTuple_Check(obj) || PyList_Check(obj)))
+        return -1;
+
+    argc = PySequence_Length(obj);
+    for (i = 0; i < argc; ++i)
+       if (!PYGLIB_PyUnicode_Check(PySequence_Fast_GET_ITEM(obj, i)))
+           return -1;
+    argv = g_new(gchar *, argc + 1);
+    for (i = 0; i < argc; ++i)
+       argv[i] = g_strdup(PYGLIB_PyUnicode_AsString(PySequence_Fast_GET_ITEM(obj, i)));
+    argv[i] = NULL;
+    g_value_take_boxed(value, argv);
+    return 0;
 }
 
 void
@@ -1199,6 +1844,6 @@ pygobject_type_register_types(PyObject *d)
     PyGObjectDoc_Type.tp_descr_get = (descrgetfunc)object_doc_descr_get;
 
     pyg_register_gtype_custom(G_TYPE_STRV,
-                             pyg_strv_from_gvalue,
-                             pyg_strv_to_gvalue);
+                             _pyg_strv_from_gvalue,
+                             _pyg_strv_to_gvalue);
 }
diff --git a/gi/_gobject/pygtype.h b/gi/_gobject/pygtype.h
new file mode 100644 (file)
index 0000000..2f9e7ad
--- /dev/null
@@ -0,0 +1,28 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygtk- Python bindings for the GTK toolkit.
+ * Copyright (C) 1998-2003  James Henstridge
+ *               2004-2008  Johan Dahlin
+ *   pyginterface.c: wrapper for the gobject library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGOBJECT_TYPE_H__ 
+#define __PYGOBJECT_TYPE_H__
+
+void pygobject_type_register_types(PyObject *d);
+
+#endif /* __PYGOBJECT_TYPE_H__ */
diff --git a/gi/_propertyhelper.py b/gi/_propertyhelper.py
deleted file mode 100644 (file)
index e81de2e..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2007 Johan Dahlin
-#
-#   gi/_propertyhelper.py: GObject property wrapper/helper
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
-
-import sys
-import traceback
-
-from . import _gi
-
-from ._constants import \
-    TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, \
-    TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, \
-    TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, TYPE_FLAGS, \
-    TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, \
-    TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
-    TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV, TYPE_VARIANT
-
-G_MAXFLOAT = _gi.G_MAXFLOAT
-G_MAXDOUBLE = _gi.G_MAXDOUBLE
-G_MININT = _gi.G_MININT
-G_MAXINT = _gi.G_MAXINT
-G_MAXUINT = _gi.G_MAXUINT
-G_MINLONG = _gi.G_MINLONG
-G_MAXLONG = _gi.G_MAXLONG
-G_MAXULONG = _gi.G_MAXULONG
-
-if sys.version_info >= (3, 0):
-    _basestring = str
-    _long = int
-else:
-    _basestring = basestring
-    _long = long
-
-
-class Property(object):
-    """Creates a new Property which when used in conjunction with
-    GObject subclass will create a Python property accessor for the
-    GObject ParamSpec.
-
-    :param callable getter:
-        getter to get the value of the property
-    :param callable setter:
-        setter to set the value of the property
-    :param type type:
-        type of property
-    :param default:
-        default value, must match the property type.
-    :param str nick:
-        short description
-    :param str blurb:
-        long description
-    :param GObject.ParamFlags flags:
-        parameter flags
-    :keyword minimum:
-        minimum allowed value (int, float, long only)
-    :keyword maximum:
-        maximum allowed value (int, float, long only)
-
-    .. code-block:: python
-
-         class MyObject(GObject.Object):
-             prop = GObject.Property(type=str)
-
-         obj = MyObject()
-         obj.prop = 'value'
-
-         obj.prop  # now is 'value'
-
-    The API is similar to the builtin :py:func:`property`:
-
-    .. code-block:: python
-
-        class AnotherObject(GObject.Object):
-            value = 0
-
-            @GObject.Property
-            def prop(self):
-                'Read only property.'
-                return 1
-
-            @GObject.Property(type=int)
-            def propInt(self):
-                'Read-write integer property.'
-                return self.value
-
-            @propInt.setter
-            def propInt(self, value):
-                self.value = value
-    """
-    _type_from_pytype_lookup = {
-        # Put long_ first in case long_ and int are the same so int clobbers long_
-        _long: TYPE_LONG,
-        int: TYPE_INT,
-        bool: TYPE_BOOLEAN,
-        float: TYPE_DOUBLE,
-        str: TYPE_STRING,
-        object: TYPE_PYOBJECT,
-    }
-
-    _min_value_lookup = {
-        TYPE_UINT: 0,
-        TYPE_ULONG: 0,
-        TYPE_UINT64: 0,
-        # Remember that G_MINFLOAT and G_MINDOUBLE are something different.
-        TYPE_FLOAT: -G_MAXFLOAT,
-        TYPE_DOUBLE: -G_MAXDOUBLE,
-        TYPE_INT: G_MININT,
-        TYPE_LONG: G_MINLONG,
-        TYPE_INT64: -2 ** 63,
-    }
-
-    _max_value_lookup = {
-        TYPE_UINT: G_MAXUINT,
-        TYPE_ULONG: G_MAXULONG,
-        TYPE_INT64: 2 ** 63 - 1,
-        TYPE_UINT64: 2 ** 64 - 1,
-        TYPE_FLOAT: G_MAXFLOAT,
-        TYPE_DOUBLE: G_MAXDOUBLE,
-        TYPE_INT: G_MAXINT,
-        TYPE_LONG: G_MAXLONG,
-    }
-
-    _default_lookup = {
-        TYPE_INT: 0,
-        TYPE_UINT: 0,
-        TYPE_LONG: 0,
-        TYPE_ULONG: 0,
-        TYPE_INT64: 0,
-        TYPE_UINT64: 0,
-        TYPE_STRING: '',
-        TYPE_FLOAT: 0.0,
-        TYPE_DOUBLE: 0.0,
-    }
-
-    class __metaclass__(type):
-        def __repr__(self):
-            return "<class 'GObject.Property'>"
-
-    def __init__(self, getter=None, setter=None, type=None, default=None,
-                 nick='', blurb='', flags=_gi.PARAM_READWRITE,
-                 minimum=None, maximum=None):
-        self.name = None
-
-        if type is None:
-            type = object
-        self.type = self._type_from_python(type)
-        self.default = self._get_default(default)
-        self._check_default()
-
-        if not isinstance(nick, _basestring):
-            raise TypeError("nick must be a string")
-        self.nick = nick
-
-        if not isinstance(blurb, _basestring):
-            raise TypeError("blurb must be a string")
-        self.blurb = blurb
-        # Always clobber __doc__ with blurb even if blurb is empty because
-        # we don't want the lengthy Property class documentation showing up
-        # on instances.
-        self.__doc__ = blurb
-        self.flags = flags
-
-        # Call after setting blurb for potential __doc__ usage.
-        if getter and not setter:
-            setter = self._readonly_setter
-        elif setter and not getter:
-            getter = self._writeonly_getter
-        elif not setter and not getter:
-            getter = self._default_getter
-            setter = self._default_setter
-        self.getter(getter)
-        # do not call self.setter() here, as this defines the property name
-        # already
-        self.fset = setter
-
-        if minimum is not None:
-            if minimum < self._get_minimum():
-                raise TypeError(
-                    "Minimum for type %s cannot be lower than %d" %
-                    (self.type, self._get_minimum()))
-        else:
-            minimum = self._get_minimum()
-        self.minimum = minimum
-        if maximum is not None:
-            if maximum > self._get_maximum():
-                raise TypeError(
-                    "Maximum for type %s cannot be higher than %d" %
-                    (self.type, self._get_maximum()))
-        else:
-            maximum = self._get_maximum()
-        self.maximum = maximum
-
-        self._exc = None
-
-    def __repr__(self):
-        return '<GObject Property %s (%s)>' % (
-            self.name or '(uninitialized)',
-            _gi.type_name(self.type))
-
-    def __get__(self, instance, klass):
-        if instance is None:
-            return self
-
-        self._exc = None
-
-        # Simply return the result of fget directly, no need to go through GObject.
-        # See: https://bugzilla.gnome.org/show_bug.cgi?id=723872
-        # We catch and print any exception occurring within the fget for compatibility
-        # prior to the fast path addition from bug 723872, this should eventually
-        # be removed and exceptions raised directly to the caller as in:
-        # https://bugzilla.gnome.org/show_bug.cgi?id=575652
-        try:
-            value = self.fget(instance)
-        except Exception:
-            traceback.print_exc()
-            value = None
-
-        if self._exc:
-            exc = self._exc
-            self._exc = None
-            raise exc
-
-        return value
-
-    def __set__(self, instance, value):
-        if instance is None:
-            raise TypeError
-
-        self._exc = None
-        instance.set_property(self.name, value)
-        if self._exc:
-            exc = self._exc
-            self._exc = None
-            raise exc
-
-    def __call__(self, fget):
-        """Allows application of the getter along with init arguments."""
-        return self.getter(fget)
-
-    def getter(self, fget):
-        """Set the getter function to fget. For use as a decorator."""
-        if fget.__doc__:
-            # Always clobber docstring and blurb with the getter docstring.
-            self.blurb = fget.__doc__
-            self.__doc__ = fget.__doc__
-        self.fget = fget
-        return self
-
-    def setter(self, fset):
-        """Set the setter function to fset. For use as a decorator."""
-        self.fset = fset
-        # with a setter decorator, we must ignore the name of the method in
-        # install_properties, as this does not need to be a valid property name
-        # and does not define the property name. So set the name here.
-        if not self.name:
-            self.name = self.fget.__name__
-        return self
-
-    def _type_from_python(self, type_):
-        if type_ in self._type_from_pytype_lookup:
-            return self._type_from_pytype_lookup[type_]
-        elif (isinstance(type_, type) and
-              issubclass(type_, (_gi.GObject,
-                                 _gi.GEnum,
-                                 _gi.GFlags,
-                                 _gi.GBoxed,
-                                 _gi.GInterface))):
-            return type_.__gtype__
-        elif type_ in (TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
-                       TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
-                       TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
-                       TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
-                       TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
-                       TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV, TYPE_VARIANT):
-            return type_
-        else:
-            raise TypeError("Unsupported type: %r" % (type_,))
-
-    def _get_default(self, default):
-        if default is not None:
-            return default
-        return self._default_lookup.get(self.type, None)
-
-    def _check_default(self):
-        ptype = self.type
-        default = self.default
-        if (ptype == TYPE_BOOLEAN and (default not in (True, False))):
-            raise TypeError(
-                "default must be True or False, not %r" % (default,))
-        elif ptype == TYPE_PYOBJECT:
-            if default is not None:
-                raise TypeError("object types does not have default values")
-        elif ptype == TYPE_GTYPE:
-            if default is not None:
-                raise TypeError("GType types does not have default values")
-        elif _gi.type_is_a(ptype, TYPE_ENUM):
-            if default is None:
-                raise TypeError("enum properties needs a default value")
-            elif not _gi.type_is_a(default, ptype):
-                raise TypeError("enum value %s must be an instance of %r" %
-                                (default, ptype))
-        elif _gi.type_is_a(ptype, TYPE_FLAGS):
-            if not _gi.type_is_a(default, ptype):
-                raise TypeError("flags value %s must be an instance of %r" %
-                                (default, ptype))
-        elif _gi.type_is_a(ptype, TYPE_STRV) and default is not None:
-            if not isinstance(default, list):
-                raise TypeError("Strv value %s must be a list" % repr(default))
-            for val in default:
-                if type(val) not in (str, bytes):
-                    raise TypeError("Strv value %s must contain only strings" % str(default))
-        elif _gi.type_is_a(ptype, TYPE_VARIANT) and default is not None:
-            if not hasattr(default, '__gtype__') or not _gi.type_is_a(default, TYPE_VARIANT):
-                raise TypeError("variant value %s must be an instance of %r" %
-                                (default, ptype))
-
-    def _get_minimum(self):
-        return self._min_value_lookup.get(self.type, None)
-
-    def _get_maximum(self):
-        return self._max_value_lookup.get(self.type, None)
-
-    #
-    # Getter and Setter
-    #
-
-    def _default_setter(self, instance, value):
-        setattr(instance, '_property_helper_' + self.name, value)
-
-    def _default_getter(self, instance):
-        return getattr(instance, '_property_helper_' + self.name, self.default)
-
-    def _readonly_setter(self, instance, value):
-        self._exc = TypeError("%s property of %s is read-only" % (
-            self.name, type(instance).__name__))
-
-    def _writeonly_getter(self, instance):
-        self._exc = TypeError("%s property of %s is write-only" % (
-            self.name, type(instance).__name__))
-
-    #
-    # Public API
-    #
-
-    def get_pspec_args(self):
-        ptype = self.type
-        if ptype in (TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
-                     TYPE_INT64, TYPE_UINT64, TYPE_FLOAT, TYPE_DOUBLE):
-            args = self.minimum, self.maximum, self.default
-        elif (ptype == TYPE_STRING or ptype == TYPE_BOOLEAN or
-              ptype.is_a(TYPE_ENUM) or ptype.is_a(TYPE_FLAGS) or
-              ptype.is_a(TYPE_VARIANT)):
-            args = (self.default,)
-        elif ptype in (TYPE_PYOBJECT, TYPE_GTYPE):
-            args = ()
-        elif ptype.is_a(TYPE_OBJECT) or ptype.is_a(TYPE_BOXED):
-            args = ()
-        else:
-            raise NotImplementedError(ptype)
-
-        return (self.type, self.nick, self.blurb) + args + (self.flags,)
-
-
-def install_properties(cls):
-    """
-    Scans the given class for instances of Property and merges them
-    into the classes __gproperties__ dict if it exists or adds it if not.
-    """
-    gproperties = cls.__dict__.get('__gproperties__', {})
-
-    props = []
-    for name, prop in cls.__dict__.items():
-        if isinstance(prop, Property):  # not same as the built-in
-            # if a property was defined with a decorator, it may already have
-            # a name; if it was defined with an assignment (prop = Property(...))
-            # we set the property's name to the member name
-            if not prop.name:
-                prop.name = name
-            # we will encounter the same property multiple times in case of
-            # custom setter methods
-            if prop.name in gproperties:
-                if gproperties[prop.name] == prop.get_pspec_args():
-                    continue
-                raise ValueError('Property %s was already found in __gproperties__' % prop.name)
-            gproperties[prop.name] = prop.get_pspec_args()
-            props.append(prop)
-
-    if not props:
-        return
-
-    cls.__gproperties__ = gproperties
-
-    if 'do_get_property' in cls.__dict__ or 'do_set_property' in cls.__dict__:
-        for prop in props:
-            if prop.fget != prop._default_getter or prop.fset != prop._default_setter:
-                raise TypeError(
-                    "GObject subclass %r defines do_get/set_property"
-                    " and it also uses a property with a custom setter"
-                    " or getter. This is not allowed" %
-                    (cls.__name__,))
-
-    def obj_get_property(self, pspec):
-        name = pspec.name.replace('-', '_')
-        return getattr(self, name, None)
-    cls.do_get_property = obj_get_property
-
-    def obj_set_property(self, pspec, value):
-        name = pspec.name.replace('-', '_')
-        prop = getattr(cls, name, None)
-        if prop:
-            prop.fset(self, value)
-    cls.do_set_property = obj_set_property
diff --git a/gi/_signalhelper.py b/gi/_signalhelper.py
deleted file mode 100644 (file)
index 29d36ea..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2012 Simon Feltman
-#
-#   gi/_signalhelper.py: GObject signal binding decorator object
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
-
-import sys
-
-from . import _gi
-
-# Callable went away in python 3.0 and came back in 3.2.
-# Use versioning to figure out when to define it, otherwise we have to deal with
-# the complexity of using __builtin__ or builtin between python versions to
-# check if callable exists which PyFlakes will also complain about.
-if (3, 0) <= sys.version_info < (3, 2):
-    def callable(fn):
-        return hasattr(fn, '__call__')
-
-
-class Signal(str):
-    """Object which gives a nice API for creating and binding signals.
-
-    :param name:
-        Name of signal or callable closure when used as a decorator.
-    :type name: str or callable
-    :param callable func:
-        Callable closure method.
-    :param GObject.SignalFlags flags:
-        Flags specifying when to run closure.
-    :param type return_type:
-        Return type of the Signal.
-    :param list arg_types:
-        List of argument types specifying the signals function signature
-    :param str doc:
-        Documentation of signal object.
-    :param callable accumulator:
-        Accumulator method with the signature:
-        func(ihint, return_accu, handler_return, accu_data) -> boolean
-    :param object accu_data:
-        User data passed to the accumulator.
-
-    :Example:
-
-    .. code-block:: python
-
-        class Spam(GObject.Object):
-            velocity = 0
-
-            @GObject.Signal
-            def pushed(self):
-                self.velocity += 1
-
-            @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
-            def pulled(self):
-                self.velocity -= 1
-
-            stomped = GObject.Signal('stomped', arg_types=(int,))
-
-            @GObject.Signal
-            def annotated_signal(self, a:int, b:str):
-                "Python3 annotation support for parameter types.
-
-        def on_pushed(obj):
-            print(obj)
-
-        spam = Spam()
-        spam.pushed.connect(on_pushed)
-        spam.pushed.emit()
-    """
-    class BoundSignal(str):
-        """
-        Temporary binding object which can be used for connecting signals
-        without specifying the signal name string to connect.
-        """
-        def __new__(cls, name, *args, **kargs):
-            return str.__new__(cls, name)
-
-        def __init__(self, signal, gobj):
-            str.__init__(self)
-            self.signal = signal
-            self.gobj = gobj
-
-        def __repr__(self):
-            return 'BoundSignal("%s")' % self
-
-        def __call__(self, *args, **kargs):
-            """Call the signals closure."""
-            return self.signal.func(self.gobj, *args, **kargs)
-
-        def connect(self, callback, *args, **kargs):
-            """Same as GObject.Object.connect except there is no need to specify
-            the signal name."""
-            return self.gobj.connect(self, callback, *args, **kargs)
-
-        def connect_detailed(self, callback, detail, *args, **kargs):
-            """Same as GObject.Object.connect except there is no need to specify
-            the signal name. In addition concats "::<detail>" to the signal name
-            when connecting; for use with notifications like "notify" when a property
-            changes.
-            """
-            return self.gobj.connect(self + '::' + detail, callback, *args, **kargs)
-
-        def disconnect(self, handler_id):
-            """Same as GObject.Object.disconnect."""
-            self.instance.disconnect(handler_id)
-
-        def emit(self, *args, **kargs):
-            """Same as GObject.Object.emit except there is no need to specify
-            the signal name."""
-            return self.gobj.emit(str(self), *args, **kargs)
-
-    def __new__(cls, name='', *args, **kargs):
-        if callable(name):
-            name = name.__name__
-        return str.__new__(cls, name)
-
-    def __init__(self, name='', func=None, flags=_gi.SIGNAL_RUN_FIRST,
-                 return_type=None, arg_types=None, doc='', accumulator=None, accu_data=None):
-        if func and not name:
-            name = func.__name__
-        elif callable(name):
-            func = name
-            name = func.__name__
-        if func and not doc:
-            doc = func.__doc__
-
-        str.__init__(self)
-
-        if func and not (return_type or arg_types):
-            return_type, arg_types = get_signal_annotations(func)
-        if arg_types is None:
-            arg_types = tuple()
-
-        self.func = func
-        self.flags = flags
-        self.return_type = return_type
-        self.arg_types = arg_types
-        self.__doc__ = doc
-        self.accumulator = accumulator
-        self.accu_data = accu_data
-
-    def __get__(self, instance, owner=None):
-        """Returns a BoundSignal when accessed on an object instance."""
-        if instance is None:
-            return self
-        return self.BoundSignal(self, instance)
-
-    def __call__(self, obj, *args, **kargs):
-        """Allows for instantiated Signals to be used as a decorator or calling
-        of the underlying signal method."""
-
-        # If obj is a GObject, than we call this signal as a closure otherwise
-        # it is used as a re-application of a decorator.
-        if isinstance(obj, _gi.GObject):
-            self.func(obj, *args, **kargs)
-        else:
-            # If self is already an allocated name, use it otherwise create a new named
-            # signal using the closure name as the name.
-            if str(self):
-                name = str(self)
-            else:
-                name = obj.__name__
-            # Return a new value of this type since it is based on an immutable string.
-            return type(self)(name=name, func=obj, flags=self.flags,
-                              return_type=self.return_type, arg_types=self.arg_types,
-                              doc=self.__doc__, accumulator=self.accumulator, accu_data=self.accu_data)
-
-    def copy(self, newName=None):
-        """Returns a renamed copy of the Signal."""
-        if newName is None:
-            newName = self.name
-        return type(self)(name=newName, func=self.func, flags=self.flags,
-                          return_type=self.return_type, arg_types=self.arg_types,
-                          doc=self.__doc__, accumulator=self.accumulator, accu_data=self.accu_data)
-
-    def get_signal_args(self):
-        """Returns a tuple of: (flags, return_type, arg_types, accumulator, accu_data)"""
-        return (self.flags, self.return_type, self.arg_types, self.accumulator, self.accu_data)
-
-
-class SignalOverride(Signal):
-    """Specialized sub-class of Signal which can be used as a decorator for overriding
-    existing signals on GObjects.
-
-    :Example:
-
-    .. code-block:: python
-
-        class MyWidget(Gtk.Widget):
-            @GObject.SignalOverride
-            def configure_event(self):
-                pass
-    """
-    def get_signal_args(self):
-        """Returns the string 'override'."""
-        return 'override'
-
-
-def get_signal_annotations(func):
-    """Attempt pulling python 3 function annotations off of 'func' for
-    use as a signals type information. Returns an ordered nested tuple
-    of (return_type, (arg_type1, arg_type2, ...)). If the given function
-    does not have annotations then (None, tuple()) is returned.
-    """
-    arg_types = tuple()
-    return_type = None
-
-    if hasattr(func, '__annotations__'):
-        # import inspect only when needed because it takes ~10 msec to load
-        import inspect
-        spec = inspect.getfullargspec(func)
-        arg_types = tuple(spec.annotations[arg] for arg in spec.args
-                          if arg in spec.annotations)
-        if 'return' in spec.annotations:
-            return_type = spec.annotations['return']
-
-    return return_type, arg_types
-
-
-def install_signals(cls):
-    """Adds Signal instances on a GObject derived class into the '__gsignals__'
-    dictionary to be picked up and registered as real GObject signals.
-    """
-    gsignals = cls.__dict__.get('__gsignals__', {})
-    newsignals = {}
-    for name, signal in cls.__dict__.items():
-        if isinstance(signal, Signal):
-            signalName = str(signal)
-            # Fixup a signal which is unnamed by using the class variable name.
-            # Since Signal is based on string which immutable,
-            # we must copy and replace the class variable.
-            if not signalName:
-                signalName = name
-                signal = signal.copy(name)
-                setattr(cls, name, signal)
-            if signalName in gsignals:
-                raise ValueError('Signal "%s" has already been registered.' % name)
-            newsignals[signalName] = signal
-            gsignals[signalName] = signal.get_signal_args()
-
-    cls.__gsignals__ = gsignals
-
-    # Setup signal closures by adding the specially named
-    # method to the class in the form of "do_<signal_name>".
-    for name, signal in newsignals.items():
-        if signal.func is not None:
-            funcName = 'do_' + name.replace('-', '_')
-            if not hasattr(cls, funcName):
-                setattr(cls, funcName, signal.func)
diff --git a/gi/docstring.py b/gi/docstring.py
deleted file mode 100644 (file)
index fec5f63..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
-#
-#   docstring.py: documentation string generator for gi.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-from ._gi import \
-    VFuncInfo, \
-    FunctionInfo, \
-    CallableInfo, \
-    ObjectInfo, \
-    StructInfo, \
-    Direction, \
-    TypeTag
-
-
-#: Module storage for currently registered doc string generator function.
-_generate_doc_string_func = None
-
-
-def set_doc_string_generator(func):
-    """Set doc string generator function
-
-    :param callable func:
-        Callable which takes a GIInfoStruct and returns documentation for it.
-    """
-    global _generate_doc_string_func
-    _generate_doc_string_func = func
-
-
-def get_doc_string_generator():
-    """Returns the currently registered doc string generator."""
-    return _generate_doc_string_func
-
-
-def generate_doc_string(info):
-    """Generate a doc string given a GIInfoStruct.
-
-    :param gi.types.BaseInfo info:
-        GI info instance to generate documentation for.
-    :returns:
-        Generated documentation as a string.
-    :rtype: str
-
-    This passes the info struct to the currently registered doc string
-    generator and returns the result.
-    """
-    return _generate_doc_string_func(info)
-
-
-_type_tag_to_py_type = {TypeTag.BOOLEAN: bool,
-                        TypeTag.INT8: int,
-                        TypeTag.UINT8: int,
-                        TypeTag.INT16: int,
-                        TypeTag.UINT16: int,
-                        TypeTag.INT32: int,
-                        TypeTag.UINT32: int,
-                        TypeTag.INT64: int,
-                        TypeTag.UINT64: int,
-                        TypeTag.FLOAT: float,
-                        TypeTag.DOUBLE: float,
-                        TypeTag.GLIST: list,
-                        TypeTag.GSLIST: list,
-                        TypeTag.ARRAY: list,
-                        TypeTag.GHASH: dict,
-                        TypeTag.UTF8: str,
-                        TypeTag.FILENAME: str,
-                        TypeTag.UNICHAR: str,
-                        TypeTag.INTERFACE: None,
-                        TypeTag.GTYPE: None,
-                        TypeTag.ERROR: None,
-                        TypeTag.VOID: None,
-                        }
-
-
-def _get_pytype_hint(gi_type):
-    type_tag = gi_type.get_tag()
-    py_type = _type_tag_to_py_type.get(type_tag, None)
-
-    if py_type and hasattr(py_type, '__name__'):
-        return py_type.__name__
-    elif type_tag == TypeTag.INTERFACE:
-        iface = gi_type.get_interface()
-
-        info_name = iface.get_name()
-        if not info_name:
-            return gi_type.get_tag_as_string()
-
-        return '%s.%s' % (iface.get_namespace(), info_name)
-
-    return gi_type.get_tag_as_string()
-
-
-def _generate_callable_info_doc(info):
-    in_args_strs = []
-    if isinstance(info, VFuncInfo):
-        in_args_strs = ['self']
-    elif isinstance(info, FunctionInfo):
-        if info.is_method():
-            in_args_strs = ['self']
-
-    args = info.get_arguments()
-    hint_blacklist = ('void',)
-
-    # Build lists of indices prior to adding the docs because it is possible
-    # the index retrieved comes before input arguments being used.
-    ignore_indices = set()
-    user_data_indices = set()
-    for arg in args:
-        ignore_indices.add(arg.get_destroy())
-        ignore_indices.add(arg.get_type().get_array_length())
-        user_data_indices.add(arg.get_closure())
-
-    # Build input argument strings
-    for i, arg in enumerate(args):
-        if arg.get_direction() == Direction.OUT:
-            continue  # skip exclusively output args
-        if i in ignore_indices:
-            continue
-        argstr = arg.get_name()
-        hint = _get_pytype_hint(arg.get_type())
-        if hint not in hint_blacklist:
-            argstr += ':' + hint
-        if arg.may_be_null() or i in user_data_indices:
-            # allow-none or user_data from a closure
-            argstr += '=None'
-        elif arg.is_optional():
-            argstr += '=<optional>'
-        in_args_strs.append(argstr)
-    in_args_str = ', '.join(in_args_strs)
-
-    # Build return + output argument strings
-    out_args_strs = []
-    return_hint = _get_pytype_hint(info.get_return_type())
-    if not info.skip_return() and return_hint and return_hint not in hint_blacklist:
-        argstr = return_hint
-        if info.may_return_null():
-            argstr += ' or None'
-        out_args_strs.append(argstr)
-
-    for i, arg in enumerate(args):
-        if arg.get_direction() == Direction.IN:
-            continue  # skip exclusively input args
-        if i in ignore_indices:
-            continue
-        argstr = arg.get_name()
-        hint = _get_pytype_hint(arg.get_type())
-        if hint not in hint_blacklist:
-            argstr += ':' + hint
-        out_args_strs.append(argstr)
-
-    if out_args_strs:
-        return '%s(%s) -> %s' % (info.__name__, in_args_str, ', '.join(out_args_strs))
-    else:
-        return '%s(%s)' % (info.__name__, in_args_str)
-
-
-def _generate_class_info_doc(info):
-    header = '\n:Constructors:\n\n::\n\n'  # start with \n to avoid auto indent of other lines
-    doc = ''
-
-    if isinstance(info, StructInfo):
-        # Don't show default constructor for disguised (0 length) structs
-        if info.get_size() > 0:
-            doc += '    ' + info.get_name() + '()\n'
-    else:
-        doc += '    ' + info.get_name() + '(**properties)\n'
-
-    for method_info in info.get_methods():
-        if method_info.is_constructor():
-            doc += '    ' + _generate_callable_info_doc(method_info) + '\n'
-
-    if doc:
-        return header + doc
-    else:
-        return ''
-
-
-def _generate_doc_dispatch(info):
-    if isinstance(info, (ObjectInfo, StructInfo)):
-        return _generate_class_info_doc(info)
-
-    elif isinstance(info, CallableInfo):
-        return _generate_callable_info_doc(info)
-
-    return ''
-
-
-set_doc_string_generator(_generate_doc_dispatch)
index e14b4f6..6ccd87f 100644 (file)
  * USA
  */
 
-#include <Python.h>
-#include <glib-object.h>
-
-#include "config.h"
-#include "pyglib.h"
-#include "pyginterface.h"
-#include "pygi-repository.h"
-#include "pyglib.h"
-#include "pygtype.h"
-#include "pygenum.h"
-#include "pygboxed.h"
-#include "pygflags.h"
-#include "pygi-error.h"
-#include "pygi-foreign.h"
-#include "pygi-resulttuple.h"
-#include "pygi-source.h"
-#include "pygi-ccallback.h"
-#include "pygi-closure.h"
-#include "pygi-type.h"
-#include "pygi-boxed.h"
-#include "pygi-info.h"
-#include "pygi-struct.h"
-#include "pygobject-object.h"
-#include "pygoptioncontext.h"
-#include "pygoptiongroup.h"
-#include "pygspawn.h"
-#include "gobjectmodule.h"
-#include "pygparamspec.h"
-#include "pygpointer.h"
+#include "pygi-private.h"
+#include "pygi.h"
 
+#include <pygobject.h>
 #include <pyglib-python-compat.h>
 
-PyObject *PyGIWarning;
-PyObject *PyGIDeprecationWarning;
-PyObject *_PyGIDefaultArgPlaceholder;
-
-
-/* Defined by PYGLIB_MODULE_START */
-extern PyObject *pyglib__gobject_module_create (void);
-
-/* Returns a new flag/enum type or %NULL */
-static PyObject *
-flags_enum_from_gtype (GType g_type,
-                       PyObject * (add_func) (PyObject *, const char *,
-                                              const char *, GType))
-{
-    PyObject *new_type;
-    GIRepository *repository;
-    GIBaseInfo *info;
-    const gchar *type_name;
-
-    repository = g_irepository_get_default ();
-    info = g_irepository_find_by_gtype (repository, g_type);
-    if (info != NULL) {
-        type_name = g_base_info_get_name (info);
-        new_type = add_func (NULL, type_name, NULL, g_type);
-        g_base_info_unref (info);
-    } else {
-        type_name = g_type_name (g_type);
-        new_type = add_func (NULL, type_name, NULL, g_type);
-    }
-
-    return new_type;
-}
-
-
 static PyObject *
 _wrap_pyg_enum_add (PyObject *self,
                     PyObject *args,
@@ -107,7 +47,7 @@ _wrap_pyg_enum_add (PyObject *self,
         return NULL;
     }
 
-    return flags_enum_from_gtype (g_type, pyg_enum_add);
+    return pyg_enum_add (NULL, g_type_name (g_type), NULL, g_type);
 }
 
 static PyObject *
@@ -121,9 +61,7 @@ _wrap_pyg_enum_register_new_gtype_and_add (PyObject *self,
     gint n_values;
     GEnumValue *g_enum_values;
     int i;
-    const gchar *namespace;
     const gchar *type_name;
-    gchar *full_name;
     GType g_type;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs,
@@ -140,10 +78,6 @@ _wrap_pyg_enum_register_new_gtype_and_add (PyObject *self,
 
     info = (GIEnumInfo *)py_info->info;
     n_values = g_enum_info_get_n_values (info);
-
-    /* The new memory is zero filled which fulfills the registration
-     * function requirement that the last item is zeroed out as a terminator.
-     */
     g_enum_values = g_new0 (GEnumValue, n_values + 1);
 
     for (i = 0; i < n_values; i++) {
@@ -170,40 +104,15 @@ _wrap_pyg_enum_register_new_gtype_and_add (PyObject *self,
         g_base_info_unref ((GIBaseInfo *) value_info);
     }
 
-    /* Obfuscate the full_name by prefixing it with "Py" to avoid conflicts
-     * with real GTypes. See: https://bugzilla.gnome.org/show_bug.cgi?id=692515
-     */
-    namespace = g_base_info_get_namespace ((GIBaseInfo *) info);
-    type_name = g_base_info_get_name ((GIBaseInfo *) info);
-    full_name = g_strconcat ("Py", namespace, type_name, NULL);
-
-    /* If enum registration fails, free all the memory allocated
-     * for the values array. This needs to leak when successful
-     * as GObject keeps a reference to the data as specified in the docs.
-     */
-    g_type = g_enum_register_static (full_name, g_enum_values);
-    if (g_type == G_TYPE_INVALID) {
-        for (i = 0; i < n_values; i++) {
-            GEnumValue *enum_value = &g_enum_values[i];
-
-            /* Only free value_name if it is different from value_nick to avoid
-             * a double free. The pointer might have been is re-used in the case
-             * c_identifier was NULL in the above loop.
-             */
-            if (enum_value->value_name != enum_value->value_nick)
-                g_free ((gchar *) enum_value->value_name);
-            g_free ((gchar *) enum_value->value_nick);
-        }
+    g_enum_values[n_values].value = 0;
+    g_enum_values[n_values].value_nick = NULL;
+    g_enum_values[n_values].value_name = NULL;
 
-        PyErr_Format (PyExc_RuntimeError, "Unable to register enum '%s'", full_name);
-
-        g_free (g_enum_values);
-        g_free (full_name);
-        return NULL;
-    }
+    type_name = g_base_info_get_name ((GIBaseInfo *) info);
+    type_name = g_strdup (type_name);
+    g_type = g_enum_register_static (type_name, g_enum_values);
 
-    g_free (full_name);
-    return pyg_enum_add (NULL, type_name, NULL, g_type);
+    return pyg_enum_add (NULL, g_type_name (g_type), NULL, g_type);
 }
 
 static PyObject *
@@ -226,7 +135,7 @@ _wrap_pyg_flags_add (PyObject *self,
         return NULL;
     }
 
-    return flags_enum_from_gtype (g_type, pyg_flags_add);
+    return pyg_flags_add (NULL, g_type_name (g_type), NULL, g_type);
 }
 
 static PyObject *
@@ -240,9 +149,7 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
     gint n_values;
     GFlagsValue *g_flags_values;
     int i;
-    const gchar *namespace;
     const gchar *type_name;
-    gchar *full_name;
     GType g_type;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs,
@@ -259,10 +166,6 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
 
     info = (GIEnumInfo *)py_info->info;
     n_values = g_enum_info_get_n_values (info);
-
-    /* The new memory is zero filled which fulfills the registration
-     * function requirement that the last item is zeroed out as a terminator.
-     */
     g_flags_values = g_new0 (GFlagsValue, n_values + 1);
 
     for (i = 0; i < n_values; i++) {
@@ -289,46 +192,21 @@ _wrap_pyg_flags_register_new_gtype_and_add (PyObject *self,
         g_base_info_unref ((GIBaseInfo *) value_info);
     }
 
-    /* Obfuscate the full_name by prefixing it with "Py" to avoid conflicts
-     * with real GTypes. See: https://bugzilla.gnome.org/show_bug.cgi?id=692515
-     */
-    namespace = g_base_info_get_namespace ((GIBaseInfo *) info);
-    type_name = g_base_info_get_name ((GIBaseInfo *) info);
-    full_name = g_strconcat ("Py", namespace, type_name, NULL);
-
-    /* If enum registration fails, free all the memory allocated
-     * for the values array. This needs to leak when successful
-     * as GObject keeps a reference to the data as specified in the docs.
-     */
-    g_type = g_flags_register_static (full_name, g_flags_values);
-    if (g_type == G_TYPE_INVALID) {
-        for (i = 0; i < n_values; i++) {
-            GFlagsValue *flags_value = &g_flags_values[i];
-
-            /* Only free value_name if it is different from value_nick to avoid
-             * a double free. The pointer might have been is re-used in the case
-             * c_identifier was NULL in the above loop.
-             */
-            if (flags_value->value_name != flags_value->value_nick)
-                g_free ((gchar *) flags_value->value_name);
-            g_free ((gchar *) flags_value->value_nick);
-        }
+    g_flags_values[n_values].value = 0;
+    g_flags_values[n_values].value_nick = NULL;
+    g_flags_values[n_values].value_name = NULL;
 
-        PyErr_Format (PyExc_RuntimeError, "Unable to register flags '%s'", full_name);
-
-        g_free (g_flags_values);
-        g_free (full_name);
-        return NULL;
-    }
+    type_name = g_base_info_get_name ((GIBaseInfo *) info);
+    type_name = g_strdup (type_name);
+    g_type = g_flags_register_static (type_name, g_flags_values);
 
-    g_free (full_name);
-    return pyg_flags_add (NULL, type_name, NULL, g_type);
+    return pyg_flags_add (NULL, g_type_name (g_type), NULL, g_type);
 }
 
 static void
 initialize_interface (GTypeInterface *iface, PyTypeObject *pytype)
 {
-    /* pygobject prints a warning if interface_init is NULL */
+    // pygobject prints a warning if interface_init is NULL
 }
 
 static PyObject *
@@ -522,105 +400,59 @@ _wrap_pyg_has_vfunc_implementation (PyObject *self, PyObject *args)
 #endif
 
 static PyObject *
-_wrap_pyg_variant_type_from_string (PyObject *self, PyObject *args)
+_wrap_pyg_variant_new_tuple (PyObject *self, PyObject *args)
 {
-    char *type_string;
-    PyObject *py_type;
+    PyObject *py_values;
+    GVariant **values = NULL;
+    GVariant *variant = NULL;
     PyObject *py_variant = NULL;
+    PyObject *py_type;
+    gssize i;
 
-    if (!PyArg_ParseTuple (args, "s:variant_type_from_string",
-                           &type_string)) {
+    if (!PyArg_ParseTuple (args, "O!:variant_new_tuple",
+                           &PyTuple_Type, &py_values)) {
         return NULL;
     }
 
-    py_type = _pygi_type_import_by_name ("GLib", "VariantType");
+    py_type = _pygi_type_import_by_name ("GLib", "Variant");
+
+    values = g_newa (GVariant*, PyTuple_Size (py_values));
+
+    for (i = 0; i < PyTuple_Size (py_values); i++) {
+        PyObject *value = PyTuple_GET_ITEM (py_values, i);
+
+        if (!PyObject_IsInstance (value, py_type)) {
+            PyErr_Format (PyExc_TypeError, "argument %" G_GSSIZE_FORMAT " is not a GLib.Variant", i);
+            return NULL;
+        }
+
+        values[i] = (GVariant *) ( (PyGPointer *) value)->pointer;
+    }
 
-    /* Pass the string directly and force a boxed copy. This works because
-     * GVariantType is just a char pointer. */
-    py_variant = _pygi_boxed_new ( (PyTypeObject *) py_type, type_string,
-                                   TRUE, /* copy_boxed */
-                                   0);   /* slice_allocated */
+    variant = g_variant_new_tuple (values, PyTuple_Size (py_values));
+
+    py_variant = _pygi_struct_new ( (PyTypeObject *) py_type, variant, FALSE);
 
     return py_variant;
 }
 
 static PyObject *
-_wrap_pyg_source_new (PyObject *self, PyObject *args)
+_wrap_pyg_variant_type_from_string (PyObject *self, PyObject *args)
 {
-    return pyg_source_new ();
-}
-
-#define CHUNK_SIZE 8192
+    char *type_string;
+    PyObject *py_type;
+    PyObject *py_variant = NULL;
 
-static PyObject*
-pyg_channel_read(PyObject* self, PyObject *args, PyObject *kwargs)
-{
-    int max_count = -1;
-    PyObject *py_iochannel, *ret_obj = NULL;
-    gsize total_read = 0;
-    GError* error = NULL;
-    GIOStatus status = G_IO_STATUS_NORMAL;
-    GIOChannel *iochannel = NULL;
-
-    if (!PyArg_ParseTuple (args, "Oi:pyg_channel_read", &py_iochannel, &max_count)) {
-        return NULL;
-    }
-    if (!pyg_boxed_check (py_iochannel, G_TYPE_IO_CHANNEL)) {
-        PyErr_SetString(PyExc_TypeError, "first argument is not a GLib.IOChannel");
+    if (!PyArg_ParseTuple (args, "s:variant_type_from_string",
+                           &type_string)) {
         return NULL;
     }
-       
-    if (max_count == 0)
-        return PYGLIB_PyBytes_FromString("");
-
-    iochannel = pyg_boxed_get (py_iochannel, GIOChannel);
-
-    while (status == G_IO_STATUS_NORMAL
-          && (max_count == -1 || total_read < (gsize)max_count)) {
-       gsize single_read;
-       char* buf;
-       gsize buf_size;
-       
-       if (max_count == -1) 
-           buf_size = CHUNK_SIZE;
-       else {
-           buf_size = max_count - total_read;
-           if (buf_size > CHUNK_SIZE)
-               buf_size = CHUNK_SIZE;
-        }
-       
-       if ( ret_obj == NULL ) {
-           ret_obj = PYGLIB_PyBytes_FromStringAndSize((char *)NULL, buf_size);
-           if (ret_obj == NULL)
-               goto failure;
-       }
-       else if (buf_size + total_read > (gsize)PYGLIB_PyBytes_Size(ret_obj)) {
-           if (PYGLIB_PyBytes_Resize(&ret_obj, buf_size + total_read) == -1)
-               goto failure;
-       }
-       
-        buf = PYGLIB_PyBytes_AsString(ret_obj) + total_read;
-
-        Py_BEGIN_ALLOW_THREADS;
-        status = g_io_channel_read_chars (iochannel, buf, buf_size, &single_read, &error);
-        Py_END_ALLOW_THREADS;
-
-        if (pygi_error_check (&error))
-           goto failure;
-       
-       total_read += single_read;
-    }
-       
-    if ( total_read != (gsize)PYGLIB_PyBytes_Size(ret_obj) ) {
-       if (PYGLIB_PyBytes_Resize(&ret_obj, total_read) == -1)
-           goto failure;
-    }
 
-    return ret_obj;
+    py_type = _pygi_type_import_by_name ("GLib", "VariantType");
+
+    py_variant = _pygi_boxed_new ( (PyTypeObject *) py_type, type_string, FALSE);
 
-  failure:
-    Py_XDECREF(ret_obj);
-    return NULL;
+    return py_variant;
 }
 
 static PyMethodDef _gi_functions[] = {
@@ -631,112 +463,37 @@ static PyMethodDef _gi_functions[] = {
 
     { "register_interface_info", (PyCFunction) _wrap_pyg_register_interface_info, METH_VARARGS },
     { "hook_up_vfunc_implementation", (PyCFunction) _wrap_pyg_hook_up_vfunc_implementation, METH_VARARGS },
+    { "variant_new_tuple", (PyCFunction) _wrap_pyg_variant_new_tuple, METH_VARARGS },
     { "variant_type_from_string", (PyCFunction) _wrap_pyg_variant_type_from_string, METH_VARARGS },
-    { "source_new", (PyCFunction) _wrap_pyg_source_new, METH_NOARGS },
-    { "source_set_callback", (PyCFunction) pyg_source_set_callback, METH_VARARGS },
-    { "io_channel_read", (PyCFunction) pyg_channel_read, METH_VARARGS },
-    { "require_foreign", (PyCFunction) pygi_require_foreign, METH_VARARGS | METH_KEYWORDS },
-    { "spawn_async",
-      (PyCFunction)pyglib_spawn_async, METH_VARARGS|METH_KEYWORDS,
-      "spawn_async(argv, envp=None, working_directory=None,\n"
-      "            flags=0, child_setup=None, user_data=None,\n"
-      "            standard_input=None, standard_output=None,\n"
-      "            standard_error=None) -> (pid, stdin, stdout, stderr)\n"
-      "\n"
-      "Execute a child program asynchronously within a glib.MainLoop()\n"
-      "See the reference manual for a complete reference.\n" },
-    { "type_name", pyg_type_name, METH_VARARGS },
-    { "type_from_name", pyg_type_from_name, METH_VARARGS },
-    { "type_is_a", pyg_type_is_a, METH_VARARGS },
-    { "type_register", _wrap_pyg_type_register, METH_VARARGS },
-    { "signal_new", pyg_signal_new, METH_VARARGS },
-    { "list_properties",
-      pyg_object_class_list_properties, METH_VARARGS },
-    { "new",
-      (PyCFunction)pyg_object_new, METH_VARARGS|METH_KEYWORDS },
-    { "signal_accumulator_true_handled",
-      (PyCFunction)pyg_signal_accumulator_true_handled, METH_VARARGS },
-    { "add_emission_hook",
-      (PyCFunction)pyg_add_emission_hook, METH_VARARGS },
-    { "_install_metaclass",
-      (PyCFunction)pyg__install_metaclass, METH_O },
-    { "_gvalue_get",
-      (PyCFunction)pyg__gvalue_get, METH_O },
-    { "_gvalue_set",
-      (PyCFunction)pyg__gvalue_set, METH_VARARGS },
     { NULL, NULL, 0 }
 };
 
 static struct PyGI_API CAPI = {
-  pygi_register_foreign_struct,
+  pygi_type_import_by_g_type_real,
+  pygi_get_property_value_real,
+  pygi_set_property_value_real,
+  pygi_signal_closure_new_real,
+  pygi_register_foreign_struct_real,
 };
 
 PYGLIB_MODULE_START(_gi, "_gi")
 {
     PyObject *api;
-    PyObject *module_dict = PyModule_GetDict (module);
 
-    /* Always enable Python threads since we cannot predict which GI repositories
-     * might accept Python callbacks run within non-Python threads or might trigger
-     * toggle ref notifications.
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=709223
-     */
-    PyEval_InitThreads ();
+    if (pygobject_init (-1, -1, -1) == NULL) {
+        return PYGLIB_MODULE_ERROR_RETURN;
+    }
 
-    PyModule_AddStringConstant(module, "__package__", "gi._gi");
+    if (_pygobject_import() < 0) {
+        return PYGLIB_MODULE_ERROR_RETURN;
+    }
 
-    pygi_foreign_init ();
-    pygi_error_register_types (module);
     _pygi_repository_register_types (module);
     _pygi_info_register_types (module);
     _pygi_struct_register_types (module);
     _pygi_boxed_register_types (module);
     _pygi_ccallback_register_types (module);
-    pygi_resulttuple_register_types (module);
-
-    pyglib_spawn_register_types (module_dict);
-    pyglib_option_context_register_types (module_dict);
-    pyglib_option_group_register_types (module_dict);
-
-    pygobject_register_api (module_dict);
-    pygobject_register_constants (module);
-    pygobject_register_features (module_dict);
-    pygobject_register_version_tuples (module_dict);
-    pygobject_register_warnings (module_dict);
-    pygobject_type_register_types (module_dict);
-    pygobject_object_register_types (module_dict);
-    pygobject_interface_register_types (module_dict);
-    pygobject_paramspec_register_types (module_dict);
-    pygobject_boxed_register_types (module_dict);
-    pygobject_pointer_register_types (module_dict);
-    pygobject_enum_register_types (module_dict);
-    pygobject_flags_register_types (module_dict);
-
-    PyGIWarning = PyErr_NewException ("gi.PyGIWarning", PyExc_Warning, NULL);
-
-    /* Use RuntimeWarning as the base class of PyGIDeprecationWarning
-     * for unstable (odd minor version) and use DeprecationWarning for
-     * stable (even minor version). This is so PyGObject deprecations
-     * behave the same as regular Python deprecations in stable releases.
-     */
-#if PYGOBJECT_MINOR_VERSION % 2
-    PyGIDeprecationWarning = PyErr_NewException("gi.PyGIDeprecationWarning",
-                                                PyExc_RuntimeWarning, NULL);
-#else
-    PyGIDeprecationWarning = PyErr_NewException("gi.PyGIDeprecationWarning",
-                                                PyExc_DeprecationWarning, NULL);
-#endif
-
-    /* Place holder object used to fill in "from Python" argument lists
-     * for values not supplied by the caller but support a GI default.
-     */
-    _PyGIDefaultArgPlaceholder = PyObject_New(PyObject, &PyType_Type);
-
-    Py_INCREF (PyGIWarning);
-    PyModule_AddObject (module, "PyGIWarning", PyGIWarning);
-
-    Py_INCREF(PyGIDeprecationWarning);
-    PyModule_AddObject(module, "PyGIDeprecationWarning", PyGIDeprecationWarning);
+    _pygi_argument_init();
 
     api = PYGLIB_CPointer_WrapPointer ( (void *) &CAPI, "gi._API");
     if (api == NULL) {
diff --git a/gi/gobjectmodule.h b/gi/gobjectmodule.h
deleted file mode 100644 (file)
index 50bb6d1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef _PYGOBJECT_GOBJECTMODULE_H_
-#define _PYGOBJECT_GOBJECTMODULE_H_
-
-
-#include "pygobject-internal.h"
-
-int           pygobject_constructv (PyGObject   *self,
-                                    guint        n_parameters,
-                                    GParameter  *parameters);
-
-void        pygobject_register_api              (PyObject *d);
-void        pygobject_register_constants        (PyObject *m);
-void        pygobject_register_features         (PyObject *d);
-void        pygobject_register_version_tuples   (PyObject *d);
-void        pygobject_register_warnings         (PyObject *d);
-
-PyObject *  pyg_type_name                       (PyObject *self, PyObject *args);
-PyObject *  pyg_type_from_name                  (PyObject *self, PyObject *args);
-PyObject *  pyg_type_is_a                       (PyObject *self, PyObject *args);
-PyObject *  _wrap_pyg_type_register             (PyObject *self, PyObject *args);
-PyObject *  pyg_signal_new                      (PyObject *self, PyObject *args);
-PyObject *  pyg_object_class_list_properties    (PyObject *self, PyObject *args);
-PyObject *  pyg_object_new                      (PyGObject *self, PyObject *args,
-                                                 PyObject *kwargs);
-PyObject *  pyg_signal_accumulator_true_handled (PyObject *unused, PyObject *args);
-PyObject *  pyg_add_emission_hook               (PyGObject *self, PyObject *args);
-PyObject *  pyg__install_metaclass              (PyObject *dummy,
-                                                 PyTypeObject *metaclass);
-PyObject *  pyg__gvalue_get                     (PyObject *module, PyObject *pygvalue);
-PyObject *  pyg__gvalue_set                     (PyObject *module, PyObject *args);
-
-#endif /*_PYGOBJECT_GOBJECTMODULE_H_*/
index 4ed6196..d83a384 100644 (file)
@@ -2,7 +2,6 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 #
 # Copyright (C) 2005-2009 Johan Dahlin <johan@gnome.org>
-#               2015 Christoph Reiter
 #
 #   importer.py: dynamic importer for introspected libraries.
 #
 # USA
 
 from __future__ import absolute_import
+import logging
 import sys
-import warnings
-import importlib
-from contextlib import contextmanager
 
-import gi
-from ._gi import Repository, RepositoryError
-from ._gi import PyGIWarning
-from .module import get_introspection_module
-from .overrides import load_overrides
+from ._gi import Repository
+from .module import DynamicModule, DynamicGObjectModule, DynamicGLibModule
 
 
 repository = Repository.get_default()
-
-# only for backwards compatibility
 modules = {}
 
 
-@contextmanager
-def _check_require_version(namespace, stacklevel):
-    """A context manager which tries to give helpful warnings
-    about missing gi.require_version() which could potentially
-    break code if only an older version than expected is installed
-    or a new version gets introduced.
-
-    ::
-
-        with _check_require_version("Gtk", stacklevel):
-            load_namespace_and_overrides()
-    """
-
-    was_loaded = repository.is_registered(namespace)
-
-    yield
-
-    if was_loaded:
-        # it was loaded before by another import which depended on this
-        # namespace or by C code like libpeas
-        return
-
-    if namespace in ("GLib", "GObject", "Gio"):
-        # part of glib (we have bigger problems if versions change there)
-        return
-
-    if gi.get_required_version(namespace) is not None:
-        # the version was forced using require_version()
-        return
-
-    version = repository.get_version(namespace)
-    warnings.warn(
-        "%(namespace)s was imported without specifying a version first. "
-        "Use gi.require_version('%(namespace)s', '%(version)s') before "
-        "import to ensure that the right version gets loaded."
-        % {"namespace": namespace, "version": version},
-        PyGIWarning, stacklevel=stacklevel)
-
-
-def get_import_stacklevel(import_hook):
-    """Returns the stacklevel value for warnings.warn() for when the warning
-    gets emitted by an imported module, but the warning should point at the
-    code doing the import.
-
-    Pass import_hook=True if the warning gets generated by an import hook
-    (warn() gets called in load_module(), see PEP302)
-    """
-
-    py_version = sys.version_info[:2]
-    if py_version <= (3, 2):
-        # 2.7 included
-        return 4 if import_hook else 2
-    elif py_version == (3, 3):
-        return 8 if import_hook else 10
-    elif py_version == (3, 4):
-        return 10 if import_hook else 8
-    else:
-        # fixed again in 3.5+, see https://bugs.python.org/issue24305
-        return 4 if import_hook else 2
-
-
 class DynamicImporter(object):
 
     # Note: see PEP302 for the Importer Protocol implemented below.
@@ -116,15 +47,11 @@ class DynamicImporter(object):
         if path != self.path:
             return
 
-        # is_registered() is faster than enumerate_versions() and
-        # in the common case of a namespace getting loaded before its
-        # dependencies, is_registered() returns True for all dependencies.
-        if repository.is_registered(namespace) or \
-                repository.enumerate_versions(namespace):
-            return self
+        if not repository.enumerate_versions(namespace):
+            logging.error('Could not find any typelib for %s', namespace)
+            return None
         else:
-            raise ImportError('cannot import name %s, '
-                              'introspection typelib not found' % namespace)
+            return self
 
     def load_module(self, fullname):
         if fullname in sys.modules:
@@ -132,21 +59,20 @@ class DynamicImporter(object):
 
         path, namespace = fullname.rsplit('.', 1)
 
-        stacklevel = get_import_stacklevel(import_hook=True)
-        with _check_require_version(namespace, stacklevel=stacklevel):
-            try:
-                introspection_module = get_introspection_module(namespace)
-            except RepositoryError as e:
-                raise ImportError(e)
-            # Import all dependencies first so their init functions
-            # (gdk_init, ..) in overrides get called.
-            # https://bugzilla.gnome.org/show_bug.cgi?id=656314
-            for dep in repository.get_immediate_dependencies(namespace):
-                importlib.import_module('gi.repository.' + dep.split("-")[0])
-            dynamic_module = load_overrides(introspection_module)
+        # Special case GObject and GLib
+        if namespace == 'GObject':
+            dynamic_module = DynamicGObjectModule()
+        elif namespace == "GLib":
+            dynamic_module = DynamicGLibModule()
+        else:
+            dynamic_module = DynamicModule(namespace)
+
+        modules[namespace] = dynamic_module
 
         dynamic_module.__file__ = '<%s>' % fullname
         dynamic_module.__loader__ = self
+
         sys.modules[fullname] = dynamic_module
+        dynamic_module._load()
 
         return dynamic_module
index 0b22634..70ed6f1 100644 (file)
 
 from __future__ import absolute_import
 
-import sys
-import importlib
-
-_have_py3 = (sys.version_info[0] >= 3)
-
+from . import _glib, _gobject
 try:
     maketrans = ''.maketrans
 except AttributeError:
@@ -34,6 +30,7 @@ except AttributeError:
     from string import maketrans
 
 import gi
+from .overrides import registry
 
 from ._gi import \
     Repository, \
@@ -52,46 +49,29 @@ from ._gi import \
     enum_add, \
     enum_register_new_gtype_and_add, \
     flags_add, \
-    flags_register_new_gtype_and_add, \
-    GInterface
+    flags_register_new_gtype_and_add
 from .types import \
     GObjectMeta, \
-    StructMeta
-
-from ._constants import \
-    TYPE_NONE, \
-    TYPE_BOXED, \
-    TYPE_POINTER, \
-    TYPE_ENUM, \
-    TYPE_FLAGS
-
+    StructMeta, \
+    Function
 
 repository = Repository.get_default()
 
-# Cache of IntrospectionModules that have been loaded.
-_introspection_modules = {}
-
 
 def get_parent_for_object(object_info):
     parent_object_info = object_info.get_parent()
 
     if not parent_object_info:
-        # If we reach the end of the introspection info class hierarchy, look
-        # for an existing wrapper on the GType and use it as a base for the
-        # new introspection wrapper. This allows static C wrappers already
-        # registered with the GType to be used as the introspection base
-        # (_gi.GObject for example)
-        gtype = object_info.get_g_type()
-        if gtype and gtype.pytype:
-            return gtype.pytype
-
-        # Otherwise use builtins.object as the base
         return object
 
     namespace = parent_object_info.get_namespace()
     name = parent_object_info.get_name()
 
-    module = importlib.import_module('gi.repository.' + namespace)
+    # Workaround for GObject.Object and GObject.InitiallyUnowned.
+    if namespace == 'GObject' and name == 'Object' or name == 'InitiallyUnowned':
+        return _gobject.GObject
+
+    module = __import__('gi.repository.%s' % namespace, fromlist=[name])
     return getattr(module, name)
 
 
@@ -101,31 +81,21 @@ def get_interfaces_for_object(object_info):
         namespace = interface_info.get_namespace()
         name = interface_info.get_name()
 
-        module = importlib.import_module('gi.repository.' + namespace)
+        module = __import__('gi.repository.%s' % namespace, fromlist=[name])
         interfaces.append(getattr(module, name))
     return interfaces
 
 
 class IntrospectionModule(object):
-    """An object which wraps an introspection typelib.
 
-    This wrapping creates a python module like representation of the typelib
-    using gi repository as a foundation. Accessing attributes of the module
-    will dynamically pull them in and create wrappers for the members.
-    These members are then cached on this introspection module.
-    """
     def __init__(self, namespace, version=None):
-        """Might raise gi._gi.RepositoryError"""
-
         repository.require(namespace, version)
         self._namespace = namespace
         self._version = version
         self.__name__ = 'gi.repository.' + namespace
 
+        repository.require(self._namespace, self._version)
         self.__path__ = repository.get_typelib_path(self._namespace)
-        if _have_py3:
-            # get_typelib_path() delivers bytes, not a string
-            self.__path__ = self.__path__.decode('UTF-8')
 
         if self._version is None:
             self._version = repository.get_version(self._namespace)
@@ -134,7 +104,7 @@ class IntrospectionModule(object):
         info = repository.find_by_name(self._namespace, name)
         if not info:
             raise AttributeError("%r object has no attribute %r" % (
-                                 self.__name__, name))
+                    self.__name__, name))
 
         if isinstance(info, EnumInfo):
             g_type = info.get_g_type()
@@ -142,16 +112,16 @@ class IntrospectionModule(object):
 
             if wrapper is None:
                 if info.is_flags():
-                    if g_type.is_a(TYPE_FLAGS):
+                    if g_type.is_a(_gobject.TYPE_FLAGS):
                         wrapper = flags_add(g_type)
                     else:
-                        assert g_type == TYPE_NONE
+                        assert g_type == _gobject.TYPE_NONE
                         wrapper = flags_register_new_gtype_and_add(info)
                 else:
-                    if g_type.is_a(TYPE_ENUM):
+                    if g_type.is_a(_gobject.TYPE_ENUM):
                         wrapper = enum_add(g_type)
                     else:
-                        assert g_type == TYPE_NONE
+                        assert g_type == _gobject.TYPE_NONE
                         wrapper = enum_register_new_gtype_and_add(info)
 
                 wrapper.__info__ = info
@@ -161,39 +131,44 @@ class IntrospectionModule(object):
                 # identifier conversion (e. g. in Turkish 'i'.upper() == 'i')
                 # see https://bugzilla.gnome.org/show_bug.cgi?id=649165
                 ascii_upper_trans = maketrans(
-                    'abcdefgjhijklmnopqrstuvwxyz',
-                    'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
+                        'abcdefgjhijklmnopqrstuvwxyz',
+                        'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
                 for value_info in info.get_values():
-                    value_name = value_info.get_name_unescaped().translate(ascii_upper_trans)
+                    value_name = value_info.get_name().translate(ascii_upper_trans)
                     setattr(wrapper, value_name, wrapper(value_info.get_value()))
-                for method_info in info.get_methods():
-                    setattr(wrapper, method_info.__name__, method_info)
 
-            if g_type != TYPE_NONE:
+            if g_type != _gobject.TYPE_NONE:
                 g_type.pytype = wrapper
 
         elif isinstance(info, RegisteredTypeInfo):
             g_type = info.get_g_type()
 
+            # Check if there is already a Python wrapper.
+            if g_type != _gobject.TYPE_NONE:
+                type_ = g_type.pytype
+                if type_ is not None:
+                    self.__dict__[name] = type_
+                    return type_
+
             # Create a wrapper.
             if isinstance(info, ObjectInfo):
                 parent = get_parent_for_object(info)
                 interfaces = tuple(interface for interface in get_interfaces_for_object(info)
-                                   if not issubclass(parent, interface))
+                        if not issubclass(parent, interface))
                 bases = (parent,) + interfaces
                 metaclass = GObjectMeta
             elif isinstance(info, CallbackInfo):
                 bases = (CCallback,)
                 metaclass = GObjectMeta
             elif isinstance(info, InterfaceInfo):
-                bases = (GInterface,)
+                bases = (_gobject.GInterface,)
                 metaclass = GObjectMeta
             elif isinstance(info, (StructInfo, UnionInfo)):
-                if g_type.is_a(TYPE_BOXED):
+                if g_type.is_a(_gobject.TYPE_BOXED):
                     bases = (Boxed,)
-                elif (g_type.is_a(TYPE_POINTER) or
-                      g_type == TYPE_NONE or
-                      g_type.fundamental == g_type):
+                elif g_type.is_a(_gobject.TYPE_POINTER) or \
+                     g_type == _gobject.TYPE_NONE or \
+                     g_type.fundamental == g_type:
                     bases = (Struct,)
                 else:
                     raise TypeError("unable to create a wrapper for %s.%s" % (info.get_namespace(), info.get_name()))
@@ -201,17 +176,7 @@ class IntrospectionModule(object):
             else:
                 raise NotImplementedError(info)
 
-            # Check if there is already a Python wrapper that is not a parent class
-            # of the wrapper being created. If it is a parent, it is ok to clobber
-            # g_type.pytype with a new child class wrapper of the existing parent.
-            # Note that the return here never occurs under normal circumstances due
-            # to caching on the __dict__ itself.
-            if g_type != TYPE_NONE:
-                type_ = g_type.pytype
-                if type_ is not None and type_ not in bases:
-                    self.__dict__[name] = type_
-                    return type_
-
+            name = info.get_name()
             dict_ = {
                 '__info__': info,
                 '__module__': 'gi.repository.' + self._namespace,
@@ -220,27 +185,21 @@ class IntrospectionModule(object):
             wrapper = metaclass(name, bases, dict_)
 
             # Register the new Python wrapper.
-            if g_type != TYPE_NONE:
+            if g_type != _gobject.TYPE_NONE:
                 g_type.pytype = wrapper
 
         elif isinstance(info, FunctionInfo):
-            wrapper = info
+            wrapper = Function(info)
         elif isinstance(info, ConstantInfo):
             wrapper = info.get_value()
         else:
             raise NotImplementedError(info)
 
-        # Cache the newly created wrapper which will then be
-        # available directly on this introspection module instead of being
-        # lazily constructed through the __getattr__ we are currently in.
         self.__dict__[name] = wrapper
         return wrapper
 
     def __repr__(self):
         path = repository.get_typelib_path(self._namespace)
-        if _have_py3:
-            # get_typelib_path() delivers bytes, not a string
-            path = path.decode('UTF-8')
         return "<IntrospectionModule %r from %r>" % (self._namespace, path)
 
     def __dir__(self):
@@ -249,27 +208,118 @@ class IntrospectionModule(object):
         result.update(self.__dict__.keys())
 
         # update *set* because some repository attributes have already been
-        # wrapped by __getattr__() and included in self.__dict__; but skip
-        # Callback types, as these are not real objects which we can actually
-        # get
+        # wrapped by __getattr__() and included in self.__dict__
         namespace_infos = repository.get_infos(self._namespace)
-        result.update(info.get_name() for info in namespace_infos if
-                      not isinstance(info, CallbackInfo))
+        result.update(info.get_name() for info in namespace_infos)
 
         return list(result)
 
 
-def get_introspection_module(namespace):
+class DynamicModule(object):
+    def __init__(self, namespace):
+        self._namespace = namespace
+        self._introspection_module = None
+        self._overrides_module = None
+        self.__path__ = None
+
+    def _load(self):
+        version = gi.get_required_version(self._namespace)
+        self._introspection_module = IntrospectionModule(self._namespace,
+                                                         version)
+
+        overrides_modules = __import__('gi.overrides', fromlist=[self._namespace])
+        self._overrides_module = getattr(overrides_modules, self._namespace, None)
+        self.__path__ = repository.get_typelib_path(self._namespace)
+
+    def __getattr__(self, name):
+        if self._overrides_module is not None:
+            override_exports = getattr(self._overrides_module, '__all__', ())
+            if name in override_exports:
+                return getattr(self._overrides_module, name, None)
+        else:
+            # check the registry just in case the module hasn't loaded yet
+            # TODO: Only gtypes are registered in the registry right now
+            #       but it would be nice to register all overrides and
+            #       get rid of the module imports. We might actually see a
+            #       speedup.
+            key = '%s.%s' % (self._namespace, name)
+            if key in registry:
+                return registry[key]
+
+        return getattr(self._introspection_module, name)
+
+    def __dir__(self):
+        # Python's default dir() is just dir(self.__class__) + self.__dict__.keys()
+        result = set(dir(self.__class__))
+        result.update(self.__dict__.keys())
+
+        result.update(dir(self._introspection_module))
+        override_exports = getattr(self._overrides_module, '__all__', ())
+        result.update(override_exports)
+        return list(result)
+
+    def __repr__(self):
+        path = repository.get_typelib_path(self._namespace)
+        return "<%s.%s %r from %r>" % (self.__class__.__module__,
+                                      self.__class__.__name__,
+                                      self._namespace,
+                                      path)
+
+
+class DynamicGObjectModule(DynamicModule):
+    """Wrapper for the internal GObject module
+
+    This class allows us to access both the static internal PyGObject module and the GI GObject module
+    through the same interface.  It is returned when by importing GObject from the gi repository:
+
+    from gi.repository import GObject
+
+    We use this because some PyGI interfaces generated from the GIR require GObject types not wrapped
+    by the static bindings.  This also allows access to module attributes in a way that is more
+    familiar to GI application developers.  Take signal flags as an example.  The G_SIGNAL_RUN_FIRST
+    flag would be accessed as GObject.SIGNAL_RUN_FIRST in the static bindings but in the dynamic bindings
+    can be accessed as GObject.SignalFlags.RUN_FIRST.  The latter follows a GI naming convention which
+    would be familiar to GI application developers in a number of languages.
     """
-    :Returns:
-        An object directly wrapping the gi module without overrides.
 
-    Might raise gi._gi.RepositoryError
+    def __init__(self):
+        DynamicModule.__init__(self, namespace='GObject')
+
+    def __getattr__(self, name):
+        from . import _gobject
+
+        # first see if this attr is in the internal _gobject module
+        attr = getattr(_gobject, name, None)
+
+        # if not in module assume request for an attr exported through GI
+        if attr is None:
+            attr = super(DynamicGObjectModule, self).__getattr__(name)
+
+        return attr
+
+
+class DynamicGLibModule(DynamicModule):
+    """Wrapper for the internal GLib module
+
+    This class allows us to access both the static internal PyGLib module and the GI GLib module
+    through the same interface.  It is returned when by importing GLib from the gi repository:
+
+    from gi.repository import GLib
+
+    We use this because some PyGI interfaces generated from the GIR require GLib types not wrapped
+    by the static bindings.  This also allows access to module attributes in a way that is more
+    familiar to GI application developers.
     """
-    if namespace in _introspection_modules:
-        return _introspection_modules[namespace]
 
-    version = gi.get_required_version(namespace)
-    module = IntrospectionModule(namespace, version)
-    _introspection_modules[namespace] = module
-    return module
+    def __init__(self):
+        DynamicModule.__init__(self, namespace='GLib')
+
+    def __getattr__(self, name):
+        # first see if this attr is in the internal _gobject module
+        attr = getattr(_glib, name, None)
+
+        # if not in module assume request for an attr exported through GI
+        if attr is None:
+            attr = super(DynamicGLibModule, self).__getattr__(name)
+
+        return attr
index e9f8e33..a25eda7 100644 (file)
@@ -19,9 +19,9 @@
 # USA
 
 from ..overrides import override
-from ..module import get_introspection_module
+from ..importer import modules
 
-GIMarshallingTests = get_introspection_module('GIMarshallingTests')
+GIMarshallingTests = modules['GIMarshallingTests']._introspection_module
 
 __all__ = []
 
@@ -41,7 +41,6 @@ class OverridesStruct(GIMarshallingTests.OverridesStruct):
     def method(self):
         return GIMarshallingTests.OverridesStruct.method(self) / 7
 
-
 OverridesStruct = override(OverridesStruct)
 __all__.append('OverridesStruct')
 
@@ -54,19 +53,17 @@ class OverridesObject(GIMarshallingTests.OverridesObject):
     def __init__(self, long_):
         GIMarshallingTests.OverridesObject.__init__(self)
         # FIXME: doesn't work yet
-        # self.long_ = long_
+        #self.long_ = long_
 
     @classmethod
     def new(cls, long_):
         self = GIMarshallingTests.OverridesObject.new()
         # FIXME: doesn't work yet
-        # self.long_ = long_
+        #self.long_ = long_
         return self
 
     def method(self):
-        """Overridden doc string."""
         return GIMarshallingTests.OverridesObject.method(self) / 7
 
-
 OverridesObject = override(OverridesObject)
 __all__.append('OverridesObject')
index 372d6d4..41904c8 100644 (file)
@@ -2,7 +2,6 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 #
 # Copyright (C) 2010 Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
-# Copyright (C) 2011, 2012 Canonical Ltd.
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-import signal
-import warnings
-import sys
-import socket
+from ..importer import modules
+from .._gi import variant_new_tuple, variant_type_from_string
 
-from ..module import get_introspection_module
-from .._gi import (variant_type_from_string, source_new,
-                   source_set_callback, io_channel_read)
-from ..overrides import override, deprecated, deprecated_attr
-from gi import PyGIDeprecationWarning, version_info
-
-GLib = get_introspection_module('GLib')
+GLib = modules['GLib']._introspection_module
 
 __all__ = []
 
-from gi import _option as option
-option  # pyflakes
-__all__.append('option')
-
-
-# Types and functions still needed from static bindings
-from gi import _gi
-from gi._error import GError
-
-Error = GError
-OptionContext = _gi.OptionContext
-OptionGroup = _gi.OptionGroup
-Pid = _gi.Pid
-spawn_async = _gi.spawn_async
-
-
-def threads_init():
-    warnings.warn('Since version 3.11, calling threads_init is no longer needed. '
-                  'See: https://wiki.gnome.org/PyGObject/Threading',
-                  PyGIDeprecationWarning, stacklevel=2)
-
-
-def gerror_matches(self, domain, code):
-    # Handle cases where self.domain was set to an integer for compatibility
-    # with the introspected GLib.Error.
-    if isinstance(self.domain, str):
-        self_domain_quark = GLib.quark_from_string(self.domain)
-    else:
-        self_domain_quark = self.domain
-    return (self_domain_quark, self.code) == (domain, code)
-
-
-def gerror_new_literal(domain, message, code):
-    domain_quark = GLib.quark_to_string(domain)
-    return GError(message, domain_quark, code)
-
-
-# Monkey patch methods that rely on GLib introspection to be loaded at runtime.
-Error.__name__ = 'Error'
-Error.__module__ = 'GLib'
-Error.__gtype__ = GLib.Error.__gtype__
-Error.matches = gerror_matches
-Error.new_literal = staticmethod(gerror_new_literal)
-
-
-__all__ += ['GError', 'Error', 'OptionContext', 'OptionGroup', 'Pid',
-            'spawn_async', 'threads_init']
-
 
 class _VariantCreator(object):
 
@@ -103,7 +46,7 @@ class _VariantCreator(object):
     }
 
     def _create(self, format, args):
-        """Create a GVariant object from given format and argument list.
+        '''Create a GVariant object from given format and argument list.
 
         This method recursively calls itself for complex structures (arrays,
         dictionaries, boxed).
@@ -115,7 +58,7 @@ class _VariantCreator(object):
         If args is None, then this won't actually consume any arguments, and
         just parse the format string and generate empty GVariant structures.
         This is required for creating empty dictionaries or arrays.
-        """
+        '''
         # leaves (simple types)
         constructor = self._LEAF_CONSTRUCTORS.get(format[0])
         if constructor:
@@ -139,41 +82,25 @@ class _VariantCreator(object):
         raise NotImplementedError('cannot handle GVariant type ' + format)
 
     def _create_tuple(self, format, args):
-        """Handle the case where the outermost type of format is a tuple."""
+        '''Handle the case where the outermost type of format is a tuple.'''
 
         format = format[1:]  # eat the '('
-        if args is None:
-            # empty value: we need to call _create() to parse the subtype
-            rest_format = format
-            while rest_format:
-                if rest_format.startswith(')'):
-                    break
-                rest_format = self._create(rest_format, None)[1]
-            else:
-                raise TypeError('tuple type string not closed with )')
-
-            rest_format = rest_format[1:]  # eat the )
-            return (None, rest_format, None)
-        else:
-            if not args or not isinstance(args[0], tuple):
-                raise TypeError('expected tuple argument')
+        builder = GLib.VariantBuilder.new(variant_type_from_string('r'))
+        if args is not None:
+            if not args or type(args[0]) != type(()):
+                raise (TypeError, 'expected tuple argument')
 
-            builder = GLib.VariantBuilder.new(variant_type_from_string('r'))
             for i in range(len(args[0])):
                 if format.startswith(')'):
-                    raise TypeError('too many arguments for tuple signature')
+                    raise (TypeError, 'too many arguments for tuple signature')
 
                 (v, format, _) = self._create(format, args[0][i:])
                 builder.add_value(v)
             args = args[1:]
-            if not format.startswith(')'):
-                raise TypeError('tuple type string not closed with )')
-
-            rest_format = format[1:]  # eat the )
-            return (builder.end(), rest_format, args)
+        return (builder.end(), format[1:], args)
 
     def _create_dict(self, format, args):
-        """Handle the case where the outermost type of format is a dict."""
+        '''Handle the case where the outermost type of format is a dict.'''
 
         builder = None
         if args is None or not args[0]:
@@ -182,8 +109,8 @@ class _VariantCreator(object):
             rest_format = self._create(format[2:], None)[1]
             rest_format = self._create(rest_format, None)[1]
             if not rest_format.startswith('}'):
-                raise TypeError('dictionary type string not closed with }')
-            rest_format = rest_format[1:]  # eat the }
+                raise ValueError('dictionary type string not closed with }')
+            rest_format = rest_format[1:]  # eat the}
             element_type = format[:len(format) - len(rest_format)]
             builder = GLib.VariantBuilder.new(variant_type_from_string(element_type))
         else:
@@ -193,8 +120,8 @@ class _VariantCreator(object):
                 (val_v, rest_format, _) = self._create(rest_format, [v])
 
                 if not rest_format.startswith('}'):
-                    raise TypeError('dictionary type string not closed with }')
-                rest_format = rest_format[1:]  # eat the }
+                    raise ValueError('dictionary type string not closed with }')
+                rest_format = rest_format[1:]  # eat the}
 
                 entry = GLib.VariantBuilder.new(variant_type_from_string('{?*}'))
                 entry.add_value(key_v)
@@ -206,7 +133,7 @@ class _VariantCreator(object):
         return (builder.end(), rest_format, args)
 
     def _create_array(self, format, args):
-        """Handle the case where the outermost type of format is an array."""
+        '''Handle the case where the outermost type of format is an array.'''
 
         builder = None
         if args is None or not args[0]:
@@ -227,7 +154,7 @@ class _VariantCreator(object):
 
 class Variant(GLib.Variant):
     def __new__(cls, format_string, value):
-        """Create a GVariant from a native Python object.
+        '''Create a GVariant from a native Python object.
 
         format_string is a standard GVariant type signature, value is a Python
         object whose structure has to match the signature.
@@ -237,39 +164,15 @@ class Variant(GLib.Variant):
           GLib.Variant('(is)', (1, 'hello'))
           GLib.Variant('(asa{sv})', ([], {'foo': GLib.Variant('b', True),
                                           'bar': GLib.Variant('i', 2)}))
-        """
+        '''
         creator = _VariantCreator()
         (v, rest_format, _) = creator._create(format_string, [value])
         if rest_format:
             raise TypeError('invalid remaining format string: "%s"' % rest_format)
-        v.format_string = format_string
         return v
 
-    @staticmethod
-    def new_tuple(*elements):
-        return GLib.Variant.new_tuple(elements)
-
-    def __del__(self):
-        try:
-            self.unref()
-        except ImportError:
-            # Calling unref will cause gi and gi.repository.GLib to be
-            # imported. However, if the program is exiting, then these
-            # modules have likely been removed from sys.modules and will
-            # raise an exception. Assume that's the case for ImportError
-            # and ignore the exception since everything will be cleaned
-            # up, anyways.
-            pass
-
-    def __str__(self):
-        return self.print_(True)
-
     def __repr__(self):
-        if hasattr(self, 'format_string'):
-            f = self.format_string
-        else:
-            f = self.get_type_string()
-        return "GLib.Variant('%s', %s)" % (f, self.print_(False))
+        return '<GLib.Variant(%s)>' % getattr(self, 'print')(True)
 
     def __eq__(self, other):
         try:
@@ -290,7 +193,7 @@ class Variant(GLib.Variant):
         return hash((self.get_type_string(), self.unpack()))
 
     def unpack(self):
-        """Decompose a GVariant into a native Python object."""
+        '''Decompose a GVariant into a native Python object.'''
 
         LEAF_ACCESSORS = {
             'b': self.get_boolean,
@@ -316,7 +219,7 @@ class Variant(GLib.Variant):
         # tuple
         if self.get_type_string().startswith('('):
             res = [self.get_child_value(i).unpack()
-                   for i in range(self.n_children())]
+                    for i in range(self.n_children())]
             return tuple(res)
 
         # dictionary
@@ -336,23 +239,18 @@ class Variant(GLib.Variant):
         if self.get_type_string().startswith('v'):
             return self.get_variant().unpack()
 
-        # maybe
-        if self.get_type_string().startswith('m'):
-            m = self.get_maybe()
-            return m.unpack() if m else None
-
         raise NotImplementedError('unsupported GVariant type ' + self.get_type_string())
 
     @classmethod
     def split_signature(klass, signature):
-        """Return a list of the element signatures of the topmost signature tuple.
+        '''Return a list of the element signatures of the topmost signature tuple.
 
         If the signature is not a tuple, it returns one element with the entire
         signature. If the signature is an empty tuple, the result is [].
 
         This is useful for e. g. iterating over method parameters which are
         passed as a single Variant.
-        """
+        '''
         if signature == '()':
             return []
 
@@ -472,496 +370,16 @@ class Variant(GLib.Variant):
         return res
 
 
+@classmethod
+def new_tuple(cls, *elements):
+    return variant_new_tuple(elements)
+
+
 def get_string(self):
     value, length = GLib.Variant.get_string(self)
     return value
 
-
+setattr(Variant, 'new_tuple', new_tuple)
 setattr(Variant, 'get_string', get_string)
 
 __all__.append('Variant')
-
-
-def markup_escape_text(text, length=-1):
-    if isinstance(text, bytes):
-        return GLib.markup_escape_text(text.decode('UTF-8'), length)
-    else:
-        return GLib.markup_escape_text(text, length)
-
-
-__all__.append('markup_escape_text')
-
-
-# backwards compatible names from old static bindings
-for n in ['DESKTOP', 'DOCUMENTS', 'DOWNLOAD', 'MUSIC', 'PICTURES',
-          'PUBLIC_SHARE', 'TEMPLATES', 'VIDEOS']:
-    attr = 'USER_DIRECTORY_' + n
-    deprecated_attr("GLib", attr, "GLib.UserDirectory.DIRECTORY_" + n)
-    globals()[attr] = getattr(GLib.UserDirectory, 'DIRECTORY_' + n)
-    __all__.append(attr)
-
-for n in ['ERR', 'HUP', 'IN', 'NVAL', 'OUT', 'PRI']:
-    globals()['IO_' + n] = getattr(GLib.IOCondition, n)
-    __all__.append('IO_' + n)
-
-for n in ['APPEND', 'GET_MASK', 'IS_READABLE', 'IS_SEEKABLE',
-          'MASK', 'NONBLOCK', 'SET_MASK']:
-    attr = 'IO_FLAG_' + n
-    deprecated_attr("GLib", attr, "GLib.IOFlags." + n)
-    globals()[attr] = getattr(GLib.IOFlags, n)
-    __all__.append(attr)
-
-# spelling for the win
-IO_FLAG_IS_WRITEABLE = GLib.IOFlags.IS_WRITABLE
-deprecated_attr("GLib", "IO_FLAG_IS_WRITEABLE", "GLib.IOFlags.IS_WRITABLE")
-__all__.append('IO_FLAG_IS_WRITEABLE')
-
-for n in ['AGAIN', 'EOF', 'ERROR', 'NORMAL']:
-    attr = 'IO_STATUS_' + n
-    globals()[attr] = getattr(GLib.IOStatus, n)
-    deprecated_attr("GLib", attr, "GLib.IOStatus." + n)
-    __all__.append(attr)
-
-for n in ['CHILD_INHERITS_STDIN', 'DO_NOT_REAP_CHILD', 'FILE_AND_ARGV_ZERO',
-          'LEAVE_DESCRIPTORS_OPEN', 'SEARCH_PATH', 'STDERR_TO_DEV_NULL',
-          'STDOUT_TO_DEV_NULL']:
-    attr = 'SPAWN_' + n
-    globals()[attr] = getattr(GLib.SpawnFlags, n)
-    deprecated_attr("GLib", attr, "GLib.SpawnFlags." + n)
-    __all__.append(attr)
-
-for n in ['HIDDEN', 'IN_MAIN', 'REVERSE', 'NO_ARG', 'FILENAME', 'OPTIONAL_ARG',
-          'NOALIAS']:
-    attr = 'OPTION_FLAG_' + n
-    globals()[attr] = getattr(GLib.OptionFlags, n)
-    deprecated_attr("GLib", attr, "GLib.OptionFlags." + n)
-    __all__.append(attr)
-
-for n in ['UNKNOWN_OPTION', 'BAD_VALUE', 'FAILED']:
-    attr = 'OPTION_ERROR_' + n
-    deprecated_attr("GLib", attr, "GLib.OptionError." + n)
-    globals()[attr] = getattr(GLib.OptionError, n)
-    __all__.append(attr)
-
-
-# these are not currently exported in GLib gir, presumably because they are
-# platform dependent; so get them from our static bindings
-for name in ['G_MINFLOAT', 'G_MAXFLOAT', 'G_MINDOUBLE', 'G_MAXDOUBLE',
-             'G_MINSHORT', 'G_MAXSHORT', 'G_MAXUSHORT', 'G_MININT', 'G_MAXINT',
-             'G_MAXUINT', 'G_MINLONG', 'G_MAXLONG', 'G_MAXULONG', 'G_MAXSIZE',
-             'G_MINSSIZE', 'G_MAXSSIZE', 'G_MINOFFSET', 'G_MAXOFFSET']:
-    attr = name.split("_", 1)[-1]
-    globals()[attr] = getattr(_gi, name)
-    __all__.append(attr)
-
-
-class MainLoop(GLib.MainLoop):
-    # Backwards compatible constructor API
-    def __new__(cls, context=None):
-        return GLib.MainLoop.new(context, False)
-
-    # Retain classic pygobject behaviour of quitting main loops on SIGINT
-    def __init__(self, context=None):
-        def _handler(loop):
-            loop.quit()
-            loop._quit_by_sigint = True
-            # We handle signal deletion in __del__, return True so GLib
-            # doesn't do the deletion for us.
-            return True
-
-        if sys.platform != 'win32':
-            # compatibility shim, keep around until we depend on glib 2.36
-            if hasattr(GLib, 'unix_signal_add'):
-                fn = GLib.unix_signal_add
-            else:
-                fn = GLib.unix_signal_add_full
-            self._signal_source = fn(GLib.PRIORITY_DEFAULT, signal.SIGINT, _handler, self)
-
-    def __del__(self):
-        if hasattr(self, '_signal_source'):
-            GLib.source_remove(self._signal_source)
-
-    def run(self):
-        super(MainLoop, self).run()
-        if hasattr(self, '_quit_by_sigint'):
-            # caught by _main_loop_sigint_handler()
-            raise KeyboardInterrupt
-
-
-MainLoop = override(MainLoop)
-__all__.append('MainLoop')
-
-
-class MainContext(GLib.MainContext):
-    # Backwards compatible API with default value
-    def iteration(self, may_block=True):
-        return super(MainContext, self).iteration(may_block)
-
-
-MainContext = override(MainContext)
-__all__.append('MainContext')
-
-
-class Source(GLib.Source):
-    def __new__(cls, *args, **kwargs):
-        # use our custom pyg_source_new() here as g_source_new() is not
-        # bindable
-        source = source_new()
-        source.__class__ = cls
-        setattr(source, '__pygi_custom_source', True)
-        return source
-
-    def __init__(self, *args, **kwargs):
-        return super(Source, self).__init__()
-
-    def set_callback(self, fn, user_data=None):
-        if hasattr(self, '__pygi_custom_source'):
-            # use our custom pyg_source_set_callback() if for a GSource object
-            # with custom functions
-            source_set_callback(self, fn, user_data)
-        else:
-            # otherwise, for Idle and Timeout, use the standard method
-            super(Source, self).set_callback(fn, user_data)
-
-    def get_current_time(self):
-        return GLib.get_real_time() * 0.000001
-
-    get_current_time = deprecated(get_current_time,
-                                  'GLib.Source.get_time() or GLib.get_real_time()')
-
-    # as get/set_priority are introspected, we can't use the static
-    # property(get_priority, ..) here
-    def __get_priority(self):
-        return self.get_priority()
-
-    def __set_priority(self, value):
-        self.set_priority(value)
-
-    priority = property(__get_priority, __set_priority)
-
-    def __get_can_recurse(self):
-        return self.get_can_recurse()
-
-    def __set_can_recurse(self, value):
-        self.set_can_recurse(value)
-
-    can_recurse = property(__get_can_recurse, __set_can_recurse)
-
-
-Source = override(Source)
-__all__.append('Source')
-
-
-class Idle(Source):
-    def __new__(cls, priority=GLib.PRIORITY_DEFAULT):
-        source = GLib.idle_source_new()
-        source.__class__ = cls
-        return source
-
-    def __init__(self, priority=GLib.PRIORITY_DEFAULT):
-        super(Source, self).__init__()
-        if priority != GLib.PRIORITY_DEFAULT:
-            self.set_priority(priority)
-
-
-__all__.append('Idle')
-
-
-class Timeout(Source):
-    def __new__(cls, interval=0, priority=GLib.PRIORITY_DEFAULT):
-        source = GLib.timeout_source_new(interval)
-        source.__class__ = cls
-        return source
-
-    def __init__(self, interval=0, priority=GLib.PRIORITY_DEFAULT):
-        if priority != GLib.PRIORITY_DEFAULT:
-            self.set_priority(priority)
-
-
-__all__.append('Timeout')
-
-
-# backwards compatible API
-def idle_add(function, *user_data, **kwargs):
-    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT_IDLE)
-    return GLib.idle_add(priority, function, *user_data)
-
-
-__all__.append('idle_add')
-
-
-def timeout_add(interval, function, *user_data, **kwargs):
-    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
-    return GLib.timeout_add(priority, interval, function, *user_data)
-
-
-__all__.append('timeout_add')
-
-
-def timeout_add_seconds(interval, function, *user_data, **kwargs):
-    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
-    return GLib.timeout_add_seconds(priority, interval, function, *user_data)
-
-
-__all__.append('timeout_add_seconds')
-
-
-# The GI GLib API uses g_io_add_watch_full renamed to g_io_add_watch with
-# a signature of (channel, priority, condition, func, user_data).
-# Prior to PyGObject 3.8, this function was statically bound with an API closer to the
-# non-full version with a signature of: (fd, condition, func, *user_data)
-# We need to support this until we are okay with breaking API in a way which is
-# not backwards compatible.
-#
-# This needs to take into account several historical APIs:
-# - calling with an fd as first argument
-# - calling with a Python file object as first argument (we keep this one as
-#   it's really convenient and does not change the number of arguments)
-# - calling without a priority as second argument
-def _io_add_watch_get_args(channel, priority_, condition, *cb_and_user_data, **kwargs):
-    if not isinstance(priority_, int) or isinstance(priority_, GLib.IOCondition):
-        warnings.warn('Calling io_add_watch without priority as second argument is deprecated',
-                      PyGIDeprecationWarning)
-        # shift the arguments around
-        user_data = cb_and_user_data
-        callback = condition
-        condition = priority_
-        if not callable(callback):
-            raise TypeError('third argument must be callable')
-
-        # backwards compatibility: Call with priority kwarg
-        if 'priority' in kwargs:
-            warnings.warn('Calling io_add_watch with priority keyword argument is deprecated, put it as second positional argument',
-                          PyGIDeprecationWarning)
-            priority_ = kwargs['priority']
-        else:
-            priority_ = GLib.PRIORITY_DEFAULT
-    else:
-        if len(cb_and_user_data) < 1 or not callable(cb_and_user_data[0]):
-            raise TypeError('expecting callback as fourth argument')
-        callback = cb_and_user_data[0]
-        user_data = cb_and_user_data[1:]
-
-    # backwards compatibility: Allow calling with fd
-    if isinstance(channel, int):
-        func_fdtransform = lambda _, cond, *data: callback(channel, cond, *data)
-        real_channel = GLib.IOChannel.unix_new(channel)
-    elif isinstance(channel, socket.socket) and sys.platform == 'win32':
-        func_fdtransform = lambda _, cond, *data: callback(channel, cond, *data)
-        real_channel = GLib.IOChannel.win32_new_socket(channel.fileno())
-    elif hasattr(channel, 'fileno'):
-        # backwards compatibility: Allow calling with Python file
-        func_fdtransform = lambda _, cond, *data: callback(channel, cond, *data)
-        real_channel = GLib.IOChannel.unix_new(channel.fileno())
-    else:
-        assert isinstance(channel, GLib.IOChannel)
-        func_fdtransform = callback
-        real_channel = channel
-
-    return real_channel, priority_, condition, func_fdtransform, user_data
-
-
-__all__.append('_io_add_watch_get_args')
-
-
-def io_add_watch(*args, **kwargs):
-    """io_add_watch(channel, priority, condition, func, *user_data) -> event_source_id"""
-    channel, priority, condition, func, user_data = _io_add_watch_get_args(*args, **kwargs)
-    return GLib.io_add_watch(channel, priority, condition, func, *user_data)
-
-
-__all__.append('io_add_watch')
-
-
-# backwards compatible API
-class IOChannel(GLib.IOChannel):
-    def __new__(cls, filedes=None, filename=None, mode=None, hwnd=None):
-        if filedes is not None:
-            return GLib.IOChannel.unix_new(filedes)
-        if filename is not None:
-            return GLib.IOChannel.new_file(filename, mode or 'r')
-        if hwnd is not None:
-            return GLib.IOChannel.win32_new_fd(hwnd)
-        raise TypeError('either a valid file descriptor, file name, or window handle must be supplied')
-
-    def __init__(self, *args, **kwargs):
-        return super(IOChannel, self).__init__()
-
-    def read(self, max_count=-1):
-        return io_channel_read(self, max_count)
-
-    def readline(self, size_hint=-1):
-        # note, size_hint is just to maintain backwards compatible API; the
-        # old static binding did not actually use it
-        (status, buf, length, terminator_pos) = self.read_line()
-        if buf is None:
-            return ''
-        return buf
-
-    def readlines(self, size_hint=-1):
-        # note, size_hint is just to maintain backwards compatible API;
-        # the old static binding did not actually use it
-        lines = []
-        status = GLib.IOStatus.NORMAL
-        while status == GLib.IOStatus.NORMAL:
-            (status, buf, length, terminator_pos) = self.read_line()
-            # note, this appends an empty line after EOF; this is
-            # bug-compatible with the old static bindings
-            if buf is None:
-                buf = ''
-            lines.append(buf)
-        return lines
-
-    def write(self, buf, buflen=-1):
-        if not isinstance(buf, bytes):
-            buf = buf.encode('UTF-8')
-        if buflen == -1:
-            buflen = len(buf)
-        (status, written) = self.write_chars(buf, buflen)
-        return written
-
-    def writelines(self, lines):
-        for line in lines:
-            self.write(line)
-
-    _whence_map = {0: GLib.SeekType.SET, 1: GLib.SeekType.CUR, 2: GLib.SeekType.END}
-
-    def seek(self, offset, whence=0):
-        try:
-            w = self._whence_map[whence]
-        except KeyError:
-            raise ValueError("invalid 'whence' value")
-        return self.seek_position(offset, w)
-
-    def add_watch(self, condition, callback, *user_data, **kwargs):
-        priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
-        return io_add_watch(self, priority, condition, callback, *user_data)
-
-    add_watch = deprecated(add_watch, 'GLib.io_add_watch()')
-
-    def __iter__(self):
-        return self
-
-    def __next__(self):
-        (status, buf, length, terminator_pos) = self.read_line()
-        if status == GLib.IOStatus.NORMAL:
-            return buf
-        raise StopIteration
-
-    # Python 2.x compatibility
-    next = __next__
-
-
-IOChannel = override(IOChannel)
-__all__.append('IOChannel')
-
-
-class PollFD(GLib.PollFD):
-    def __new__(cls, fd, events):
-        pollfd = GLib.PollFD()
-        pollfd.__class__ = cls
-        return pollfd
-
-    def __init__(self, fd, events):
-        self.fd = fd
-        self.events = events
-
-
-PollFD = override(PollFD)
-__all__.append('PollFD')
-
-
-# The GI GLib API uses g_child_watch_add_full renamed to g_child_watch_add with
-# a signature of (priority, pid, callback, data).
-# Prior to PyGObject 3.8, this function was statically bound with an API closer to the
-# non-full version with a signature of: (pid, callback, data=None, priority=GLib.PRIORITY_DEFAULT)
-# We need to support this until we are okay with breaking API in a way which is
-# not backwards compatible.
-def _child_watch_add_get_args(priority_or_pid, pid_or_callback, *args, **kwargs):
-    user_data = []
-
-    if callable(pid_or_callback):
-        warnings.warn('Calling child_watch_add without priority as first argument is deprecated',
-                      PyGIDeprecationWarning)
-        pid = priority_or_pid
-        callback = pid_or_callback
-        if len(args) == 0:
-            priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
-        elif len(args) == 1:
-            user_data = args
-            priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
-        elif len(args) == 2:
-            user_data = [args[0]]
-            priority = args[1]
-        else:
-            raise TypeError('expected at most 4 positional arguments')
-    else:
-        priority = priority_or_pid
-        pid = pid_or_callback
-        if 'function' in kwargs:
-            callback = kwargs['function']
-            user_data = args
-        elif len(args) > 0 and callable(args[0]):
-            callback = args[0]
-            user_data = args[1:]
-        else:
-            raise TypeError('expected callback as third argument')
-
-    if 'data' in kwargs:
-        if user_data:
-            raise TypeError('got multiple values for "data" argument')
-        user_data = [kwargs['data']]
-
-    return priority, pid, callback, user_data
-
-
-# we need this to be accessible for unit testing
-__all__.append('_child_watch_add_get_args')
-
-
-def child_watch_add(*args, **kwargs):
-    """child_watch_add(priority, pid, function, *data)"""
-    priority, pid, function, data = _child_watch_add_get_args(*args, **kwargs)
-    return GLib.child_watch_add(priority, pid, function, *data)
-
-
-__all__.append('child_watch_add')
-
-
-def get_current_time():
-    return GLib.get_real_time() * 0.000001
-
-
-get_current_time = deprecated(get_current_time, 'GLib.get_real_time()')
-
-__all__.append('get_current_time')
-
-
-# backwards compatible API with default argument, and ignoring bytes_read
-# output argument
-def filename_from_utf8(utf8string, len=-1):
-    return GLib.filename_from_utf8(utf8string, len)[0]
-
-
-__all__.append('filename_from_utf8')
-
-
-# backwards compatible API for renamed function
-if not hasattr(GLib, 'unix_signal_add_full'):
-    def add_full_compat(*args):
-        warnings.warn('GLib.unix_signal_add_full() was renamed to GLib.unix_signal_add()',
-                      PyGIDeprecationWarning)
-        return GLib.unix_signal_add(*args)
-
-    GLib.unix_signal_add_full = add_full_compat
-
-
-# obsolete constants for backwards compatibility
-glib_version = (GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)
-__all__.append('glib_version')
-deprecated_attr("GLib", "glib_version",
-                "(GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)")
-
-pyglib_version = version_info
-__all__.append('pyglib_version')
-deprecated_attr("GLib", "pyglib_version", "gi.version_info")
diff --git a/gi/overrides/GObject.py b/gi/overrides/GObject.py
deleted file mode 100644 (file)
index c252bfa..0000000
+++ /dev/null
@@ -1,726 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2012 Canonical Ltd.
-# Author: Martin Pitt <martin.pitt@ubuntu.com>
-# Copyright (C) 2012-2013 Simon Feltman <sfeltman@src.gnome.org>
-# Copyright (C) 2012 Bastian Winkler <buz@netbuz.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-import sys
-import warnings
-from collections import namedtuple
-
-import gi.overrides
-import gi.module
-from gi.overrides import override, deprecated_attr
-from gi.repository import GLib
-from gi import PyGIDeprecationWarning
-
-from gi import _propertyhelper as propertyhelper
-from gi import _signalhelper as signalhelper
-from gi import _gi
-
-
-GObjectModule = gi.module.get_introspection_module('GObject')
-
-__all__ = []
-
-
-from gi import _option as option
-option = option
-
-
-# API aliases for backwards compatibility
-for name in ['markup_escape_text', 'get_application_name',
-             'set_application_name', 'get_prgname', 'set_prgname',
-             'main_depth', 'filename_display_basename',
-             'filename_display_name', 'filename_from_utf8',
-             'uri_list_extract_uris',
-             'MainLoop', 'MainContext', 'main_context_default',
-             'source_remove', 'Source', 'Idle', 'Timeout', 'PollFD',
-             'idle_add', 'timeout_add', 'timeout_add_seconds',
-             'io_add_watch', 'child_watch_add', 'get_current_time',
-             'spawn_async']:
-    globals()[name] = getattr(GLib, name)
-    deprecated_attr("GObject", name, "GLib." + name)
-    __all__.append(name)
-
-# deprecated constants
-for name in ['PRIORITY_DEFAULT', 'PRIORITY_DEFAULT_IDLE', 'PRIORITY_HIGH',
-             'PRIORITY_HIGH_IDLE', 'PRIORITY_LOW',
-             'IO_IN', 'IO_OUT', 'IO_PRI', 'IO_ERR', 'IO_HUP', 'IO_NVAL',
-             'IO_STATUS_ERROR', 'IO_STATUS_NORMAL', 'IO_STATUS_EOF',
-             'IO_STATUS_AGAIN', 'IO_FLAG_APPEND', 'IO_FLAG_NONBLOCK',
-             'IO_FLAG_IS_READABLE', 'IO_FLAG_IS_WRITEABLE',
-             'IO_FLAG_IS_SEEKABLE', 'IO_FLAG_MASK', 'IO_FLAG_GET_MASK',
-             'IO_FLAG_SET_MASK',
-             'SPAWN_LEAVE_DESCRIPTORS_OPEN', 'SPAWN_DO_NOT_REAP_CHILD',
-             'SPAWN_SEARCH_PATH', 'SPAWN_STDOUT_TO_DEV_NULL',
-             'SPAWN_STDERR_TO_DEV_NULL', 'SPAWN_CHILD_INHERITS_STDIN',
-             'SPAWN_FILE_AND_ARGV_ZERO',
-             'OPTION_FLAG_HIDDEN', 'OPTION_FLAG_IN_MAIN', 'OPTION_FLAG_REVERSE',
-             'OPTION_FLAG_NO_ARG', 'OPTION_FLAG_FILENAME', 'OPTION_FLAG_OPTIONAL_ARG',
-             'OPTION_FLAG_NOALIAS', 'OPTION_ERROR_UNKNOWN_OPTION',
-             'OPTION_ERROR_BAD_VALUE', 'OPTION_ERROR_FAILED', 'OPTION_REMAINING',
-             'glib_version']:
-    with warnings.catch_warnings():
-        # TODO: this uses deprecated Glib attributes, silence for now
-        warnings.simplefilter('ignore', PyGIDeprecationWarning)
-        globals()[name] = getattr(GLib, name)
-    deprecated_attr("GObject", name, "GLib." + name)
-    __all__.append(name)
-
-
-for name in ['G_MININT8', 'G_MAXINT8', 'G_MAXUINT8', 'G_MININT16',
-             'G_MAXINT16', 'G_MAXUINT16', 'G_MININT32', 'G_MAXINT32',
-             'G_MAXUINT32', 'G_MININT64', 'G_MAXINT64', 'G_MAXUINT64']:
-    new_name = name.split("_", 1)[-1]
-    globals()[name] = getattr(GLib, new_name)
-    deprecated_attr("GObject", name, "GLib." + new_name)
-    __all__.append(name)
-
-# these are not currently exported in GLib gir, presumably because they are
-# platform dependent; so get them from our static bindings
-for name in ['G_MINFLOAT', 'G_MAXFLOAT', 'G_MINDOUBLE', 'G_MAXDOUBLE',
-             'G_MINSHORT', 'G_MAXSHORT', 'G_MAXUSHORT', 'G_MININT', 'G_MAXINT',
-             'G_MAXUINT', 'G_MINLONG', 'G_MAXLONG', 'G_MAXULONG', 'G_MAXSIZE',
-             'G_MINSSIZE', 'G_MAXSSIZE', 'G_MINOFFSET', 'G_MAXOFFSET']:
-    new_name = name.split("_", 1)[-1]
-    globals()[name] = getattr(GLib, new_name)
-    deprecated_attr("GObject", name, "GLib." + new_name)
-    __all__.append(name)
-
-
-TYPE_INVALID = GObjectModule.type_from_name('invalid')
-TYPE_NONE = GObjectModule.type_from_name('void')
-TYPE_INTERFACE = GObjectModule.type_from_name('GInterface')
-TYPE_CHAR = GObjectModule.type_from_name('gchar')
-TYPE_UCHAR = GObjectModule.type_from_name('guchar')
-TYPE_BOOLEAN = GObjectModule.type_from_name('gboolean')
-TYPE_INT = GObjectModule.type_from_name('gint')
-TYPE_UINT = GObjectModule.type_from_name('guint')
-TYPE_LONG = GObjectModule.type_from_name('glong')
-TYPE_ULONG = GObjectModule.type_from_name('gulong')
-TYPE_INT64 = GObjectModule.type_from_name('gint64')
-TYPE_UINT64 = GObjectModule.type_from_name('guint64')
-TYPE_ENUM = GObjectModule.type_from_name('GEnum')
-TYPE_FLAGS = GObjectModule.type_from_name('GFlags')
-TYPE_FLOAT = GObjectModule.type_from_name('gfloat')
-TYPE_DOUBLE = GObjectModule.type_from_name('gdouble')
-TYPE_STRING = GObjectModule.type_from_name('gchararray')
-TYPE_POINTER = GObjectModule.type_from_name('gpointer')
-TYPE_BOXED = GObjectModule.type_from_name('GBoxed')
-TYPE_PARAM = GObjectModule.type_from_name('GParam')
-TYPE_OBJECT = GObjectModule.type_from_name('GObject')
-TYPE_PYOBJECT = GObjectModule.type_from_name('PyObject')
-TYPE_GTYPE = GObjectModule.type_from_name('GType')
-TYPE_STRV = GObjectModule.type_from_name('GStrv')
-TYPE_VARIANT = GObjectModule.type_from_name('GVariant')
-TYPE_GSTRING = GObjectModule.type_from_name('GString')
-TYPE_VALUE = GObjectModule.Value.__gtype__
-TYPE_UNICHAR = TYPE_UINT
-__all__ += ['TYPE_INVALID', 'TYPE_NONE', 'TYPE_INTERFACE', 'TYPE_CHAR',
-            'TYPE_UCHAR', 'TYPE_BOOLEAN', 'TYPE_INT', 'TYPE_UINT', 'TYPE_LONG',
-            'TYPE_ULONG', 'TYPE_INT64', 'TYPE_UINT64', 'TYPE_ENUM', 'TYPE_FLAGS',
-            'TYPE_FLOAT', 'TYPE_DOUBLE', 'TYPE_STRING', 'TYPE_POINTER',
-            'TYPE_BOXED', 'TYPE_PARAM', 'TYPE_OBJECT', 'TYPE_PYOBJECT',
-            'TYPE_GTYPE', 'TYPE_STRV', 'TYPE_VARIANT', 'TYPE_GSTRING',
-            'TYPE_UNICHAR', 'TYPE_VALUE']
-
-
-# Deprecated, use GLib directly
-for name in ['Pid', 'GError', 'OptionGroup', 'OptionContext']:
-    globals()[name] = getattr(GLib, name)
-    deprecated_attr("GObject", name, "GLib." + name)
-    __all__.append(name)
-
-
-# Deprecated, use: GObject.ParamFlags.* directly
-for name in ['PARAM_CONSTRUCT', 'PARAM_CONSTRUCT_ONLY', 'PARAM_LAX_VALIDATION',
-             'PARAM_READABLE', 'PARAM_WRITABLE']:
-    new_name = name.split("_", 1)[-1]
-    globals()[name] = getattr(GObjectModule.ParamFlags, new_name)
-    deprecated_attr("GObject", name, "GObject.ParamFlags." + new_name)
-    __all__.append(name)
-
-# PARAM_READWRITE should come from the gi module but cannot due to:
-# https://bugzilla.gnome.org/show_bug.cgi?id=687615
-PARAM_READWRITE = GObjectModule.ParamFlags.READABLE | \
-    GObjectModule.ParamFlags.WRITABLE
-__all__.append("PARAM_READWRITE")
-
-# READWRITE is part of ParamFlags since glib 2.42. Only mark PARAM_READWRITE as
-# deprecated in case ParamFlags.READWRITE is available. Also include the glib
-# version in the warning so it's clear that this needs a newer glib, unlike
-# the other ParamFlags related deprecations.
-# https://bugzilla.gnome.org/show_bug.cgi?id=726037
-if hasattr(GObjectModule.ParamFlags, "READWRITE"):
-    deprecated_attr("GObject", "PARAM_READWRITE",
-                    "GObject.ParamFlags.READWRITE (glib 2.42+)")
-
-
-# Deprecated, use: GObject.SignalFlags.* directly
-for name in ['SIGNAL_ACTION', 'SIGNAL_DETAILED', 'SIGNAL_NO_HOOKS',
-             'SIGNAL_NO_RECURSE', 'SIGNAL_RUN_CLEANUP', 'SIGNAL_RUN_FIRST',
-             'SIGNAL_RUN_LAST']:
-    new_name = name.split("_", 1)[-1]
-    globals()[name] = getattr(GObjectModule.SignalFlags, new_name)
-    deprecated_attr("GObject", name, "GObject.SignalFlags." + new_name)
-    __all__.append(name)
-
-# Static types
-GBoxed = _gi.GBoxed
-GEnum = _gi.GEnum
-GFlags = _gi.GFlags
-GInterface = _gi.GInterface
-GObject = _gi.GObject
-GObjectWeakRef = _gi.GObjectWeakRef
-GParamSpec = _gi.GParamSpec
-GPointer = _gi.GPointer
-GType = _gi.GType
-Warning = _gi.Warning
-__all__ += ['GBoxed', 'GEnum', 'GFlags', 'GInterface', 'GObject',
-            'GObjectWeakRef', 'GParamSpec', 'GPointer', 'GType',
-            'Warning']
-
-
-features = _gi.features
-list_properties = _gi.list_properties
-new = _gi.new
-pygobject_version = _gi.pygobject_version
-threads_init = GLib.threads_init
-type_register = _gi.type_register
-__all__ += ['features', 'list_properties', 'new',
-            'pygobject_version', 'threads_init', 'type_register']
-
-
-class Value(GObjectModule.Value):
-    def __init__(self, value_type=None, py_value=None):
-        GObjectModule.Value.__init__(self)
-        if value_type is not None:
-            self.init(value_type)
-            if py_value is not None:
-                self.set_value(py_value)
-
-    def __del__(self):
-        if self._free_on_dealloc and self.g_type != TYPE_INVALID:
-            self.unset()
-
-        # We must call base class __del__() after unset.
-        super(Value, self).__del__()
-
-    def set_boxed(self, boxed):
-        # Workaround the introspection marshalers inability to know
-        # these methods should be marshaling boxed types. This is because
-        # the type information is stored on the GValue.
-        _gi._gvalue_set(self, boxed)
-
-    def get_boxed(self):
-        return _gi._gvalue_get(self)
-
-    def set_value(self, py_value):
-        gtype = self.g_type
-
-        if gtype == _gi.TYPE_INVALID:
-            raise TypeError("GObject.Value needs to be initialized first")
-        elif gtype == TYPE_BOOLEAN:
-            self.set_boolean(py_value)
-        elif gtype == TYPE_CHAR:
-            self.set_char(py_value)
-        elif gtype == TYPE_UCHAR:
-            self.set_uchar(py_value)
-        elif gtype == TYPE_INT:
-            self.set_int(py_value)
-        elif gtype == TYPE_UINT:
-            self.set_uint(py_value)
-        elif gtype == TYPE_LONG:
-            self.set_long(py_value)
-        elif gtype == TYPE_ULONG:
-            self.set_ulong(py_value)
-        elif gtype == TYPE_INT64:
-            self.set_int64(py_value)
-        elif gtype == TYPE_UINT64:
-            self.set_uint64(py_value)
-        elif gtype == TYPE_FLOAT:
-            self.set_float(py_value)
-        elif gtype == TYPE_DOUBLE:
-            self.set_double(py_value)
-        elif gtype == TYPE_STRING:
-            if isinstance(py_value, str):
-                py_value = str(py_value)
-            elif sys.version_info < (3, 0):
-                if isinstance(py_value, unicode):
-                    py_value = py_value.encode('UTF-8')
-                else:
-                    raise ValueError("Expected string or unicode but got %s%s" %
-                                     (py_value, type(py_value)))
-            else:
-                raise ValueError("Expected string but got %s%s" %
-                                 (py_value, type(py_value)))
-            self.set_string(py_value)
-        elif gtype == TYPE_PARAM:
-            self.set_param(py_value)
-        elif gtype.is_a(TYPE_ENUM):
-            self.set_enum(py_value)
-        elif gtype.is_a(TYPE_FLAGS):
-            self.set_flags(py_value)
-        elif gtype.is_a(TYPE_BOXED):
-            self.set_boxed(py_value)
-        elif gtype == TYPE_POINTER:
-            self.set_pointer(py_value)
-        elif gtype.is_a(TYPE_OBJECT):
-            self.set_object(py_value)
-        elif gtype == TYPE_UNICHAR:
-            self.set_uint(int(py_value))
-        # elif gtype == TYPE_OVERRIDE:
-        #     pass
-        elif gtype == TYPE_GTYPE:
-            self.set_gtype(py_value)
-        elif gtype == TYPE_VARIANT:
-            self.set_variant(py_value)
-        elif gtype == TYPE_PYOBJECT:
-            self.set_boxed(py_value)
-        else:
-            raise TypeError("Unknown value type %s" % gtype)
-
-    def get_value(self):
-        gtype = self.g_type
-
-        if gtype == TYPE_BOOLEAN:
-            return self.get_boolean()
-        elif gtype == TYPE_CHAR:
-            return self.get_char()
-        elif gtype == TYPE_UCHAR:
-            return self.get_uchar()
-        elif gtype == TYPE_INT:
-            return self.get_int()
-        elif gtype == TYPE_UINT:
-            return self.get_uint()
-        elif gtype == TYPE_LONG:
-            return self.get_long()
-        elif gtype == TYPE_ULONG:
-            return self.get_ulong()
-        elif gtype == TYPE_INT64:
-            return self.get_int64()
-        elif gtype == TYPE_UINT64:
-            return self.get_uint64()
-        elif gtype == TYPE_FLOAT:
-            return self.get_float()
-        elif gtype == TYPE_DOUBLE:
-            return self.get_double()
-        elif gtype == TYPE_STRING:
-            return self.get_string()
-        elif gtype == TYPE_PARAM:
-            return self.get_param()
-        elif gtype.is_a(TYPE_ENUM):
-            return self.get_enum()
-        elif gtype.is_a(TYPE_FLAGS):
-            return self.get_flags()
-        elif gtype.is_a(TYPE_BOXED):
-            return self.get_boxed()
-        elif gtype == TYPE_POINTER:
-            return self.get_pointer()
-        elif gtype.is_a(TYPE_OBJECT):
-            return self.get_object()
-        elif gtype == TYPE_UNICHAR:
-            return self.get_uint()
-        elif gtype == TYPE_GTYPE:
-            return self.get_gtype()
-        elif gtype == TYPE_VARIANT:
-            return self.get_variant()
-        elif gtype == TYPE_PYOBJECT:
-            pass
-        else:
-            return None
-
-    def __repr__(self):
-        return '<Value (%s) %s>' % (self.g_type.name, self.get_value())
-
-
-Value = override(Value)
-__all__.append('Value')
-
-
-def type_from_name(name):
-    type_ = GObjectModule.type_from_name(name)
-    if type_ == TYPE_INVALID:
-        raise RuntimeError('unknown type name: %s' % name)
-    return type_
-
-
-__all__.append('type_from_name')
-
-
-def type_parent(type_):
-    parent = GObjectModule.type_parent(type_)
-    if parent == TYPE_INVALID:
-        raise RuntimeError('no parent for type')
-    return parent
-
-
-__all__.append('type_parent')
-
-
-def _validate_type_for_signal_method(type_):
-    if hasattr(type_, '__gtype__'):
-        type_ = type_.__gtype__
-    if not type_.is_instantiatable() and not type_.is_interface():
-        raise TypeError('type must be instantiable or an interface, got %s' % type_)
-
-
-def signal_list_ids(type_):
-    _validate_type_for_signal_method(type_)
-    return GObjectModule.signal_list_ids(type_)
-
-
-__all__.append('signal_list_ids')
-
-
-def signal_list_names(type_):
-    ids = signal_list_ids(type_)
-    return tuple(GObjectModule.signal_name(i) for i in ids)
-
-
-__all__.append('signal_list_names')
-
-
-def signal_lookup(name, type_):
-    _validate_type_for_signal_method(type_)
-    return GObjectModule.signal_lookup(name, type_)
-
-
-__all__.append('signal_lookup')
-
-
-SignalQuery = namedtuple('SignalQuery',
-                         ['signal_id',
-                          'signal_name',
-                          'itype',
-                          'signal_flags',
-                          'return_type',
-                          # n_params',
-                          'param_types'])
-
-
-def signal_query(id_or_name, type_=None):
-    if type_ is not None:
-        id_or_name = signal_lookup(id_or_name, type_)
-
-    res = GObjectModule.signal_query(id_or_name)
-    if res is None:
-        return None
-
-    if res.signal_id == 0:
-        return None
-
-    # Return a named tuple to allows indexing which is compatible with the
-    # static bindings along with field like access of the gi struct.
-    # Note however that the n_params was not returned from the static bindings
-    # so we must skip over it.
-    return SignalQuery(res.signal_id, res.signal_name, res.itype,
-                       res.signal_flags, res.return_type,
-                       tuple(res.param_types))
-
-
-__all__.append('signal_query')
-
-
-class _HandlerBlockManager(object):
-    def __init__(self, obj, handler_id):
-        self.obj = obj
-        self.handler_id = handler_id
-
-    def __enter__(self):
-        pass
-
-    def __exit__(self, exc_type, exc_value, traceback):
-        GObjectModule.signal_handler_unblock(self.obj, self.handler_id)
-
-
-def signal_handler_block(obj, handler_id):
-    """Blocks the signal handler from being invoked until
-    handler_unblock() is called.
-
-    :param GObject.Object obj:
-        Object instance to block handlers for.
-    :param int handler_id:
-        Id of signal to block.
-    :returns:
-        A context manager which optionally can be used to
-        automatically unblock the handler:
-
-    .. code-block:: python
-
-        with GObject.signal_handler_block(obj, id):
-            pass
-    """
-    GObjectModule.signal_handler_block(obj, handler_id)
-    return _HandlerBlockManager(obj, handler_id)
-
-
-__all__.append('signal_handler_block')
-
-
-def signal_parse_name(detailed_signal, itype, force_detail_quark):
-    """Parse a detailed signal name into (signal_id, detail).
-
-    :param str detailed_signal:
-        Signal name which can include detail.
-        For example: "notify:prop_name"
-    :returns:
-        Tuple of (signal_id, detail)
-    :raises ValueError:
-        If the given signal is unknown.
-    """
-    res, signal_id, detail = GObjectModule.signal_parse_name(detailed_signal, itype,
-                                                             force_detail_quark)
-    if res:
-        return signal_id, detail
-    else:
-        raise ValueError('%s: unknown signal name: %s' % (itype, detailed_signal))
-
-
-__all__.append('signal_parse_name')
-
-
-def remove_emission_hook(obj, detailed_signal, hook_id):
-    signal_id, detail = signal_parse_name(detailed_signal, obj, True)
-    GObjectModule.signal_remove_emission_hook(signal_id, hook_id)
-
-
-__all__.append('remove_emission_hook')
-
-
-# GObject accumulators with pure Python implementations
-# These return a tuple of (continue_emission, accumulation_result)
-
-def signal_accumulator_first_wins(ihint, return_accu, handler_return, user_data=None):
-    # Stop emission but return the result of the last handler
-    return (False, handler_return)
-
-
-__all__.append('signal_accumulator_first_wins')
-
-
-def signal_accumulator_true_handled(ihint, return_accu, handler_return, user_data=None):
-    # Stop emission if the last handler returns True
-    return (not handler_return, handler_return)
-
-
-__all__.append('signal_accumulator_true_handled')
-
-
-# Statically bound signal functions which need to clobber GI (for now)
-
-add_emission_hook = _gi.add_emission_hook
-signal_new = _gi.signal_new
-
-__all__ += ['add_emission_hook', 'signal_new']
-
-
-class _FreezeNotifyManager(object):
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __enter__(self):
-        pass
-
-    def __exit__(self, exc_type, exc_value, traceback):
-        self.obj.thaw_notify()
-
-
-def _signalmethod(func):
-    # Function wrapper for signal functions used as instance methods.
-    # This is needed when the signal functions come directly from GI.
-    # (they are not already wrapped)
-    @gi.overrides.wraps(func)
-    def meth(*args, **kwargs):
-        return func(*args, **kwargs)
-    return meth
-
-
-class Object(GObjectModule.Object):
-    def _unsupported_method(self, *args, **kargs):
-        raise RuntimeError('This method is currently unsupported.')
-
-    def _unsupported_data_method(self, *args, **kargs):
-        raise RuntimeError('Data access methods are unsupported. '
-                           'Use normal Python attributes instead')
-
-    # Generic data methods are not needed in python as it can be handled
-    # with standard attribute access: https://bugzilla.gnome.org/show_bug.cgi?id=641944
-    get_data = _unsupported_data_method
-    get_qdata = _unsupported_data_method
-    set_data = _unsupported_data_method
-    steal_data = _unsupported_data_method
-    steal_qdata = _unsupported_data_method
-    replace_data = _unsupported_data_method
-    replace_qdata = _unsupported_data_method
-
-    # The following methods as unsupported until we verify
-    # they work as gi methods.
-    bind_property_full = _unsupported_method
-    compat_control = _unsupported_method
-    interface_find_property = _unsupported_method
-    interface_install_property = _unsupported_method
-    interface_list_properties = _unsupported_method
-    notify_by_pspec = _unsupported_method
-    run_dispose = _unsupported_method
-    watch_closure = _unsupported_method
-
-    # Make all reference management methods private but still accessible.
-    _ref = GObjectModule.Object.ref
-    _ref_sink = GObjectModule.Object.ref_sink
-    _unref = GObjectModule.Object.unref
-    _force_floating = GObjectModule.Object.force_floating
-
-    ref = _unsupported_method
-    ref_sink = _unsupported_method
-    unref = _unsupported_method
-    force_floating = _unsupported_method
-
-    # The following methods are static APIs which need to leap frog the
-    # gi methods until we verify the gi methods can replace them.
-    get_property = _gi.GObject.get_property
-    get_properties = _gi.GObject.get_properties
-    set_property = _gi.GObject.set_property
-    set_properties = _gi.GObject.set_properties
-    bind_property = _gi.GObject.bind_property
-    connect = _gi.GObject.connect
-    connect_after = _gi.GObject.connect_after
-    connect_object = _gi.GObject.connect_object
-    connect_object_after = _gi.GObject.connect_object_after
-    disconnect_by_func = _gi.GObject.disconnect_by_func
-    handler_block_by_func = _gi.GObject.handler_block_by_func
-    handler_unblock_by_func = _gi.GObject.handler_unblock_by_func
-    emit = _gi.GObject.emit
-    chain = _gi.GObject.chain
-    weak_ref = _gi.GObject.weak_ref
-    __copy__ = _gi.GObject.__copy__
-    __deepcopy__ = _gi.GObject.__deepcopy__
-
-    def freeze_notify(self):
-        """Freezes the object's property-changed notification queue.
-
-        :returns:
-            A context manager which optionally can be used to
-            automatically thaw notifications.
-
-        This will freeze the object so that "notify" signals are blocked until
-        the thaw_notify() method is called.
-
-        .. code-block:: python
-
-            with obj.freeze_notify():
-                pass
-        """
-        super(Object, self).freeze_notify()
-        return _FreezeNotifyManager(self)
-
-    def connect_data(self, detailed_signal, handler, *data, **kwargs):
-        """Connect a callback to the given signal with optional user data.
-
-        :param str detailed_signal:
-            A detailed signal to connect to.
-        :param callable handler:
-            Callback handler to connect to the signal.
-        :param *data:
-            Variable data which is passed through to the signal handler.
-        :param GObject.ConnectFlags connect_flags:
-            Flags used for connection options.
-        :returns:
-            A signal id which can be used with disconnect.
-        """
-        flags = kwargs.get('connect_flags', 0)
-        if flags & GObjectModule.ConnectFlags.AFTER:
-            connect_func = _gi.GObject.connect_after
-        else:
-            connect_func = _gi.GObject.connect
-
-        if flags & GObjectModule.ConnectFlags.SWAPPED:
-            if len(data) != 1:
-                raise ValueError('Using GObject.ConnectFlags.SWAPPED requires exactly '
-                                 'one argument for user data, got: %s' % [data])
-
-            def new_handler(obj, *args):
-                # Swap obj with the last element in args which will be the user
-                # data passed to the connect function.
-                args = list(args)
-                swap = args.pop()
-                args = args + [obj]
-                return handler(swap, *args)
-        else:
-            new_handler = handler
-
-        return connect_func(self, detailed_signal, new_handler, *data)
-
-    #
-    # Aliases
-    #
-
-    handler_block = signal_handler_block
-    handler_unblock = _signalmethod(GObjectModule.signal_handler_unblock)
-    disconnect = _signalmethod(GObjectModule.signal_handler_disconnect)
-    handler_disconnect = _signalmethod(GObjectModule.signal_handler_disconnect)
-    handler_is_connected = _signalmethod(GObjectModule.signal_handler_is_connected)
-    stop_emission_by_name = _signalmethod(GObjectModule.signal_stop_emission_by_name)
-
-    #
-    # Deprecated Methods
-    #
-
-    def stop_emission(self, detailed_signal):
-        """Deprecated, please use stop_emission_by_name."""
-        warnings.warn(self.stop_emission.__doc__, PyGIDeprecationWarning, stacklevel=2)
-        return self.stop_emission_by_name(detailed_signal)
-
-    emit_stop_by_name = stop_emission
-
-
-Object = override(Object)
-GObject = Object
-__all__ += ['Object', 'GObject']
-
-
-class Binding(GObjectModule.Binding):
-    def __call__(self):
-        warnings.warn('Using parentheses (binding()) to retrieve the Binding object is no '
-                      'longer needed because the binding is returned directly from "bind_property.',
-                      PyGIDeprecationWarning, stacklevel=2)
-        return self
-
-    def unbind(self):
-        if hasattr(self, '_unbound'):
-            raise ValueError('binding has already been cleared out')
-        else:
-            setattr(self, '_unbound', True)
-            super(Binding, self).unbind()
-
-
-Binding = override(Binding)
-__all__.append('Binding')
-
-
-Property = propertyhelper.Property
-Signal = signalhelper.Signal
-SignalOverride = signalhelper.SignalOverride
-# Deprecated naming "property" available for backwards compatibility.
-# Keep this at the end of the file to avoid clobbering the builtin.
-property = Property
-deprecated_attr("GObject", "property", "GObject.Property")
-__all__ += ['Property', 'Signal', 'SignalOverride', 'property']
index bf1b9af..604ac37 100644 (file)
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-import sys
-import warnings
+from ..overrides import override
+from ..importer import modules
 
-from ..overrides import override, strip_boolean_result
-from ..module import get_introspection_module
-from gi import PyGIDeprecationWarning, require_version
+import sys
 
-Gdk = get_introspection_module('Gdk')
+Gdk = modules['Gdk']._introspection_module
 
 __all__ = []
 
 
-# https://bugzilla.gnome.org/show_bug.cgi?id=673396
-try:
-    require_version("GdkX11", Gdk._version)
-    from gi.repository import GdkX11
-    GdkX11  # pyflakes
-except (ValueError, ImportError):
-    pass
-
-if hasattr(Gdk, 'Color'):
-    # Gdk.Color was deprecated since 3.14 and dropped in Gtk+-4.0
-    class Color(Gdk.Color):
-        MAX_VALUE = 65535
-
-        def __init__(self, red, green, blue):
-            Gdk.Color.__init__(self)
-            self.red = red
-            self.green = green
-            self.blue = blue
-
-        def __eq__(self, other):
-            return self.equal(other)
-
-        def __repr__(self):
-            return 'Gdk.Color(red=%d, green=%d, blue=%d)' % (self.red, self.green, self.blue)
-
-        red_float = property(fget=lambda self: self.red / float(self.MAX_VALUE),
-                             fset=lambda self, v: setattr(self, 'red', int(v * self.MAX_VALUE)))
-
-        green_float = property(fget=lambda self: self.green / float(self.MAX_VALUE),
-                               fset=lambda self, v: setattr(self, 'green', int(v * self.MAX_VALUE)))
-
-        blue_float = property(fget=lambda self: self.blue / float(self.MAX_VALUE),
-                              fset=lambda self, v: setattr(self, 'blue', int(v * self.MAX_VALUE)))
+class Color(Gdk.Color):
 
-        def to_floats(self):
-            """Return (red_float, green_float, blue_float) triple."""
+    def __init__(self, red, green, blue):
+        Gdk.Color.__init__(self)
+        self.red = red
+        self.green = green
+        self.blue = blue
 
-            return (self.red_float, self.green_float, self.blue_float)
+    def __new__(cls, *args, **kwargs):
+        return Gdk.Color.__new__(cls)
 
-        @staticmethod
-        def from_floats(red, green, blue):
-            """Return a new Color object from red/green/blue values from 0.0 to 1.0."""
+    def __eq__(self, other):
+        return self.equal(other)
 
-            return Color(int(red * Color.MAX_VALUE),
-                         int(green * Color.MAX_VALUE),
-                         int(blue * Color.MAX_VALUE))
+    def __repr__(self):
+        return '<Gdk.Color(red=%d, green=%d, blue=%d)>' % (self.red, self.green, self.blue)
 
-    Color = override(Color)
-    __all__.append('Color')
+Color = override(Color)
+__all__.append('Color')
 
-if hasattr(Gdk, 'RGBA'):
-    # Introduced since Gtk+-3.0
+if Gdk._version == '3.0':
     class RGBA(Gdk.RGBA):
         def __init__(self, red=1.0, green=1.0, blue=1.0, alpha=1.0):
             Gdk.RGBA.__init__(self)
@@ -91,32 +58,14 @@ if hasattr(Gdk, 'RGBA'):
             self.blue = blue
             self.alpha = alpha
 
+        def __new__(cls, *args, **kwargs):
+            return Gdk.RGBA.__new__(cls)
+
         def __eq__(self, other):
             return self.equal(other)
 
         def __repr__(self):
-            return 'Gdk.RGBA(red=%f, green=%f, blue=%f, alpha=%f)' % (self.red, self.green, self.blue, self.alpha)
-
-        def __iter__(self):
-            """Iterator which allows easy conversion to tuple and list types."""
-
-            yield self.red
-            yield self.green
-            yield self.blue
-            yield self.alpha
-
-        def to_color(self):
-            """Converts this RGBA into a Color instance which excludes alpha."""
-
-            return Color(int(self.red * Color.MAX_VALUE),
-                         int(self.green * Color.MAX_VALUE),
-                         int(self.blue * Color.MAX_VALUE))
-
-        @classmethod
-        def from_color(cls, color):
-            """Returns a new RGBA instance given a Color instance."""
-
-            return cls(color.red_float, color.green_float, color.blue_float)
+            return '<Gdk.Color(red=%f, green=%f, blue=%f, alpha=%f)>' % (self.red, self.green, self.blue, self.alpha)
 
     RGBA = override(RGBA)
     __all__.append('RGBA')
@@ -131,28 +80,19 @@ if Gdk._version == '2.0':
             self.width = width
             self.height = height
 
+        def __new__(cls, *args, **kwargs):
+            return Gdk.Rectangle.__new__(cls)
+
         def __repr__(self):
-            return 'Gdk.Rectangle(x=%d, y=%d, width=%d, height=%d)' % (self.x, self.y, self.height, self.width)
+            return '<Gdk.Rectangle(x=%d, y=%d, width=%d, height=%d)>' % (self.x, self.y, self.height, self.width)
 
     Rectangle = override(Rectangle)
     __all__.append('Rectangle')
 else:
-    # Newer GTK+/gobject-introspection (3.17.x) include GdkRectangle in the
-    # typelib. See https://bugzilla.gnome.org/show_bug.cgi?id=748832 and
-    # https://bugzilla.gnome.org/show_bug.cgi?id=748833
-    if not hasattr(Gdk, 'Rectangle'):
-        from gi.repository import cairo as _cairo
-        Rectangle = _cairo.RectangleInt
-
-        __all__.append('Rectangle')
-    else:
-        # https://bugzilla.gnome.org/show_bug.cgi?id=756364
-        # These methods used to be functions, keep aliases for backwards compat
-        rectangle_intersect = Gdk.Rectangle.intersect
-        rectangle_union = Gdk.Rectangle.union
-
-        __all__.append('rectangle_intersect')
-        __all__.append('rectangle_union')
+    from gi.repository import cairo as _cairo
+    Rectangle = _cairo.RectangleInt
+
+    __all__.append('Rectangle')
 
 if Gdk._version == '2.0':
     class Drawable(Gdk.Drawable):
@@ -218,14 +158,8 @@ class Event(Gdk.Event):
     if Gdk._version == '2.0':
         _UNION_MEMBERS[Gdk.EventType.NO_EXPOSE] = 'no_expose'
 
-    if hasattr(Gdk.EventType, 'TOUCH_BEGIN'):
-        _UNION_MEMBERS.update(
-            {
-                Gdk.EventType.TOUCH_BEGIN: 'touch',
-                Gdk.EventType.TOUCH_UPDATE: 'touch',
-                Gdk.EventType.TOUCH_END: 'touch',
-                Gdk.EventType.TOUCH_CANCEL: 'touch',
-            })
+    def __new__(cls, *args, **kwargs):
+        return Gdk.Event.__new__(cls)
 
     def __getattr__(self, name):
         real_event = getattr(self, '_UNION_MEMBERS').get(self.type)
@@ -234,18 +168,6 @@ class Event(Gdk.Event):
         else:
             raise AttributeError("'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
 
-    def __setattr__(self, name, value):
-        real_event = getattr(self, '_UNION_MEMBERS').get(self.type)
-        if real_event:
-            setattr(getattr(self, real_event), name, value)
-        else:
-            Gdk.Event.__setattr__(self, name, value)
-
-    def __repr__(self):
-        base_repr = Gdk.Event.__repr__(self).strip("><")
-        return "<%s type=%r>" % (base_repr, self.type)
-
-
 Event = override(Event)
 __all__.append('Event')
 
@@ -278,10 +200,6 @@ event_member_classes = ['EventAny',
 if Gdk._version == '2.0':
     event_member_classes.append('EventNoExpose')
 
-if hasattr(Gdk, 'EventTouch'):
-    event_member_classes.append('EventTouch')
-
-
 # whitelist all methods that have a success return we want to mask
 gsuccess_mask_funcs = ['get_state',
                        'get_axis',
@@ -289,6 +207,19 @@ gsuccess_mask_funcs = ['get_state',
                        'get_root_coords']
 
 
+def _gsuccess_mask(func):
+    def cull_success(*args):
+        result = func(*args)
+        success = result[0]
+        if success == False:
+            return None
+        else:
+            if len(result) == 2:
+                return result[1]
+            else:
+                return result[1:]
+    return cull_success
+
 for event_class in event_member_classes:
     override_class = type(event_class, (getattr(Gdk, event_class),), {})
     # add the event methods
@@ -301,7 +232,7 @@ for event_class in event_member_classes:
 
         # use the _gsuccess_mask decorator if this method is whitelisted
         if name in gsuccess_mask_funcs:
-            event_method = strip_boolean_result(event_method)
+            event_method = _gsuccess_mask(event_method)
         setattr(override_class, name, event_method)
 
     setattr(module, event_class, override_class)
@@ -312,88 +243,63 @@ for event_class in event_member_classes:
 
 class DragContext(Gdk.DragContext):
     def finish(self, success, del_, time):
-        Gtk = get_introspection_module('Gtk')
+        Gtk = modules['Gtk']._introspection_module
         Gtk.drag_finish(self, success, del_, time)
 
-
 DragContext = override(DragContext)
 __all__.append('DragContext')
 
 
 class Cursor(Gdk.Cursor):
-
     def __new__(cls, *args, **kwds):
         arg_len = len(args)
         kwd_len = len(kwds)
         total_len = arg_len + kwd_len
 
-        if total_len == 1:
-            if Gdk._version == "4.0":
-                raise ValueError("Wrong number of parameters")
-            # Since g_object_newv (super.__new__) does not seem valid for
-            # direct use with GdkCursor, we must assume usage of at least
-            # one of the C constructors to be valid.
-            return cls.new(*args, **kwds)
+        def _new(cursor_type):
+            return cls.new(cursor_type)
 
-        elif total_len == 2:
-            warnings.warn('Calling "Gdk.Cursor(display, cursor_type)" has been deprecated. '
-                          'Please use Gdk.Cursor.new_for_display(display, cursor_type). '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations',
-                          PyGIDeprecationWarning)
-            return cls.new_for_display(*args, **kwds)
+        def _new_for_display(display, cursor_type):
+            return cls.new_for_display(display, cursor_type)
 
-        elif total_len == 4:
-            warnings.warn('Calling "Gdk.Cursor(display, pixbuf, x, y)" has been deprecated. '
-                          'Please use Gdk.Cursor.new_from_pixbuf(display, pixbuf, x, y). '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations',
-                          PyGIDeprecationWarning)
-            return cls.new_from_pixbuf(*args, **kwds)
+        def _new_from_pixbuf(display, pixbuf, x, y):
+            return cls.new_from_pixbuf(display, pixbuf, x, y)
 
+        def _new_from_pixmap(source, mask, fg, bg, x, y):
+            return cls.new_from_pixmap(source, mask, fg, bg, x, y)
+
+        _constructor = None
+        if total_len == 1:
+            _constructor = _new
+        elif total_len == 2:
+            _constructor = _new_for_display
+        elif total_len == 4:
+            _constructor = _new_from_pixbuf
         elif total_len == 6:
             if Gdk._version != '2.0':
                 # pixmaps don't exist in Gdk 3.0
                 raise ValueError("Wrong number of parameters")
-
-            warnings.warn('Calling "Gdk.Cursor(source, mask, fg, bg, x, y)" has been deprecated. '
-                          'Please use Gdk.Cursor.new_from_pixmap(source, mask, fg, bg, x, y). '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations',
-                          PyGIDeprecationWarning)
-            return cls.new_from_pixmap(*args, **kwds)
-
+            _constructor = _new_from_pixmap
         else:
             raise ValueError("Wrong number of parameters")
 
+        return _constructor(*args, **kwds)
+
+    def __init__(self, *args, **kwargs):
+        Gdk.Cursor.__init__(self)
 
 Cursor = override(Cursor)
 __all__.append('Cursor')
 
-if hasattr(Gdk, 'color_parse'):
-    # Gdk.Color was deprecated since 3.14 and dropped in Gtk+-4.0
-    color_parse = strip_boolean_result(Gdk.color_parse)
-    __all__.append('color_parse')
+_Gdk_color_parse = Gdk.color_parse
 
 
-# Note, we cannot override the entire class as Gdk.Atom has no gtype, so just
-# hack some individual methods
-def _gdk_atom_str(atom):
-    n = atom.name()
-    if n:
-        return n
-    # fall back to atom index
-    return 'Gdk.Atom<%i>' % hash(atom)
-
-
-def _gdk_atom_repr(atom):
-    n = atom.name()
-    if n:
-        return 'Gdk.Atom.intern("%s", False)' % n
-    # fall back to atom index
-    return '<Gdk.Atom(%i)>' % hash(atom)
-
-
-Gdk.Atom.__str__ = _gdk_atom_str
-Gdk.Atom.__repr__ = _gdk_atom_repr
-
+@override(Gdk.color_parse)
+def color_parse(color):
+    success, color = _Gdk_color_parse(color)
+    if not success:
+        return None
+    return color
 
 # constants
 if Gdk._version >= '3.0':
@@ -445,6 +351,8 @@ if Gdk._version >= '3.0':
     SELECTION_TYPE_STRING = Gdk.atom_intern('STRING', True)
     __all__.append('SELECTION_TYPE_STRING')
 
-if Gdk._version in ('2.0', '3.0'):
-    import sys
-    initialized, argv = Gdk.init_check(sys.argv)
+import sys
+
+initialized, argv = Gdk.init_check(sys.argv)
+if not initialized:
+    raise RuntimeError("Gdk couldn't be initialized")
index cdb3ccb..4a4b404 100644 (file)
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-import warnings
-
-from ..overrides import override, deprecated_init
-from ..module import get_introspection_module
-from gi import PyGIWarning
+from ..overrides import override
+from ..importer import modules
 
 from gi.repository import GLib
 
 import sys
 
-Gio = get_introspection_module('Gio')
+Gio = modules['Gio']._introspection_module
 
 __all__ = []
 
 
-class VolumeMonitor(Gio.VolumeMonitor):
-
-    def __init__(self, *args, **kwargs):
-        super(VolumeMonitor, self).__init__(*args, **kwargs)
-
-        # https://bugzilla.gnome.org/show_bug.cgi?id=744690
-        warnings.warn(
-            "Gio.VolumeMonitor shouldn't be instantiated directly, "
-            "use Gio.VolumeMonitor.get() instead.",
-            PyGIWarning, stacklevel=2)
-
-
-VolumeMonitor = override(VolumeMonitor)
-__all__.append('VolumeMonitor')
-
-
 class FileEnumerator(Gio.FileEnumerator):
     def __iter__(self):
         return self
@@ -69,21 +50,11 @@ FileEnumerator = override(FileEnumerator)
 __all__.append('FileEnumerator')
 
 
-class MenuItem(Gio.MenuItem):
-    def set_attribute(self, attributes):
-        for (name, format_string, value) in attributes:
-            self.set_attribute_value(name, GLib.Variant(format_string, value))
-
-
-MenuItem = override(MenuItem)
-__all__.append('MenuItem')
-
-
 class Settings(Gio.Settings):
     '''Provide dictionary-like access to GLib.Settings.'''
 
-    __init__ = deprecated_init(Gio.Settings.__init__,
-                               arg_names=('schema', 'path', 'backend'))
+    def __init__(self, schema, path=None, backend=None, **kwargs):
+        Gio.Settings.__init__(self, schema=schema, backend=backend, path=path, **kwargs)
 
     def __contains__(self, key):
         return key in self.list_keys()
@@ -101,14 +72,14 @@ class Settings(Gio.Settings):
 
     def __getitem__(self, key):
         # get_value() aborts the program on an unknown key
-        if key not in self:
+        if not key in self:
             raise KeyError('unknown key: %r' % (key,))
 
         return self.get_value(key).unpack()
 
     def __setitem__(self, key, value):
         # set_value() aborts the program on an unknown key
-        if key not in self:
+        if not key in self:
             raise KeyError('unknown key: %r' % (key,))
 
         # determine type string of this key
@@ -120,22 +91,14 @@ class Settings(Gio.Settings):
             type_str = v.get_child_value(0).get_type_string()
             assert type_str.startswith('a')
             type_str = type_str[1:]
-        elif type_ == 'enum':
-            # v is an array with the allowed values
-            assert v.get_child_value(0).get_type_string().startswith('a')
-            type_str = v.get_child_value(0).get_child_value(0).get_type_string()
-            allowed = v.unpack()
-            if value not in allowed:
-                raise ValueError('value %s is not an allowed enum (%s)' % (value, allowed))
         else:
-            raise NotImplementedError('Cannot handle allowed type range class ' + str(type_))
+            raise NotImplementedError('Cannot handle allowed type range class' + str(type_))
 
         self.set_value(key, GLib.Variant(type_str, value))
 
     def keys(self):
         return self.list_keys()
 
-
 Settings = override(Settings)
 __all__.append('Settings')
 
@@ -178,17 +141,14 @@ class _DBusProxyMethodCall:
         if 'result_handler' in kwargs:
             # asynchronous call
             user_data = (kwargs['result_handler'],
-                         kwargs.get('error_handler'),
-                         kwargs.get('user_data'))
+                    kwargs.get('error_handler'), kwargs.get('user_data'))
             self.dbus_proxy.call(self.method_name, arg_variant,
-                                 kwargs.get('flags', 0), kwargs.get('timeout', -1), None,
-                                 self.__async_result_handler, user_data)
+                    kwargs.get('flags', 0), kwargs.get('timeout', -1), None,
+                    self.__async_result_handler, user_data)
         else:
             # synchronous call
             result = self.dbus_proxy.call_sync(self.method_name, arg_variant,
-                                               kwargs.get('flags', 0),
-                                               kwargs.get('timeout', -1),
-                                               None)
+                    kwargs.get('flags', 0), kwargs.get('timeout', -1), None)
             return self._unpack_result(result)
 
     @classmethod
@@ -255,6 +215,5 @@ class DBusProxy(Gio.DBusProxy):
     def __getattr__(self, name):
         return _DBusProxyMethodCall(self, name)
 
-
 DBusProxy = override(DBusProxy)
 __all__.append('DBusProxy')
index 08d2612..5ae61b2 100644 (file)
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-import collections
 import sys
-import warnings
-
 from gi.repository import GObject
-from ..overrides import override, strip_boolean_result, deprecated_init
-from ..module import get_introspection_module
-from gi import PyGIDeprecationWarning
+from ..overrides import override
+from ..importer import modules
 
 if sys.version_info >= (3, 0):
     _basestring = str
+    _callable = lambda c: hasattr(c, '__call__')
 else:
     _basestring = basestring
+    _callable = callable
 
-Gtk = get_introspection_module('Gtk')
-
+Gtk = modules['Gtk']._introspection_module
 __all__ = []
 
 if Gtk._version == '2.0':
+    import warnings
     warn_msg = "You have imported the Gtk 2.0 module.  Because Gtk 2.0 \
 was not designed for use with introspection some of the \
 interfaces and API will fail.  As such this is not supported \
@@ -48,98 +46,16 @@ python module to use with Gtk 2.0"
     warnings.warn(warn_msg, RuntimeWarning)
 
 
-class PyGTKDeprecationWarning(PyGIDeprecationWarning):
-    pass
-
-
-__all__.append('PyGTKDeprecationWarning')
-
-
-def _construct_target_list(targets):
-    """Create a list of TargetEntry items from a list of tuples in the form (target, flags, info)
-
-    The list can also contain existing TargetEntry items in which case the existing entry
-    is re-used in the return list.
-    """
-    target_entries = []
-    for entry in targets:
-        if not isinstance(entry, Gtk.TargetEntry):
-            entry = Gtk.TargetEntry.new(*entry)
-        target_entries.append(entry)
-    return target_entries
-
-
-__all__.append('_construct_target_list')
-
-
-def _extract_handler_and_args(obj_or_map, handler_name):
-    handler = None
-    if isinstance(obj_or_map, collections.Mapping):
-        handler = obj_or_map.get(handler_name, None)
-    else:
-        handler = getattr(obj_or_map, handler_name, None)
-
-    if handler is None:
-        raise AttributeError('Handler %s not found' % handler_name)
-
-    args = ()
-    if isinstance(handler, collections.Sequence):
-        if len(handler) == 0:
-            raise TypeError("Handler %s tuple can not be empty" % handler)
-        args = handler[1:]
-        handler = handler[0]
-
-    elif not callable(handler):
-        raise TypeError('Handler %s is not a method, function or tuple' % handler)
-
-    return handler, args
-
-
-# Exposed for unit-testing.
-__all__.append('_extract_handler_and_args')
-
-
-def _builder_connect_callback(builder, gobj, signal_name, handler_name, connect_obj, flags, obj_or_map):
-    handler, args = _extract_handler_and_args(obj_or_map, handler_name)
-
-    after = flags & GObject.ConnectFlags.AFTER
-    if connect_obj is not None:
-        if after:
-            gobj.connect_object_after(signal_name, handler, connect_obj, *args)
-        else:
-            gobj.connect_object(signal_name, handler, connect_obj, *args)
-    else:
-        if after:
-            gobj.connect_after(signal_name, handler, *args)
-        else:
-            gobj.connect(signal_name, handler, *args)
-
-
 class Widget(Gtk.Widget):
 
-    translate_coordinates = strip_boolean_result(Gtk.Widget.translate_coordinates)
-
-    def drag_dest_set_target_list(self, target_list):
-        if (target_list is not None) and (not isinstance(target_list, Gtk.TargetList)):
-            target_list = Gtk.TargetList.new(_construct_target_list(target_list))
-        super(Widget, self).drag_dest_set_target_list(target_list)
-
-    def drag_source_set_target_list(self, target_list):
-        if (target_list is not None) and (not isinstance(target_list, Gtk.TargetList)):
-            target_list = Gtk.TargetList.new(_construct_target_list(target_list))
-        super(Widget, self).drag_source_set_target_list(target_list)
-
-    def style_get_property(self, property_name, value=None):
-        if value is None:
-            prop = self.find_style_property(property_name)
-            if prop is None:
-                raise ValueError('Class "%s" does not contain style property "%s"' %
-                                 (self, property_name))
-            value = GObject.Value(prop.value_type)
-
-        Gtk.Widget.style_get_property(self, property_name, value)
-        return value.get_value()
+    def translate_coordinates(self, dest_widget, src_x, src_y):
+        success, dest_x, dest_y = super(Widget, self).translate_coordinates(
+            dest_widget, src_x, src_y)
+        if success:
+            return (dest_x, dest_y,)
 
+    def render_icon(self, stock_id, size, detail=None):
+        return super(Widget, self).render_icon(stock_id, size, detail)
 
 Widget = override(Widget)
 __all__.append('Widget')
@@ -162,29 +78,10 @@ class Container(Gtk.Container, Widget):
     # alias for Python 2.x object protocol
     __nonzero__ = __bool__
 
-    get_focus_chain = strip_boolean_result(Gtk.Container.get_focus_chain)
-
-    def child_get_property(self, child, property_name, value=None):
-        if value is None:
-            prop = self.find_child_property(property_name)
-            if prop is None:
-                raise ValueError('Class "%s" does not contain child property "%s"' %
-                                 (self, property_name))
-            value = GObject.Value(prop.value_type)
-
-        Gtk.Container.child_get_property(self, child, property_name, value)
-        return value.get_value()
-
-    def child_get(self, child, *prop_names):
-        """Returns a list of child property values for the given names."""
-        return [self.child_get_property(child, name) for name in prop_names]
-
-    def child_set(self, child, **kwargs):
-        """Set a child properties on the given child to key/value pairs."""
-        for name, value in kwargs.items():
-            name = name.replace('_', '-')
-            self.child_set_property(child, name, value)
-
+    def get_focus_chain(self):
+        success, widgets = super(Container, self).get_focus_chain()
+        if success:
+            return widgets
 
 Container = override(Container)
 __all__.append('Container')
@@ -193,267 +90,285 @@ __all__.append('Container')
 class Editable(Gtk.Editable):
 
     def insert_text(self, text, position):
-        return super(Editable, self).insert_text(text, -1, position)
+        pos = super(Editable, self).insert_text(text, -1, position)
 
-    get_selection_bounds = strip_boolean_result(Gtk.Editable.get_selection_bounds, fail_ret=())
+        return pos
 
+    def get_selection_bounds(self):
+        success, start_pos, end_pos = super(Editable, self).get_selection_bounds()
+        if success:
+            return (start_pos, end_pos,)
+        else:
+            return tuple()
 
 Editable = override(Editable)
 __all__.append("Editable")
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class Action(Gtk.Action):
-        __init__ = deprecated_init(Gtk.Action.__init__,
-                                   arg_names=('name', 'label', 'tooltip', 'stock_id'),
-                                   category=PyGTKDeprecationWarning)
-
-    Action = override(Action)
-    __all__.append("Action")
-
-    class RadioAction(Gtk.RadioAction):
-        __init__ = deprecated_init(Gtk.RadioAction.__init__,
-                                   arg_names=('name', 'label', 'tooltip', 'stock_id', 'value'),
-                                   category=PyGTKDeprecationWarning)
-
-    RadioAction = override(RadioAction)
-    __all__.append("RadioAction")
-
-    class ActionGroup(Gtk.ActionGroup):
-        __init__ = deprecated_init(Gtk.ActionGroup.__init__,
-                                   arg_names=('name',),
-                                   category=PyGTKDeprecationWarning)
-
-        def add_actions(self, entries, user_data=None):
-            """
-            The add_actions() method is a convenience method that creates a number
-            of gtk.Action  objects based on the information in the list of action
-            entry tuples contained in entries and adds them to the action group.
-            The entry tuples can vary in size from one to six items with the
-            following information:
-
-                * The name of the action. Must be specified.
-                * The stock id for the action. Optional with a default value of None
-                  if a label is specified.
-                * The label for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None if a stock id is specified.
-                * The accelerator for the action, in the format understood by the
-                  gtk.accelerator_parse() function. Optional with a default value of
-                  None.
-                * The tooltip for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None.
-                * The callback function invoked when the action is activated.
-                  Optional with a default value of None.
-
-            The "activate" signals of the actions are connected to the callbacks and
-            their accel paths are set to <Actions>/group-name/action-name.
-            """
-            try:
-                iter(entries)
-            except (TypeError):
-                raise TypeError('entries must be iterable')
-
-            def _process_action(name, stock_id=None, label=None, accelerator=None, tooltip=None, callback=None):
-                action = Action(name=name, label=label, tooltip=tooltip, stock_id=stock_id)
-                if callback is not None:
-                    if user_data is None:
-                        action.connect('activate', callback)
-                    else:
-                        action.connect('activate', callback, user_data)
-
-                self.add_action_with_accel(action, accelerator)
-
-            for e in entries:
-                # using inner function above since entries can leave out optional arguments
-                _process_action(*e)
-
-        def add_toggle_actions(self, entries, user_data=None):
-            """
-            The add_toggle_actions() method is a convenience method that creates a
-            number of gtk.ToggleAction objects based on the information in the list
-            of action entry tuples contained in entries and adds them to the action
-            group. The toggle action entry tuples can vary in size from one to seven
-            items with the following information:
-
-                * The name of the action. Must be specified.
-                * The stock id for the action. Optional with a default value of None
-                  if a label is specified.
-                * The label for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None if a stock id is specified.
-                * The accelerator for the action, in the format understood by the
-                  gtk.accelerator_parse() function. Optional with a default value of
-                  None.
-                * The tooltip for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None.
-                * The callback function invoked when the action is activated.
-                  Optional with a default value of None.
-                * A flag indicating whether the toggle action is active. Optional
-                  with a default value of False.
-
-            The "activate" signals of the actions are connected to the callbacks and
-            their accel paths are set to <Actions>/group-name/action-name.
-            """
+class Action(Gtk.Action):
+    def __init__(self, name, label, tooltip, stock_id, **kwds):
+        Gtk.Action.__init__(self, name=name, label=label, tooltip=tooltip, stock_id=stock_id, **kwds)
+
+Action = override(Action)
+__all__.append("Action")
 
-            try:
-                iter(entries)
-            except (TypeError):
-                raise TypeError('entries must be iterable')
-
-            def _process_action(name, stock_id=None, label=None, accelerator=None, tooltip=None, callback=None, is_active=False):
-                action = Gtk.ToggleAction(name=name, label=label, tooltip=tooltip, stock_id=stock_id)
-                action.set_active(is_active)
-                if callback is not None:
-                    if user_data is None:
-                        action.connect('activate', callback)
-                    else:
-                        action.connect('activate', callback, user_data)
-
-                self.add_action_with_accel(action, accelerator)
-
-            for e in entries:
-                # using inner function above since entries can leave out optional arguments
-                _process_action(*e)
-
-        def add_radio_actions(self, entries, value=None, on_change=None, user_data=None):
-            """
-            The add_radio_actions() method is a convenience method that creates a
-            number of gtk.RadioAction objects based on the information in the list
-            of action entry tuples contained in entries and adds them to the action
-            group. The entry tuples can vary in size from one to six items with the
-            following information:
-
-                * The name of the action. Must be specified.
-                * The stock id for the action. Optional with a default value of None
-                  if a label is specified.
-                * The label for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None if a stock id is specified.
-                * The accelerator for the action, in the format understood by the
-                  gtk.accelerator_parse() function. Optional with a default value of
-                  None.
-                * The tooltip for the action. This field should typically be marked
-                  for translation, see the set_translation_domain() method. Optional
-                  with a default value of None.
-                * The value to set on the radio action. Optional with a default
-                  value of 0. Should be specified in applications.
-
-            The value parameter specifies the radio action that should be set
-            active. The "changed" signal of the first radio action is connected to
-            the on_change callback (if specified and not None) and the accel paths
-            of the actions are set to <Actions>/group-name/action-name.
-            """
-            try:
-                iter(entries)
-            except (TypeError):
-                raise TypeError('entries must be iterable')
 
-            first_action = None
+class RadioAction(Gtk.RadioAction):
+    def __init__(self, name, label, tooltip, stock_id, value, **kwds):
+        Gtk.RadioAction.__init__(self, name=name, label=label, tooltip=tooltip, stock_id=stock_id, value=value, **kwds)
 
-            def _process_action(group_source, name, stock_id=None, label=None, accelerator=None, tooltip=None, entry_value=0):
-                action = RadioAction(name=name, label=label, tooltip=tooltip, stock_id=stock_id, value=entry_value)
+RadioAction = override(RadioAction)
+__all__.append("RadioAction")
 
-                # FIXME: join_group is a patch to Gtk+ 3.0
-                #        otherwise we can't effectively add radio actions to a
-                #        group.  Should we depend on 3.0 and error out here
-                #        or should we offer the functionality via a compat
-                #        C module?
-                if hasattr(action, 'join_group'):
-                    action.join_group(group_source)
 
-                if value == entry_value:
-                    action.set_active(True)
+class ActionGroup(Gtk.ActionGroup):
+    def __init__(self, name, **kwds):
+        super(ActionGroup, self).__init__(name=name, **kwds)
 
-                self.add_action_with_accel(action, accelerator)
-                return action
+    def add_actions(self, entries, user_data=None):
+        """
+        The add_actions() method is a convenience method that creates a number
+        of gtk.Action  objects based on the information in the list of action
+        entry tuples contained in entries and adds them to the action group.
+        The entry tuples can vary in size from one to six items with the
+        following information:
+
+            * The name of the action. Must be specified.
+            * The stock id for the action. Optional with a default value of None
+              if a label is specified.
+            * The label for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None if a stock id is specified.
+            * The accelerator for the action, in the format understood by the
+              gtk.accelerator_parse() function. Optional with a default value of
+              None.
+            * The tooltip for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None.
+            * The callback function invoked when the action is activated.
+              Optional with a default value of None.
+
+        The "activate" signals of the actions are connected to the callbacks and
+        their accel paths are set to <Actions>/group-name/action-name.
+        """
+        try:
+            iter(entries)
+        except (TypeError):
+            raise TypeError('entries must be iterable')
 
-            for e in entries:
-                # using inner function above since entries can leave out optional arguments
-                action = _process_action(first_action, *e)
-                if first_action is None:
-                    first_action = action
+        def _process_action(name, stock_id=None, label=None, accelerator=None, tooltip=None, callback=None):
+            action = Action(name, label, tooltip, stock_id)
+            if callback is not None:
+                if user_data is None:
+                    action.connect('activate', callback)
+                else:
+                    action.connect('activate', callback, user_data)
+
+            self.add_action_with_accel(action, accelerator)
+
+        for e in entries:
+            # using inner function above since entries can leave out optional arguments
+            _process_action(*e)
+
+    def add_toggle_actions(self, entries, user_data=None):
+        """
+        The add_toggle_actions() method is a convenience method that creates a
+        number of gtk.ToggleAction objects based on the information in the list
+        of action entry tuples contained in entries and adds them to the action
+        group. The toggle action entry tuples can vary in size from one to seven
+        items with the following information:
+
+            * The name of the action. Must be specified.
+            * The stock id for the action. Optional with a default value of None
+              if a label is specified.
+            * The label for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None if a stock id is specified.
+            * The accelerator for the action, in the format understood by the
+              gtk.accelerator_parse() function. Optional with a default value of
+              None.
+            * The tooltip for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None.
+            * The callback function invoked when the action is activated.
+              Optional with a default value of None.
+            * A flag indicating whether the toggle action is active. Optional
+              with a default value of False.
+
+        The "activate" signals of the actions are connected to the callbacks and
+        their accel paths are set to <Actions>/group-name/action-name.
+        """
 
-            if first_action is not None and on_change is not None:
+        try:
+            iter(entries)
+        except (TypeError):
+            raise TypeError('entries must be iterable')
+
+        def _process_action(name, stock_id=None, label=None, accelerator=None, tooltip=None, callback=None, is_active=False):
+            action = Gtk.ToggleAction(name, label, tooltip, stock_id)
+            action.set_active(is_active)
+            if callback is not None:
                 if user_data is None:
-                    first_action.connect('changed', on_change)
+                    action.connect('activate', callback)
                 else:
-                    first_action.connect('changed', on_change, user_data)
+                    action.connect('activate', callback, user_data)
 
-    ActionGroup = override(ActionGroup)
-    __all__.append('ActionGroup')
+            self.add_action_with_accel(action, accelerator)
 
-    class UIManager(Gtk.UIManager):
-        def add_ui_from_string(self, buffer):
-            if not isinstance(buffer, _basestring):
-                raise TypeError('buffer must be a string')
+        for e in entries:
+            # using inner function above since entries can leave out optional arguments
+            _process_action(*e)
+
+    def add_radio_actions(self, entries, value=None, on_change=None, user_data=None):
+        """
+        The add_radio_actions() method is a convenience method that creates a
+        number of gtk.RadioAction objects based on the information in the list
+        of action entry tuples contained in entries and adds them to the action
+        group. The entry tuples can vary in size from one to six items with the
+        following information:
+
+            * The name of the action. Must be specified.
+            * The stock id for the action. Optional with a default value of None
+              if a label is specified.
+            * The label for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None if a stock id is specified.
+            * The accelerator for the action, in the format understood by the
+              gtk.accelerator_parse() function. Optional with a default value of
+              None.
+            * The tooltip for the action. This field should typically be marked
+              for translation, see the set_translation_domain() method. Optional
+              with a default value of None.
+            * The value to set on the radio action. Optional with a default
+              value of 0. Should be specified in applications.
+
+        The value parameter specifies the radio action that should be set
+        active. The "changed" signal of the first radio action is connected to
+        the on_change callback (if specified and not None) and the accel paths
+        of the actions are set to <Actions>/group-name/action-name.
+        """
+        try:
+            iter(entries)
+        except (TypeError):
+            raise TypeError('entries must be iterable')
+
+        first_action = None
+
+        def _process_action(group_source, name, stock_id=None, label=None, accelerator=None, tooltip=None, entry_value=0):
+            action = RadioAction(name, label, tooltip, stock_id, entry_value)
+
+            # FIXME: join_group is a patch to Gtk+ 3.0
+            #        otherwise we can't effectively add radio actions to a
+            #        group.  Should we depend on 3.0 and error out here
+            #        or should we offer the functionality via a compat
+            #        C module?
+            if hasattr(action, 'join_group'):
+                action.join_group(group_source)
+
+            if value == entry_value:
+                action.set_active(True)
+
+            self.add_action_with_accel(action, accelerator)
+            return action
+
+        for e in entries:
+            # using inner function above since entries can leave out optional arguments
+            action = _process_action(first_action, *e)
+            if first_action is None:
+                first_action = action
+
+        if first_action is not None and on_change is not None:
+            if user_data is None:
+                first_action.connect('changed', on_change)
+            else:
+                first_action.connect('changed', on_change, user_data)
 
-            length = len(buffer.encode('UTF-8'))
+ActionGroup = override(ActionGroup)
+__all__.append('ActionGroup')
+
+
+class UIManager(Gtk.UIManager):
+    def add_ui_from_string(self, buffer):
+        if not isinstance(buffer, _basestring):
+            raise TypeError('buffer must be a string')
+
+        length = len(buffer)
 
-            return Gtk.UIManager.add_ui_from_string(self, buffer, length)
+        return Gtk.UIManager.add_ui_from_string(self, buffer, length)
 
-        def insert_action_group(self, buffer, length=-1):
-            return Gtk.UIManager.insert_action_group(self, buffer, length)
+    def insert_action_group(self, buffer, length=-1):
+        return Gtk.UIManager.insert_action_group(self, buffer, length)
 
-    UIManager = override(UIManager)
-    __all__.append('UIManager')
+UIManager = override(UIManager)
+__all__.append('UIManager')
 
 
 class ComboBox(Gtk.ComboBox, Container):
-    get_active_iter = strip_boolean_result(Gtk.ComboBox.get_active_iter)
 
+    def get_active_iter(self):
+        success, aiter = super(ComboBox, self).get_active_iter()
+        if success:
+            return aiter
 
 ComboBox = override(ComboBox)
 __all__.append('ComboBox')
 
 
 class Box(Gtk.Box):
-    __init__ = deprecated_init(Gtk.Box.__init__,
-                               arg_names=('homogeneous', 'spacing'),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, homogeneous=False, spacing=0, **kwds):
+        super(Box, self).__init__(**kwds)
+        self.set_homogeneous(homogeneous)
+        self.set_spacing(spacing)
 
 Box = override(Box)
 __all__.append('Box')
 
 
 class SizeGroup(Gtk.SizeGroup):
-    __init__ = deprecated_init(Gtk.SizeGroup.__init__,
-                               arg_names=('mode',),
-                               deprecated_defaults={'mode': Gtk.SizeGroupMode.VERTICAL},
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, mode=Gtk.SizeGroupMode.VERTICAL):
+        super(SizeGroup, self).__init__(mode=mode)
 
 SizeGroup = override(SizeGroup)
 __all__.append('SizeGroup')
 
 
 class MenuItem(Gtk.MenuItem):
-    __init__ = deprecated_init(Gtk.MenuItem.__init__,
-                               arg_names=('label',),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, label=None, **kwds):
+        super(MenuItem, self).__init__(label=label, **kwds)
 
 MenuItem = override(MenuItem)
 __all__.append('MenuItem')
 
 
 class Builder(Gtk.Builder):
+
     def connect_signals(self, obj_or_map):
-        """Connect signals specified by this builder to a name, handler mapping.
+        def _full_callback(builder, gobj, signal_name, handler_name, connect_obj, flags, obj_or_map):
+            handler = None
+            if isinstance(obj_or_map, dict):
+                handler = obj_or_map.get(handler_name, None)
+            else:
+                handler = getattr(obj_or_map, handler_name, None)
 
-        Connect signal, name, and handler sets specified in the builder with
-        the given mapping "obj_or_map". The handler/value aspect of the mapping
-        can also contain a tuple in the form of (handler [,arg1 [,argN]])
-        allowing for extra arguments to be passed to the handler. For example:
+            if handler is None:
+                raise AttributeError('Handler %s not found' % handler_name)
 
-        .. code-block:: python
+            if not _callable(handler):
+                raise TypeError('Handler %s is not a method or function' % handler_name)
 
-            builder.connect_signals({'on_clicked': (on_clicked, arg1, arg2)})
-        """
-        self.connect_signals_full(_builder_connect_callback, obj_or_map)
+            after = flags & GObject.ConnectFlags.AFTER
+            if connect_obj is not None:
+                if after:
+                    gobj.connect_object_after(signal_name, handler, connect_obj)
+                else:
+                    gobj.connect_object(signal_name, handler, connect_obj)
+            else:
+                if after:
+                    gobj.connect_after(signal_name, handler)
+                else:
+                    gobj.connect(signal_name, handler)
+
+        self.connect_signals_full(_full_callback, obj_or_map)
 
     def add_from_string(self, buffer):
         if not isinstance(buffer, _basestring):
@@ -471,7 +386,6 @@ class Builder(Gtk.Builder):
 
         return Gtk.Builder.add_objects_from_string(self, buffer, length, object_ids)
 
-
 Builder = override(Builder)
 __all__.append('Builder')
 
@@ -481,67 +395,47 @@ __all__.append('Builder')
 
 
 class Window(Gtk.Window):
-    __init__ = deprecated_init(Gtk.Window.__init__,
-                               arg_names=('type',),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, type=Gtk.WindowType.TOPLEVEL, **kwds):
+        Gtk.Window.__init__(self, type=type, **kwds)
 
 Window = override(Window)
 __all__.append('Window')
 
 
 class Dialog(Gtk.Dialog, Container):
-    _old_arg_names = ('title', 'parent', 'flags', 'buttons', '_buttons_property')
-    _init = deprecated_init(Gtk.Dialog.__init__,
-                            arg_names=('title', 'transient_for', 'flags',
-                                       'add_buttons', 'buttons'),
-                            ignore=('flags', 'add_buttons'),
-                            deprecated_aliases={'transient_for': 'parent',
-                                                'buttons': '_buttons_property'},
-                            category=PyGTKDeprecationWarning)
-
-    def __init__(self, *args, **kwargs):
-
-        new_kwargs = kwargs.copy()
-        old_kwargs = dict(zip(self._old_arg_names, args))
-        old_kwargs.update(kwargs)
-
-        # Increment the warning stacklevel for sub-classes which implement their own __init__.
-        stacklevel = 2
-        if self.__class__ != Dialog and self.__class__.__init__ != Dialog.__init__:
-            stacklevel += 1
-
-        # buttons was overloaded by PyGtk but is needed for Gtk.MessageDialog
-        # as a pass through, so type check the argument and give a deprecation
-        # when it is not of type Gtk.ButtonsType
-        add_buttons = old_kwargs.get('buttons', None)
-        if add_buttons is not None and not isinstance(add_buttons, Gtk.ButtonsType):
-            warnings.warn('The "buttons" argument must be a Gtk.ButtonsType enum value. '
-                          'Please use the "add_buttons" method for adding buttons. '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations',
-                          PyGTKDeprecationWarning, stacklevel=stacklevel)
-            if 'buttons' in new_kwargs:
-                del new_kwargs['buttons']
-        else:
-            add_buttons = None
-
-        flags = old_kwargs.get('flags', 0)
-        if flags:
-            warnings.warn('The "flags" argument for dialog construction is deprecated. '
-                          'Please use initializer keywords: modal=True and/or destroy_with_parent=True. '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations',
-                          PyGTKDeprecationWarning, stacklevel=stacklevel)
-
-            if flags & Gtk.DialogFlags.MODAL:
-                new_kwargs['modal'] = True
 
-            if flags & Gtk.DialogFlags.DESTROY_WITH_PARENT:
-                new_kwargs['destroy_with_parent'] = True
-
-        self._init(*args, **new_kwargs)
-
-        if add_buttons:
-            self.add_buttons(*add_buttons)
+    def __init__(self,
+                 title=None,
+                 parent=None,
+                 flags=0,
+                 buttons=None,
+                 _buttons_property=None,
+                 **kwds):
+
+        # buttons is overloaded by PyGtk so we have to do the same here
+        # this breaks some subclasses of Dialog so add a _buttons_property
+        # keyword to work around this
+        if _buttons_property is not None:
+            kwds['buttons'] = _buttons_property
+
+        Gtk.Dialog.__init__(self, **kwds)
+        if title:
+            self.set_title(title)
+        if parent:
+            self.set_transient_for(parent)
+        if flags & Gtk.DialogFlags.MODAL:
+            self.set_modal(True)
+        if flags & Gtk.DialogFlags.DESTROY_WITH_PARENT:
+            self.set_destroy_with_parent(True)
+
+        # NO_SEPARATOR has been removed from Gtk 3
+        if hasattr(Gtk.DialogFlags, "NO_SEPARATOR") and (flags & Gtk.DialogFlags.NO_SEPARATOR):
+            self.set_has_separator(False)
+            import warnings
+            warnings.warn("Gtk.DialogFlags.NO_SEPARATOR has been depricated since Gtk+-3.0", DeprecationWarning)
+
+        if buttons is not None:
+            self.add_buttons(*buttons)
 
     action_area = property(lambda dialog: dialog.get_action_area())
     vbox = property(lambda dialog: dialog.get_content_area())
@@ -554,9 +448,7 @@ class Dialog(Gtk.Dialog, Container):
         pairs - button text (or stock ID) and a response ID integer are passed
         individually. For example:
 
-        .. code-block:: python
-
-            dialog.add_buttons(Gtk.STOCK_OPEN, 42, "Close", Gtk.ResponseType.CLOSE)
+        >>> dialog.add_buttons(Gtk.STOCK_OPEN, 42, "Close", Gtk.ResponseType.CLOSE)
 
         will add "Open" and "Close" buttons to dialog.
         """
@@ -572,18 +464,34 @@ class Dialog(Gtk.Dialog, Container):
         except (IndexError):
             raise TypeError('Must pass an even number of arguments')
 
-
 Dialog = override(Dialog)
 __all__.append('Dialog')
 
 
 class MessageDialog(Gtk.MessageDialog, Dialog):
-    __init__ = deprecated_init(Gtk.MessageDialog.__init__,
-                               arg_names=('parent', 'flags', 'message_type',
-                                          'buttons', 'message_format'),
-                               deprecated_aliases={'text': 'message_format',
-                                                   'message_type': 'type'},
-                               category=PyGTKDeprecationWarning)
+    def __init__(self,
+                 parent=None,
+                 flags=0,
+                 message_type=Gtk.MessageType.INFO,
+                 buttons=Gtk.ButtonsType.NONE,
+                 message_format=None,
+                 **kwds):
+
+        if message_format != None:
+            kwds['text'] = message_format
+
+        # type keyword is used for backwards compat with PyGTK
+        if 'type' in kwds:
+            import warnings
+            warnings.warn("The use of the keyword type as a parameter of the Gtk.MessageDialog constructor has been depricated. Please use message_type instead.", DeprecationWarning)
+            message_type = kwds.pop('type')
+
+        Gtk.MessageDialog.__init__(self,
+                                   _buttons_property=buttons,
+                                   message_type=message_type,
+                                   parent=parent,
+                                   flags=flags,
+                                   **kwds)
 
     def format_secondary_text(self, message_format):
         self.set_property('secondary-use-markup', False)
@@ -593,89 +501,120 @@ class MessageDialog(Gtk.MessageDialog, Dialog):
         self.set_property('secondary-use-markup', True)
         self.set_property('secondary-text', message_format)
 
-
 MessageDialog = override(MessageDialog)
 __all__.append('MessageDialog')
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class ColorSelectionDialog(Gtk.ColorSelectionDialog):
-        __init__ = deprecated_init(Gtk.ColorSelectionDialog.__init__,
-                                   arg_names=('title',),
-                                   category=PyGTKDeprecationWarning)
+class AboutDialog(Gtk.AboutDialog):
+    def __init__(self, **kwds):
+        Gtk.AboutDialog.__init__(self, **kwds)
 
-    ColorSelectionDialog = override(ColorSelectionDialog)
-    __all__.append('ColorSelectionDialog')
+AboutDialog = override(AboutDialog)
+__all__.append('AboutDialog')
 
 
-class FileChooserDialog(Gtk.FileChooserDialog):
-    __init__ = deprecated_init(Gtk.FileChooserDialog.__init__,
-                               arg_names=('title', 'parent', 'action', 'buttons'),
-                               category=PyGTKDeprecationWarning)
+class ColorSelectionDialog(Gtk.ColorSelectionDialog):
+    def __init__(self, title=None, **kwds):
+        Gtk.ColorSelectionDialog.__init__(self, title=title, **kwds)
 
+ColorSelectionDialog = override(ColorSelectionDialog)
+__all__.append('ColorSelectionDialog')
 
+
+class FileChooserDialog(Gtk.FileChooserDialog):
+    def __init__(self,
+                 title=None,
+                 parent=None,
+                 action=Gtk.FileChooserAction.OPEN,
+                 buttons=None,
+                 **kwds):
+        Gtk.FileChooserDialog.__init__(self,
+                                       action=action,
+                                       title=title,
+                                       parent=parent,
+                                       buttons=buttons,
+                                       **kwds)
 FileChooserDialog = override(FileChooserDialog)
 __all__.append('FileChooserDialog')
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class FontSelectionDialog(Gtk.FontSelectionDialog):
-        __init__ = deprecated_init(Gtk.FontSelectionDialog.__init__,
-                                   arg_names=('title',),
-                                   category=PyGTKDeprecationWarning)
+class FontSelectionDialog(Gtk.FontSelectionDialog):
+    def __init__(self, title=None, **kwds):
+        Gtk.FontSelectionDialog.__init__(self, title=title, **kwds)
 
-    FontSelectionDialog = override(FontSelectionDialog)
-    __all__.append('FontSelectionDialog')
+FontSelectionDialog = override(FontSelectionDialog)
+__all__.append('FontSelectionDialog')
 
 
 class RecentChooserDialog(Gtk.RecentChooserDialog):
-    # Note, the "manager" keyword must work across the entire 3.x series because
-    # "recent_manager" is not backwards compatible with PyGObject versions prior to 3.10.
-    __init__ = deprecated_init(Gtk.RecentChooserDialog.__init__,
-                               arg_names=('title', 'parent', 'recent_manager', 'buttons'),
-                               deprecated_aliases={'recent_manager': 'manager'},
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self,
+                 title=None,
+                 parent=None,
+                 manager=None,
+                 buttons=None,
+                 **kwds):
+
+        Gtk.RecentChooserDialog.__init__(self,
+                recent_manager=manager,
+                title=title,
+                parent=parent,
+                buttons=buttons,
+                **kwds)
 
 RecentChooserDialog = override(RecentChooserDialog)
 __all__.append('RecentChooserDialog')
 
 
 class IconView(Gtk.IconView):
-    __init__ = deprecated_init(Gtk.IconView.__init__,
-                               arg_names=('model',),
-                               category=PyGTKDeprecationWarning)
 
-    get_item_at_pos = strip_boolean_result(Gtk.IconView.get_item_at_pos)
-    get_visible_range = strip_boolean_result(Gtk.IconView.get_visible_range)
-    get_dest_item_at_pos = strip_boolean_result(Gtk.IconView.get_dest_item_at_pos)
+    def __init__(self, model=None, **kwds):
+        Gtk.IconView.__init__(self, model=model, **kwds)
 
+    def get_item_at_pos(self, x, y):
+        success, path, cell = super(IconView, self).get_item_at_pos(x, y)
+        if success:
+            return (path, cell,)
+
+    def get_visible_range(self):
+        success, start_path, end_path = super(IconView, self).get_visible_range()
+        if success:
+            return (start_path, end_path,)
+
+    def get_dest_item_at_pos(self, drag_x, drag_y):
+        success, path, pos = super(IconView, self).get_dest_item_at_pos(drag_x, drag_y)
+        if success:
+            return path, pos
 
 IconView = override(IconView)
 __all__.append('IconView')
 
 
 class ToolButton(Gtk.ToolButton):
-    __init__ = deprecated_init(Gtk.ToolButton.__init__,
-                               arg_names=('stock_id',),
-                               category=PyGTKDeprecationWarning)
 
+    def __init__(self, stock_id=None, **kwds):
+        Gtk.ToolButton.__init__(self, stock_id=stock_id, **kwds)
 
 ToolButton = override(ToolButton)
 __all__.append('ToolButton')
 
 
 class IMContext(Gtk.IMContext):
-    get_surrounding = strip_boolean_result(Gtk.IMContext.get_surrounding)
 
+    def get_surrounding(self):
+        success, text, cursor_index = super(IMContext, self).get_surrounding()
+        if success:
+            return (text, cursor_index,)
 
 IMContext = override(IMContext)
 __all__.append('IMContext')
 
 
 class RecentInfo(Gtk.RecentInfo):
-    get_application_info = strip_boolean_result(Gtk.RecentInfo.get_application_info)
 
+    def get_application_info(self, app_name):
+        success, app_exec, count, time = super(RecentInfo, self).get_application_info(app_name)
+        if success:
+            return (app_exec, count, time,)
 
 RecentInfo = override(RecentInfo)
 __all__.append('RecentInfo')
@@ -691,27 +630,24 @@ class TextBuffer(Gtk.TextBuffer):
         return table
 
     def create_tag(self, tag_name=None, **properties):
-        """Creates a tag and adds it to the tag table of the TextBuffer.
-
-        :param str tag_name:
-            Name of the new tag, or None
-        :param **properties:
-            Keyword list of properties and their values
+        """
+        @tag_name: name of the new tag, or None
+        @properties: keyword list of properties and their values
 
-        This is equivalent to creating a Gtk.TextTag and then adding the
+        Creates a tag and adds it to the tag table of the TextBuffer.
+        Equivalent to creating a Gtk.TextTag and then adding the
         tag to the buffer's tag table. The returned tag is owned by
         the buffer's tag table.
 
-        If ``tag_name`` is None, the tag is anonymous.
+        If @tag_name is None, the tag is anonymous.
 
-        If ``tag_name`` is not None, a tag called ``tag_name`` must not already
+        If @tag_name is not None, a tag called @tag_name must not already
         exist in the tag table for this buffer.
 
         Properties are passed as a keyword list of names and values (e.g.
-        foreground='DodgerBlue', weight=Pango.Weight.BOLD)
+        foreground = 'DodgerBlue', weight = Pango.Weight.BOLD)
 
-        :returns:
-            A new tag.
+        Return value: a new tag
         """
 
         tag = Gtk.TextTag(name=tag_name, **properties)
@@ -743,6 +679,9 @@ class TextBuffer(Gtk.TextBuffer):
             self.apply_tag(tag, start, iter)
 
     def insert_with_tags_by_name(self, iter, text, *tags):
+        if not tags:
+            return
+
         tag_objs = []
 
         for tag in tags:
@@ -759,17 +698,43 @@ class TextBuffer(Gtk.TextBuffer):
 
         Gtk.TextBuffer.insert_at_cursor(self, text, length)
 
-    get_selection_bounds = strip_boolean_result(Gtk.TextBuffer.get_selection_bounds, fail_ret=())
-
+    def get_selection_bounds(self):
+        success, start, end = super(TextBuffer, self).get_selection_bounds()
+        if success:
+            return (start, end)
+        else:
+            return ()
 
 TextBuffer = override(TextBuffer)
 __all__.append('TextBuffer')
 
 
 class TextIter(Gtk.TextIter):
-    forward_search = strip_boolean_result(Gtk.TextIter.forward_search)
-    backward_search = strip_boolean_result(Gtk.TextIter.backward_search)
 
+    def forward_search(self, string, flags, limit):
+        success, match_start, match_end = super(TextIter, self).forward_search(string,
+            flags, limit)
+        if success:
+            return (match_start, match_end)
+        else:
+            return None
+
+    def backward_search(self, string, flags, limit):
+        success, match_start, match_end = super(TextIter, self).backward_search(string,
+            flags, limit)
+        if success:
+            return (match_start, match_end)
+        else:
+            return None
+
+    def begins_tag(self, tag=None):
+        return super(TextIter, self).begins_tag(tag)
+
+    def ends_tag(self, tag=None):
+        return super(TextIter, self).ends_tag(tag)
+
+    def toggles_tag(self, tag=None):
+        return super(TextIter, self).toggles_tag(tag)
 
 TextIter = override(TextIter)
 __all__.append('TextIter')
@@ -785,9 +750,9 @@ class TreeModel(Gtk.TreeModel):
     # alias for Python 2.x object protocol
     __nonzero__ = __bool__
 
-    def _getiter(self, key):
+    def __getitem__(self, key):
         if isinstance(key, Gtk.TreeIter):
-            return key
+            return TreeModelRow(self, key)
         elif isinstance(key, int) and key < 0:
             index = len(self) + key
             if index < 0:
@@ -796,49 +761,41 @@ class TreeModel(Gtk.TreeModel):
                 aiter = self.get_iter(index)
             except ValueError:
                 raise IndexError("could not find tree path '%s'" % key)
-            return aiter
+            return TreeModelRow(self, aiter)
         else:
             try:
                 aiter = self.get_iter(key)
             except ValueError:
                 raise IndexError("could not find tree path '%s'" % key)
-            return aiter
-
-    def _coerce_path(self, path):
-        if isinstance(path, Gtk.TreePath):
-            return path
-        else:
-            return TreePath(path)
-
-    def __getitem__(self, key):
-        aiter = self._getiter(key)
-        return TreeModelRow(self, aiter)
+            return TreeModelRow(self, aiter)
 
     def __setitem__(self, key, value):
         row = self[key]
         self.set_row(row.iter, value)
 
-    def __delitem__(self, key):
-        aiter = self._getiter(key)
-        self.remove(aiter)
-
     def __iter__(self):
         return TreeModelRowIter(self, self.get_iter_first())
 
-    get_iter_first = strip_boolean_result(Gtk.TreeModel.get_iter_first)
-    iter_children = strip_boolean_result(Gtk.TreeModel.iter_children)
-    iter_nth_child = strip_boolean_result(Gtk.TreeModel.iter_nth_child)
-    iter_parent = strip_boolean_result(Gtk.TreeModel.iter_parent)
-    get_iter_from_string = strip_boolean_result(Gtk.TreeModel.get_iter_from_string,
-                                                ValueError, 'invalid tree path')
-
     def get_iter(self, path):
-        path = self._coerce_path(path)
+        if not isinstance(path, Gtk.TreePath):
+            path = TreePath(path)
+
         success, aiter = super(TreeModel, self).get_iter(path)
         if not success:
             raise ValueError("invalid tree path '%s'" % path)
         return aiter
 
+    def get_iter_first(self):
+        success, aiter = super(TreeModel, self).get_iter_first()
+        if success:
+            return aiter
+
+    def get_iter_from_string(self, path_string):
+        success, aiter = super(TreeModel, self).get_iter_from_string(path_string)
+        if not success:
+            raise ValueError("invalid tree path '%s'" % path_string)
+        return aiter
+
     def iter_next(self, aiter):
         next_iter = aiter.copy()
         success = super(TreeModel, self).iter_next(next_iter)
@@ -851,6 +808,21 @@ class TreeModel(Gtk.TreeModel):
         if success:
             return prev_iter
 
+    def iter_children(self, aiter):
+        success, child_iter = super(TreeModel, self).iter_children(aiter)
+        if success:
+            return child_iter
+
+    def iter_nth_child(self, parent, n):
+        success, child_iter = super(TreeModel, self).iter_nth_child(parent, n)
+        if success:
+            return child_iter
+
+    def iter_parent(self, aiter):
+        success, parent_iter = super(TreeModel, self).iter_parent(aiter)
+        if success:
+            return parent_iter
+
     def _convert_row(self, row):
         # TODO: Accept a dictionary for row
         # model.append(None,{COLUMN_ICON: icon, COLUMN_NAME: name})
@@ -881,11 +853,84 @@ class TreeModel(Gtk.TreeModel):
             self.set_value(treeiter, column, value)
 
     def _convert_value(self, column, value):
-        '''Convert value to a GObject.Value of the expected type'''
-
-        if isinstance(value, GObject.Value):
-            return value
-        return GObject.Value(self.get_column_type(column), value)
+        if value is None:
+            return None
+
+        # we may need to convert to a basic type
+        type_ = self.get_column_type(column)
+        if type_ == GObject.TYPE_STRING:
+            if isinstance(value, str):
+                value = str(value)
+            elif sys.version_info < (3, 0):
+                if isinstance(value, unicode):
+                    value = value.encode('UTF-8')
+                else:
+                    raise ValueError('Expected string or unicode for column %i but got %s%s' % (column, value, type(value)))
+            else:
+                raise ValueError('Expected a string for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_FLOAT or type_ == GObject.TYPE_DOUBLE:
+            if isinstance(value, float):
+                value = float(value)
+            else:
+                raise ValueError('Expected a float for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_LONG or type_ == GObject.TYPE_INT:
+            if isinstance(value, int):
+                value = int(value)
+            elif sys.version_info < (3, 0):
+                if isinstance(value, long):
+                    value = long(value)
+                else:
+                    raise ValueError('Expected an long for column %i but got %s' % (column, type(value)))
+            else:
+                raise ValueError('Expected an integer for column %i but got %s' % (column, type(value)))
+        elif type_ == GObject.TYPE_BOOLEAN:
+            cmp_classes = [int]
+            if sys.version_info < (3, 0):
+                cmp_classes.append(long)
+
+            if isinstance(value, tuple(cmp_classes)):
+                value = bool(value)
+            else:
+                raise ValueError('Expected a bool for column %i but got %s' % (column, type(value)))
+        else:
+            # use GValues directly to marshal to the correct type
+            # standard object checks should take care of validation
+            # so we don't have to do it here
+            value_container = GObject.Value()
+            value_container.init(type_)
+            if type_ == GObject.TYPE_CHAR:
+                value_container.set_char(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UCHAR:
+                value_container.set_uchar(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UNICHAR:
+                cmp_classes = [str]
+                if sys.version_info < (3, 0):
+                    cmp_classes.append(unicode)
+
+                if isinstance(value, tuple(cmp_classes)):
+                    value = ord(value[0])
+
+                value_container.set_uint(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UINT:
+                value_container.set_uint(value)
+                value = value_container
+            elif type_ == GObject.TYPE_ULONG:
+                value_container.set_ulong(value)
+                value = value_container
+            elif type_ == GObject.TYPE_INT64:
+                value_container.set_int64(value)
+                value = value_container
+            elif type_ == GObject.TYPE_UINT64:
+                value_container.set_uint64(value)
+                value = value_container
+            elif type_ == GObject.TYPE_PYOBJECT:
+                value_container.set_boxed(value)
+                value = value_container
+
+        return value
 
     def get(self, treeiter, *columns):
         n_columns = self.get_n_columns()
@@ -902,26 +947,8 @@ class TreeModel(Gtk.TreeModel):
 
         return tuple(values)
 
-    #
-    # Signals supporting python iterables as tree paths
-    #
-    def row_changed(self, path, iter):
-        return super(TreeModel, self).row_changed(self._coerce_path(path), iter)
-
-    def row_inserted(self, path, iter):
-        return super(TreeModel, self).row_inserted(self._coerce_path(path), iter)
-
-    def row_has_child_toggled(self, path, iter):
-        return super(TreeModel, self).row_has_child_toggled(self._coerce_path(path),
-                                                            iter)
-
-    def row_deleted(self, path):
-        return super(TreeModel, self).row_deleted(self._coerce_path(path))
-
-    def rows_reordered(self, path, iter, new_order):
-        return super(TreeModel, self).rows_reordered(self._coerce_path(path),
-                                                     iter, new_order)
-
+    def filter_new(self, root=None):
+        return super(TreeModel, self).filter_new(root)
 
 TreeModel = override(TreeModel)
 __all__.append('TreeModel')
@@ -929,7 +956,12 @@ __all__.append('TreeModel')
 
 class TreeSortable(Gtk.TreeSortable, ):
 
-    get_sort_column_id = strip_boolean_result(Gtk.TreeSortable.get_sort_column_id, fail_ret=(None, None))
+    def get_sort_column_id(self):
+        success, sort_column_id, order = super(TreeSortable, self).get_sort_column_id()
+        if success:
+            return (sort_column_id, order,)
+        else:
+            return (None, None,)
 
     def set_sort_func(self, sort_column_id, sort_func, user_data=None):
         super(TreeSortable, self).set_sort_func(sort_column_id, sort_func, user_data)
@@ -937,21 +969,10 @@ class TreeSortable(Gtk.TreeSortable, ):
     def set_default_sort_func(self, sort_func, user_data=None):
         super(TreeSortable, self).set_default_sort_func(sort_func, user_data)
 
-
 TreeSortable = override(TreeSortable)
 __all__.append('TreeSortable')
 
 
-class TreeModelSort(Gtk.TreeModelSort):
-    __init__ = deprecated_init(Gtk.TreeModelSort.__init__,
-                               arg_names=('model',),
-                               category=PyGTKDeprecationWarning)
-
-
-TreeModelSort = override(TreeModelSort)
-__all__.append('TreeModelSort')
-
-
 class ListStore(Gtk.ListStore, TreeModel, TreeSortable):
     def __init__(self, *column_types):
         Gtk.ListStore.__init__(self)
@@ -1032,7 +1053,6 @@ class ListStore(Gtk.ListStore, TreeModel, TreeSortable):
             else:
                 raise TypeError('Argument list must be in the form of (column, value, ...), ((columns,...), (values, ...)) or {column: value}.  No -1 termination is needed.')
 
-
 ListStore = override(ListStore)
 __all__.append('ListStore')
 
@@ -1060,10 +1080,6 @@ class TreeModelRow(object):
         return self.get_next()
 
     @property
-    def previous(self):
-        return self.get_previous()
-
-    @property
     def parent(self):
         return self.get_parent()
 
@@ -1072,11 +1088,6 @@ class TreeModelRow(object):
         if next_iter:
             return TreeModelRow(self.model, next_iter)
 
-    def get_previous(self):
-        prev_iter = self.model.iter_previous(self.iter)
-        if prev_iter:
-            return TreeModelRow(self.model, prev_iter)
-
     def get_parent(self):
         parent_iter = self.model.iter_parent(self.iter)
         if parent_iter:
@@ -1095,11 +1106,8 @@ class TreeModelRow(object):
             for i in range(start, stop, step):
                 alist.append(self.model.get_value(self.iter, i))
             return alist
-        elif isinstance(key, tuple):
-            return [self[k] for k in key]
         else:
-            raise TypeError("indices must be integers, slice or tuple, not %s"
-                            % type(key).__name__)
+            raise TypeError("indices must be integers, not %s" % type(key).__name__)
 
     def __setitem__(self, key, value):
         if isinstance(key, int):
@@ -1114,20 +1122,12 @@ class TreeModelRow(object):
             if len(indexList) != len(value):
                 raise ValueError(
                     "attempt to assign sequence of size %d to slice of size %d"
-                    % (len(value), len(indexList)))
+                        % (len(value), len(indexList)))
 
             for i, v in enumerate(indexList):
                 self.model.set_value(self.iter, v, value[i])
-        elif isinstance(key, tuple):
-            if len(key) != len(value):
-                raise ValueError(
-                    "attempt to assign sequence of size %d to sequence of size %d"
-                    % (len(value), len(key)))
-            for k, v in zip(key, value):
-                self[k] = v
         else:
-            raise TypeError("indices must be an integer, slice or tuple, not %s"
-                            % type(key).__name__)
+            raise TypeError("index must be an integer or slice, not %s" % type(key).__name__)
 
     def _convert_negative_index(self, index):
         new_index = self.model.get_n_columns() + index
@@ -1139,7 +1139,6 @@ class TreeModelRow(object):
         child_iter = self.model.iter_children(self.iter)
         return TreeModelRowIter(self.model, child_iter)
 
-
 __all__.append('TreeModelRow')
 
 
@@ -1162,7 +1161,6 @@ class TreeModelRowIter(object):
     def __iter__(self):
         return self
 
-
 __all__.append('TreeModelRowIter')
 
 
@@ -1171,7 +1169,7 @@ class TreePath(Gtk.TreePath):
     def __new__(cls, path=0):
         if isinstance(path, int):
             path = str(path)
-        elif not isinstance(path, _basestring):
+        elif isinstance(path, tuple):
             path = ":".join(str(val) for val in path)
 
         if len(path) == 0:
@@ -1181,20 +1179,17 @@ class TreePath(Gtk.TreePath):
         except TypeError:
             raise TypeError("could not parse subscript '%s' as a tree path" % path)
 
-    def __init__(self, *args, **kwargs):
-        super(TreePath, self).__init__()
-
     def __str__(self):
         return self.to_string()
 
     def __lt__(self, other):
-        return other is not None and self.compare(other) < 0
+        return not other is None and self.compare(other) < 0
 
     def __le__(self, other):
-        return other is not None and self.compare(other) <= 0
+        return not other is None and self.compare(other) <= 0
 
     def __eq__(self, other):
-        return other is not None and self.compare(other) == 0
+        return not other is None and self.compare(other) == 0
 
     def __ne__(self, other):
         return other is None or self.compare(other) != 0
@@ -1206,20 +1201,14 @@ class TreePath(Gtk.TreePath):
         return other is None or self.compare(other) >= 0
 
     def __iter__(self):
-        return iter(self.get_indices())
-
-    def __len__(self):
-        return self.get_depth()
-
-    def __getitem__(self, index):
-        return self.get_indices()[index]
-
+        return (int(part) for part in str(self).split(':'))
 
 TreePath = override(TreePath)
 __all__.append('TreePath')
 
 
 class TreeStore(Gtk.TreeStore, TreeModel, TreeSortable):
+
     def __init__(self, *column_types):
         Gtk.TreeStore.__init__(self)
         self.set_column_types(column_types)
@@ -1294,28 +1283,49 @@ class TreeStore(Gtk.TreeStore, TreeModel, TreeSortable):
             else:
                 raise TypeError('Argument list must be in the form of (column, value, ...), ((columns,...), (values, ...)) or {column: value}.  No -1 termination is needed.')
 
-
 TreeStore = override(TreeStore)
 __all__.append('TreeStore')
 
 
 class TreeView(Gtk.TreeView, Container):
-    __init__ = deprecated_init(Gtk.TreeView.__init__,
-                               arg_names=('model',),
-                               category=PyGTKDeprecationWarning)
 
-    get_path_at_pos = strip_boolean_result(Gtk.TreeView.get_path_at_pos)
-    get_visible_range = strip_boolean_result(Gtk.TreeView.get_visible_range)
-    get_dest_row_at_pos = strip_boolean_result(Gtk.TreeView.get_dest_row_at_pos)
+    def __init__(self, model=None):
+        Gtk.TreeView.__init__(self)
+        if model:
+            self.set_model(model)
+
+    def get_path_at_pos(self, x, y):
+        success, path, column, cell_x, cell_y = super(TreeView, self).get_path_at_pos(x, y)
+        if success:
+            return (path, column, cell_x, cell_y,)
+
+    def get_visible_range(self):
+        success, start_path, end_path = super(TreeView, self).get_visible_range()
+        if success:
+            return (start_path, end_path,)
+
+    def get_dest_row_at_pos(self, drag_x, drag_y):
+        success, path, pos = super(TreeView, self).get_dest_row_at_pos(drag_x, drag_y)
+        if success:
+            return (path, pos,)
+
+    def _construct_target_list(self, targets):
+        # FIXME: this should most likely be part of Widget or a global helper
+        #        function
+        target_entries = []
+        for t in targets:
+            entry = Gtk.TargetEntry.new(*t)
+            target_entries.append(entry)
+        return target_entries
 
     def enable_model_drag_source(self, start_button_mask, targets, actions):
-        target_entries = _construct_target_list(targets)
+        target_entries = self._construct_target_list(targets)
         super(TreeView, self).enable_model_drag_source(start_button_mask,
                                                        target_entries,
                                                        actions)
 
     def enable_model_drag_dest(self, targets, actions):
-        target_entries = _construct_target_list(targets)
+        target_entries = self._construct_target_list(targets)
         super(TreeView, self).enable_model_drag_dest(target_entries,
                                                      actions)
 
@@ -1334,14 +1344,6 @@ class TreeView(Gtk.TreeView, Container):
             path = TreePath(path)
         return super(TreeView, self).get_cell_area(path, column)
 
-    def insert_column_with_attributes(self, position, title, cell, **kwargs):
-        column = TreeViewColumn()
-        column.set_title(title)
-        column.pack_start(cell, False)
-        self.insert_column(column, position)
-        column.set_attributes(cell, **kwargs)
-
-
 TreeView = override(TreeView)
 __all__.append('TreeView')
 
@@ -1357,18 +1359,14 @@ class TreeViewColumn(Gtk.TreeViewColumn):
         for (name, value) in attributes.items():
             self.add_attribute(cell_renderer, name, value)
 
-    cell_get_position = strip_boolean_result(Gtk.TreeViewColumn.cell_get_position)
+    def cell_get_position(self, cell_renderer):
+        success, start_pos, width = super(TreeViewColumn, self).cell_get_position(cell_renderer)
+        if success:
+            return (start_pos, width,)
 
     def set_cell_data_func(self, cell_renderer, func, func_data=None):
         super(TreeViewColumn, self).set_cell_data_func(cell_renderer, func, func_data)
 
-    def set_attributes(self, cell_renderer, **attributes):
-        Gtk.CellLayout.clear_attributes(self, cell_renderer)
-
-        for (name, value) in attributes.items():
-            Gtk.CellLayout.add_attribute(self, cell_renderer, name, value)
-
-
 TreeViewColumn = override(TreeViewColumn)
 __all__.append('TreeViewColumn')
 
@@ -1399,118 +1397,96 @@ __all__.append('TreeSelection')
 
 
 class Button(Gtk.Button, Container):
-    _init = deprecated_init(Gtk.Button.__init__,
-                            arg_names=('label', 'stock', 'use_stock', 'use_underline'),
-                            ignore=('stock',),
-                            category=PyGTKDeprecationWarning,
-                            stacklevel=3)
-
-    def __init__(self, *args, **kwargs):
-        # Doubly deprecated initializer, the stock keyword is non-standard.
-        # Simply give a warning that stock items are deprecated even though
-        # we want to deprecate the non-standard keyword as well here from
-        # the overrides.
-        if 'stock' in kwargs and kwargs['stock']:
-            warnings.warn('Stock items are deprecated. '
-                          'Please use: Gtk.Button.new_with_mnemonic(label)',
-                          PyGTKDeprecationWarning, stacklevel=2)
-            new_kwargs = kwargs.copy()
-            new_kwargs['label'] = new_kwargs['stock']
-            new_kwargs['use_stock'] = True
-            new_kwargs['use_underline'] = True
-            del new_kwargs['stock']
-            Gtk.Button.__init__(self, **new_kwargs)
-        else:
-            self._init(*args, **kwargs)
-
-
+    def __init__(self, label=None, stock=None, use_stock=False, use_underline=False, **kwds):
+        if stock:
+            label = stock
+            use_stock = True
+            use_underline = True
+        Gtk.Button.__init__(self, label=label, use_stock=use_stock,
+                            use_underline=use_underline, **kwds)
 Button = override(Button)
 __all__.append('Button')
 
 
 class LinkButton(Gtk.LinkButton):
-    __init__ = deprecated_init(Gtk.LinkButton.__init__,
-                               arg_names=('uri', 'label'),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, uri, label=None, **kwds):
+        Gtk.LinkButton.__init__(self, uri=uri, label=label, **kwds)
 
 LinkButton = override(LinkButton)
 __all__.append('LinkButton')
 
 
 class Label(Gtk.Label):
-    __init__ = deprecated_init(Gtk.Label.__init__,
-                               arg_names=('label',),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, label=None, **kwds):
+        Gtk.Label.__init__(self, label=label, **kwds)
 
 Label = override(Label)
 __all__.append('Label')
 
 
 class Adjustment(Gtk.Adjustment):
-    _init = deprecated_init(Gtk.Adjustment.__init__,
-                            arg_names=('value', 'lower', 'upper',
-                                       'step_increment', 'page_increment', 'page_size'),
-                            deprecated_aliases={'page_increment': 'page_incr',
-                                                'step_increment': 'step_incr'},
-                            category=PyGTKDeprecationWarning,
-                            stacklevel=3)
-
-    def __init__(self, *args, **kwargs):
-        self._init(*args, **kwargs)
+    def __init__(self, *args, **kwds):
+        arg_names = ('value', 'lower', 'upper',
+                     'step_increment', 'page_increment', 'page_size')
+        new_args = dict(zip(arg_names, args))
+        new_args.update(kwds)
+
+        # PyGTK compatiblity
+        if 'page_incr' in new_args:
+            new_args['page_increment'] = new_args.pop('page_incr')
+        if 'step_incr' in new_args:
+            new_args['step_increment'] = new_args.pop('step_incr')
+        Gtk.Adjustment.__init__(self, **new_args)
 
         # The value property is set between lower and (upper - page_size).
         # Just in case lower, upper or page_size was still 0 when value
         # was set, we set it again here.
-        if 'value' in kwargs:
-            self.set_value(kwargs['value'])
-
+        if 'value' in new_args:
+            self.set_value(new_args['value'])
 
 Adjustment = override(Adjustment)
 __all__.append('Adjustment')
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class Table(Gtk.Table, Container):
-        __init__ = deprecated_init(Gtk.Table.__init__,
-                                   arg_names=('n_rows', 'n_columns', 'homogeneous'),
-                                   deprecated_aliases={'n_rows': 'rows', 'n_columns': 'columns'},
-                                   category=PyGTKDeprecationWarning)
+class Table(Gtk.Table, Container):
+    def __init__(self, rows=1, columns=1, homogeneous=False, **kwds):
+        if 'n_rows' in kwds:
+            rows = kwds.pop('n_rows')
 
-        def attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, yoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, xpadding=0, ypadding=0):
-            Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
+        if 'n_columns' in kwds:
+            columns = kwds.pop('n_columns')
 
-    Table = override(Table)
-    __all__.append('Table')
+        Gtk.Table.__init__(self, n_rows=rows, n_columns=columns, homogeneous=homogeneous, **kwds)
 
+    def attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, yoptions=Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, xpadding=0, ypadding=0):
+        Gtk.Table.attach(self, child, left_attach, right_attach, top_attach, bottom_attach, xoptions, yoptions, xpadding, ypadding)
 
-class ScrolledWindow(Gtk.ScrolledWindow):
-    __init__ = deprecated_init(Gtk.ScrolledWindow.__init__,
-                               arg_names=('hadjustment', 'vadjustment'),
-                               category=PyGTKDeprecationWarning)
+Table = override(Table)
+__all__.append('Table')
 
 
+class ScrolledWindow(Gtk.ScrolledWindow):
+    def __init__(self, hadjustment=None, vadjustment=None, **kwds):
+        Gtk.ScrolledWindow.__init__(self, hadjustment=hadjustment, vadjustment=vadjustment, **kwds)
+
 ScrolledWindow = override(ScrolledWindow)
 __all__.append('ScrolledWindow')
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class HScrollbar(Gtk.HScrollbar):
-        __init__ = deprecated_init(Gtk.HScrollbar.__init__,
-                                   arg_names=('adjustment',),
-                                   category=PyGTKDeprecationWarning)
+class HScrollbar(Gtk.HScrollbar):
+    def __init__(self, adjustment=None, **kwds):
+        Gtk.HScrollbar.__init__(self, adjustment=adjustment, **kwds)
+
+HScrollbar = override(HScrollbar)
+__all__.append('HScrollbar')
 
-    HScrollbar = override(HScrollbar)
-    __all__.append('HScrollbar')
 
-    class VScrollbar(Gtk.VScrollbar):
-        __init__ = deprecated_init(Gtk.VScrollbar.__init__,
-                                   arg_names=('adjustment',),
-                                   category=PyGTKDeprecationWarning)
+class VScrollbar(Gtk.VScrollbar):
+    def __init__(self, adjustment=None, **kwds):
+        Gtk.VScrollbar.__init__(self, adjustment=adjustment, **kwds)
 
-    VScrollbar = override(VScrollbar)
-    __all__.append('VScrollbar')
+VScrollbar = override(VScrollbar)
+__all__.append('VScrollbar')
 
 
 class Paned(Gtk.Paned):
@@ -1520,43 +1496,37 @@ class Paned(Gtk.Paned):
     def pack2(self, child, resize=True, shrink=True):
         super(Paned, self).pack2(child, resize, shrink)
 
-
 Paned = override(Paned)
 __all__.append('Paned')
 
 
-if Gtk._version in ("2.0", "3.0"):
-    class Arrow(Gtk.Arrow):
-        __init__ = deprecated_init(Gtk.Arrow.__init__,
-                                   arg_names=('arrow_type', 'shadow_type'),
-                                   category=PyGTKDeprecationWarning)
+class Arrow(Gtk.Arrow):
+    def __init__(self, arrow_type, shadow_type, **kwds):
+        Gtk.Arrow.__init__(self, arrow_type=arrow_type,
+                           shadow_type=shadow_type,
+                           **kwds)
 
-    Arrow = override(Arrow)
-    __all__.append('Arrow')
+Arrow = override(Arrow)
+__all__.append('Arrow')
 
-    class IconSet(Gtk.IconSet):
-        def __new__(cls, pixbuf=None):
-            if pixbuf is not None:
-                warnings.warn('Gtk.IconSet(pixbuf) has been deprecated. Please use: '
-                              'Gtk.IconSet.new_from_pixbuf(pixbuf)',
-                              PyGTKDeprecationWarning, stacklevel=2)
-                iconset = Gtk.IconSet.new_from_pixbuf(pixbuf)
-            else:
-                iconset = Gtk.IconSet.__new__(cls)
-            return iconset
 
-        def __init__(self, *args, **kwargs):
-            return super(IconSet, self).__init__()
+class IconSet(Gtk.IconSet):
+    def __new__(cls, pixbuf=None):
+        if pixbuf is not None:
+            iconset = Gtk.IconSet.new_from_pixbuf(pixbuf)
+        else:
+            iconset = Gtk.IconSet.__new__(cls)
+        return iconset
 
-    IconSet = override(IconSet)
-    __all__.append('IconSet')
+IconSet = override(IconSet)
+__all__.append('IconSet')
 
 
 class Viewport(Gtk.Viewport):
-    __init__ = deprecated_init(Gtk.Viewport.__init__,
-                               arg_names=('hadjustment', 'vadjustment'),
-                               category=PyGTKDeprecationWarning)
-
+    def __init__(self, hadjustment=None, vadjustment=None, **kwds):
+        Gtk.Viewport.__init__(self, hadjustment=hadjustment,
+                              vadjustment=vadjustment,
+                              **kwds)
 
 Viewport = override(Viewport)
 __all__.append('Viewport')
@@ -1566,12 +1536,6 @@ class TreeModelFilter(Gtk.TreeModelFilter):
     def set_visible_func(self, func, data=None):
         super(TreeModelFilter, self).set_visible_func(func, data)
 
-    def set_value(self, iter, column, value):
-        # Delegate to child model
-        iter = self.convert_iter_to_child_iter(iter)
-        self.get_model().set_value(iter, column, value)
-
-
 TreeModelFilter = override(TreeModelFilter)
 __all__.append('TreeModelFilter')
 
@@ -1589,13 +1553,18 @@ _Gtk_main_quit = Gtk.main_quit
 def main_quit(*args):
     _Gtk_main_quit()
 
+_Gtk_stock_lookup = Gtk.stock_lookup
 
-if Gtk._version in ("2.0", "3.0"):
-    stock_lookup = strip_boolean_result(Gtk.stock_lookup)
-    __all__.append('stock_lookup')
 
-if Gtk._version == "4.0":
-    Gtk.init_check()
-else:
-    initialized, argv = Gtk.init_check(sys.argv)
-    sys.argv = list(argv)
+@override(Gtk.stock_lookup)
+def stock_lookup(*args):
+    success, item = _Gtk_stock_lookup(*args)
+    if not success:
+        return None
+
+    return item
+
+initialized, argv = Gtk.init_check(sys.argv)
+sys.argv = list(argv)
+if not initialized:
+    raise RuntimeError("Gtk couldn't be initialized")
index e69c91c..5d9ddd6 100644 (file)
@@ -4,7 +4,6 @@ pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
        Gdk.py \
-       GObject.py \
        Gio.py \
        GIMarshallingTests.py \
        Pango.py \
@@ -21,3 +20,5 @@ build_pylinks:
 
 all-local: build_pylinks
 check-local: build_pylinks
+
+-include $(top_srcdir)/git.mk
index 61044db..d5409a3 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -88,51 +34,28 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = gi/overrides
+DIST_COMMON = $(pygioverrides_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(pygioverrides_PYTHON) \
-       $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
+am__v_GEN_0 = @echo "  GEN   " $@;
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
-am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -162,13 +85,10 @@ am__uninstall_files_from_dir = { \
   }
 am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__installdirs = "$(DESTDIR)$(pygioverridesdir)"
-am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
 py_compile = $(top_srcdir)/py-compile
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -177,20 +97,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -204,8 +117,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -223,15 +134,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -241,7 +145,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -249,7 +153,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -263,30 +166,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -335,7 +236,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -349,7 +249,6 @@ pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
        Gdk.py \
-       GObject.py \
        Gio.py \
        GIMarshallingTests.py \
        Pango.py \
@@ -359,7 +258,7 @@ pygioverrides_PYTHON = \
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -371,6 +270,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/overrides/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign gi/overrides/Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -383,9 +283,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -396,11 +296,8 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygioverridesPYTHON: $(pygioverrides_PYTHON)
        @$(NORMAL_INSTALL)
+       test -z "$(pygioverridesdir)" || $(MKDIR_P) "$(DESTDIR)$(pygioverridesdir)"
        @list='$(pygioverrides_PYTHON)'; dlist=; list2=; test -n "$(pygioverridesdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pygioverridesdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pygioverridesdir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -422,31 +319,21 @@ install-pygioverridesPYTHON: $(pygioverrides_PYTHON)
 uninstall-pygioverridesPYTHON:
        @$(NORMAL_UNINSTALL)
        @list='$(pygioverrides_PYTHON)'; test -n "$(pygioverridesdir)" || list=; \
-       py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$py_files" || exit 0; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
        dir='$(DESTDIR)$(pygioverridesdir)'; \
-       pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
-       pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
-       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
-       echo "$$py_files_pep3147";\
-       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
-       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
        st=0; \
-       for files in \
-         "$$py_files" \
-         "$$pyc_files" \
-         "$$pyo_files" \
-         "$$pyc_files_pep3147" \
-         "$$pyo_files_pep3147" \
-       ; do \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
          $(am__uninstall_files_from_dir) || st=$$?; \
        done; \
        exit $$st
-tags TAGS:
-
-ctags CTAGS:
+tags: TAGS
+TAGS:
 
-cscope cscopelist:
+ctags: CTAGS
+CTAGS:
 
 
 distdir: $(DISTFILES)
@@ -586,19 +473,17 @@ uninstall-am: uninstall-pygioverridesPYTHON
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-am check-local clean \
-       clean-generic clean-libtool cscopelist-am ctags-am distclean \
-       distclean-generic distclean-libtool distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-pygioverridesPYTHON \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags-am uninstall uninstall-am uninstall-pygioverridesPYTHON
-
-.PRECIOUS: Makefile
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-pygioverridesPYTHON install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-pygioverridesPYTHON
 
 
 # if we build in a separate tree, we need to symlink the *.py files from the
@@ -612,6 +497,8 @@ build_pylinks:
 all-local: build_pylinks
 check-local: build_pylinks
 
+-include $(top_srcdir)/git.mk
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 067a628..34c76cc 100644 (file)
 # USA
 
 from ..overrides import override
-from ..module import get_introspection_module
+from ..importer import modules
 
-Pango = get_introspection_module('Pango')
+Pango = modules['Pango']._introspection_module
 
 __all__ = []
 
 
+class Context(Pango.Context):
+
+    def get_metrics(self, desc, language=None):
+        return super(Context, self).get_metrics(desc, language)
+
+Context = override(Context)
+__all__.append('Context')
+
+
 class FontDescription(Pango.FontDescription):
 
     def __new__(cls, string=None):
@@ -34,10 +43,6 @@ class FontDescription(Pango.FontDescription):
         else:
             return Pango.FontDescription.__new__(cls)
 
-    def __init__(self, *args, **kwargs):
-        return super(FontDescription, self).__init__()
-
-
 FontDescription = override(FontDescription)
 __all__.append('FontDescription')
 
@@ -47,9 +52,13 @@ class Layout(Pango.Layout):
     def __new__(cls, context):
         return Pango.Layout.new(context)
 
+    def __init__(self, context, **kwds):
+        # simply discard 'context', since it was set by
+        # __new__ and it is not a PangoLayout property
+        super(Layout, self).__init__(**kwds)
+
     def set_markup(self, text, length=-1):
         super(Layout, self).set_markup(text, length)
 
-
 Layout = override(Layout)
 __all__.append('Layout')
index e262b6c..10144e5 100644 (file)
 import types
-import warnings
-import importlib
-import sys
-from pkgutil import get_loader
 
-from gi import PyGIDeprecationWarning
-from gi._gi import CallableInfo
-from gi._constants import \
-    TYPE_NONE, \
-    TYPE_INVALID
+from gi import _gobject
 
-# support overrides in different directories than our gi module
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
+registry = None
 
 
-# namespace -> (attr, replacement)
-_deprecated_attrs = {}
+class _Registry(dict):
+    def __setitem__(self, key, value):
+        '''We do checks here to make sure only submodules of the override
+        module are added.  Key and value should be the same object and come
+        from the gi.override module.
 
+        We add the override to the dict as "override_module.name".  For instance
+        if we were overriding Gtk.Button you would retrive it as such:
+        registry['Gtk.Button']
+        '''
+        if not key == value:
+            raise KeyError('You have tried to modify the registry.  This should only be done by the override decorator')
 
-def wraps(wrapped):
-    def assign(wrapper):
-        wrapper.__name__ = wrapped.__name__
-        wrapper.__module__ = wrapped.__module__
-        return wrapper
-    return assign
-
-
-class OverridesProxyModule(types.ModuleType):
-    """Wraps a introspection module and contains all overrides"""
-
-    def __init__(self, introspection_module):
-        super(OverridesProxyModule, self).__init__(
-            introspection_module.__name__)
-        self._introspection_module = introspection_module
-
-    def __getattr__(self, name):
-        return getattr(self._introspection_module, name)
-
-    def __dir__(self):
-        result = set(dir(self.__class__))
-        result.update(self.__dict__.keys())
-        result.update(dir(self._introspection_module))
-        return sorted(result)
-
-    def __repr__(self):
-        return "<%s %r>" % (type(self).__name__, self._introspection_module)
-
-
-class _DeprecatedAttribute(object):
-    """A deprecation descriptor for OverridesProxyModule subclasses.
-
-    Emits a PyGIDeprecationWarning on every access and tries to act as a
-    normal instance attribute (can be replaced and deleted).
-    """
-
-    def __init__(self, namespace, attr, value, replacement):
-        self._attr = attr
-        self._value = value
-        self._warning = PyGIDeprecationWarning(
-            '%s.%s is deprecated; use %s instead' % (
-                namespace, attr, replacement))
-
-    def __get__(self, instance, owner):
-        if instance is None:
-            raise AttributeError(self._attr)
-        warnings.warn(self._warning, stacklevel=2)
-        return self._value
-
-    def __set__(self, instance, value):
-        attr = self._attr
-        # delete the descriptor, then set the instance value
-        delattr(type(instance), attr)
-        setattr(instance, attr, value)
-
-    def __delete__(self, instance):
-        # delete the descriptor
-        delattr(type(instance), self._attr)
-
-
-def load_overrides(introspection_module):
-    """Loads overrides for an introspection module.
-
-    Either returns the same module again in case there are no overrides or a
-    proxy module including overrides. Doesn't cache the result.
-    """
-
-    namespace = introspection_module.__name__.rsplit(".", 1)[-1]
-    module_key = 'gi.repository.' + namespace
-
-    # We use sys.modules so overrides can import from gi.repository
-    # but restore everything at the end so this doesn't have any side effects
-    has_old = module_key in sys.modules
-    old_module = sys.modules.get(module_key)
-
-    # Create a new sub type, so we can separate descriptors like
-    # _DeprecatedAttribute for each namespace.
-    proxy_type = type(namespace + "ProxyModule", (OverridesProxyModule, ), {})
-
-    proxy = proxy_type(introspection_module)
-    sys.modules[module_key] = proxy
-
-    # backwards compat:
-    # gedit uses gi.importer.modules['Gedit']._introspection_module
-    from ..importer import modules
-    assert hasattr(proxy, "_introspection_module")
-    modules[namespace] = proxy
-
-    try:
-        override_package_name = 'gi.overrides.' + namespace
-
-        # http://bugs.python.org/issue14710
         try:
-            override_loader = get_loader(override_package_name)
-
+            info = getattr(value, '__info__')
         except AttributeError:
-            override_loader = None
-
-        # Avoid checking for an ImportError, an override might
-        # depend on a missing module thus causing an ImportError
-        if override_loader is None:
-            return introspection_module
-
-        override_mod = importlib.import_module(override_package_name)
+            raise TypeError('Can not override a type %s, which is not in a gobject introspection typelib' % value.__name__)
 
-    finally:
-        del modules[namespace]
-        del sys.modules[module_key]
-        if has_old:
-            sys.modules[module_key] = old_module
+        if not value.__module__.startswith('gi.overrides'):
+            raise KeyError('You have tried to modify the registry outside of the overrides module.  This is not allowed')
 
-    # backwards compat: for gst-python/gstmodule.c,
-    # which tries to access Gst.Fraction through
-    # Gst._overrides_module.Fraction. We assign the proxy instead as that
-    # contains all overridden classes like Fraction during import anyway and
-    # there is no need to keep the real override module alive.
-    proxy._overrides_module = proxy
-
-    override_all = []
-    if hasattr(override_mod, "__all__"):
-        override_all = override_mod.__all__
-
-    for var in override_all:
-        try:
-            item = getattr(override_mod, var)
-        except (AttributeError, TypeError):
-            # Gedit puts a non-string in __all__, so catch TypeError here
-            continue
-        setattr(proxy, var, item)
-
-    # Replace deprecated module level attributes with a descriptor
-    # which emits a warning when accessed.
-    for attr, replacement in _deprecated_attrs.pop(namespace, []):
-        try:
-            value = getattr(proxy, attr)
-        except AttributeError:
-            raise AssertionError(
-                "%s was set deprecated but wasn't added to __all__" % attr)
-        delattr(proxy, attr)
-        deprecated_attr = _DeprecatedAttribute(
-            namespace, attr, value, replacement)
-        setattr(proxy_type, attr, deprecated_attr)
+        g_type = info.get_g_type()
+        assert g_type != _gobject.TYPE_NONE
+        if g_type != _gobject.TYPE_INVALID:
+            g_type.pytype = value
+
+            # strip gi.overrides from module name
+            module = value.__module__[13:]
+            key = "%s.%s" % (module, value.__name__)
+            super(_Registry, self).__setitem__(key, value)
+
+    def register(self, override_class):
+        self[override_class] = override_class
+
+
+class overridefunc(object):
+    '''decorator for overriding a function'''
+    def __init__(self, func):
+        if not hasattr(func, '__info__'):
+            raise TypeError("func must be an gi function")
+        from ..importer import modules
+        self.module = modules[func.__module__]._introspection_module
+
+    def __call__(self, func):
+        def wrapper(*args, **kwargs):
+            return func(*args, **kwargs)
+        wrapper.__name__ = func.__name__
+        setattr(self.module, func.__name__, wrapper)
+        return wrapper
 
-    return proxy
+registry = _Registry()
 
 
 def override(type_):
-    """Decorator for registering an override.
-
-    Other than objects added to __all__, these can get referenced in the same
-    override module via the gi.repository module (get_parent_for_object() does
-    for example), so they have to be added to the module immediately.
-    """
-
-    if isinstance(type_, CallableInfo):
-        func = type_
-        namespace = func.__module__.rsplit('.', 1)[-1]
-        module = sys.modules["gi.repository." + namespace]
-
-        def wrapper(func):
-            setattr(module, func.__name__, func)
-            return func
-
-        return wrapper
-    elif isinstance(type_, types.FunctionType):
-        raise TypeError("func must be a gi function, got %s" % type_)
+    '''Decorator for registering an override'''
+    if type(type_) == types.FunctionType:
+        return overridefunc(type_)
     else:
-        try:
-            info = getattr(type_, '__info__')
-        except AttributeError:
-            raise TypeError(
-                'Can not override a type %s, which is not in a gobject '
-                'introspection typelib' % type_.__name__)
-
-        if not type_.__module__.startswith('gi.overrides'):
-            raise KeyError(
-                'You have tried override outside of the overrides module. '
-                'This is not allowed (%s, %s)' % (type_, type_.__module__))
-
-        g_type = info.get_g_type()
-        assert g_type != TYPE_NONE
-        if g_type != TYPE_INVALID:
-            g_type.pytype = type_
-
-        namespace = type_.__module__.rsplit(".", 1)[-1]
-        module = sys.modules["gi.repository." + namespace]
-        setattr(module, type_.__name__, type_)
-
+        registry.register(type_)
         return type_
-
-
-overridefunc = override
-"""Deprecated"""
-
-
-def deprecated(fn, replacement):
-    """Decorator for marking methods and classes as deprecated"""
-    @wraps(fn)
-    def wrapped(*args, **kwargs):
-        warnings.warn('%s is deprecated; use %s instead' % (fn.__name__, replacement),
-                      PyGIDeprecationWarning, stacklevel=2)
-        return fn(*args, **kwargs)
-    return wrapped
-
-
-def deprecated_attr(namespace, attr, replacement):
-    """Marks a module level attribute as deprecated. Accessing it will emit
-    a PyGIDeprecationWarning warning.
-
-    e.g. for ``deprecated_attr("GObject", "STATUS_FOO", "GLib.Status.FOO")``
-    accessing GObject.STATUS_FOO will emit:
-
-        "GObject.STATUS_FOO is deprecated; use GLib.Status.FOO instead"
-
-    :param str namespace:
-        The namespace of the override this is called in.
-    :param str namespace:
-        The attribute name (which gets added to __all__).
-    :param str replacement:
-        The replacement text which will be included in the warning.
-    """
-
-    _deprecated_attrs.setdefault(namespace, []).append((attr, replacement))
-
-
-def deprecated_init(super_init_func, arg_names, ignore=tuple(),
-                    deprecated_aliases={}, deprecated_defaults={},
-                    category=PyGIDeprecationWarning,
-                    stacklevel=2):
-    """Wrapper for deprecating GObject based __init__ methods which specify
-    defaults already available or non-standard defaults.
-
-    :param callable super_init_func:
-        Initializer to wrap.
-    :param list arg_names:
-        Ordered argument name list.
-    :param list ignore:
-        List of argument names to ignore when calling the wrapped function.
-        This is useful for function which take a non-standard keyword that is munged elsewhere.
-    :param dict deprecated_aliases:
-        Dictionary mapping a keyword alias to the actual g_object_newv keyword.
-    :param dict deprecated_defaults:
-        Dictionary of non-standard defaults that will be used when the
-        keyword is not explicitly passed.
-    :param Exception category:
-        Exception category of the error.
-    :param int stacklevel:
-        Stack level for the deprecation passed on to warnings.warn
-    :returns: Wrapped version of ``super_init_func`` which gives a deprecation
-        warning when non-keyword args or aliases are used.
-    :rtype: callable
-    """
-    # We use a list of argument names to maintain order of the arguments
-    # being deprecated. This allows calls with positional arguments to
-    # continue working but with a deprecation message.
-    def new_init(self, *args, **kwargs):
-        """Initializer for a GObject based classes with support for property
-        sets through the use of explicit keyword arguments.
-        """
-        # Print warnings for calls with positional arguments.
-        if args:
-            warnings.warn('Using positional arguments with the GObject constructor has been deprecated. '
-                          'Please specify keyword(s) for "%s" or use a class specific constructor. '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations' %
-                          ', '.join(arg_names[:len(args)]),
-                          category, stacklevel=stacklevel)
-            new_kwargs = dict(zip(arg_names, args))
-        else:
-            new_kwargs = {}
-        new_kwargs.update(kwargs)
-
-        # Print warnings for alias usage and transfer them into the new key.
-        aliases_used = []
-        for key, alias in deprecated_aliases.items():
-            if alias in new_kwargs:
-                new_kwargs[key] = new_kwargs.pop(alias)
-                aliases_used.append(key)
-
-        if aliases_used:
-            warnings.warn('The keyword(s) "%s" have been deprecated in favor of "%s" respectively. '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations' %
-                          (', '.join(deprecated_aliases[k] for k in sorted(aliases_used)),
-                           ', '.join(sorted(aliases_used))),
-                          category, stacklevel=stacklevel)
-
-        # Print warnings for defaults different than what is already provided by the property
-        defaults_used = []
-        for key, value in deprecated_defaults.items():
-            if key not in new_kwargs:
-                new_kwargs[key] = deprecated_defaults[key]
-                defaults_used.append(key)
-
-        if defaults_used:
-            warnings.warn('Initializer is relying on deprecated non-standard '
-                          'defaults. Please update to explicitly use: %s '
-                          'See: https://wiki.gnome.org/PyGObject/InitializerDeprecations' %
-                          ', '.join('%s=%s' % (k, deprecated_defaults[k]) for k in sorted(defaults_used)),
-                          category, stacklevel=stacklevel)
-
-        # Remove keywords that should be ignored.
-        for key in ignore:
-            if key in new_kwargs:
-                new_kwargs.pop(key)
-
-        return super_init_func(self, **new_kwargs)
-
-    return new_init
-
-
-def strip_boolean_result(method, exc_type=None, exc_str=None, fail_ret=None):
-    """Translate method's return value for stripping off success flag.
-
-    There are a lot of methods which return a "success" boolean and have
-    several out arguments. Translate such a method to return the out arguments
-    on success and None on failure.
-    """
-    @wraps(method)
-    def wrapped(*args, **kwargs):
-        ret = method(*args, **kwargs)
-        if ret[0]:
-            if len(ret) == 2:
-                return ret[1]
-            else:
-                return ret[1:]
-        else:
-            if exc_type:
-                raise exc_type(exc_str or 'call failed')
-            return fail_ret
-    return wrapped
index 07ce277..35ee8eb 100644 (file)
 # Lesser General Public License for more details.
 #
 # You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
 
-import sys
-import warnings
-
-from ..module import get_introspection_module
-
-Gdk = get_introspection_module('Gdk')
-
-warnings.warn('keysyms has been deprecated. Please use Gdk.KEY_<name> instead.',
-              RuntimeWarning)
-
-_modname = globals()['__name__']
-_keysyms = sys.modules[_modname]
-
-for name in dir(Gdk):
-    if name.startswith('KEY_'):
-        target = name[4:]
-        if target[0] in '0123456789':
-            target = '_' + target
-        value = getattr(Gdk, name)
-        setattr(_keysyms, target, value)
-
-
-# Not found in Gdk but left for compatibility.
+VoidSymbol = 0xFFFFFF
+BackSpace = 0xFF08
+Tab = 0xFF09
+Linefeed = 0xFF0A
+Clear = 0xFF0B
+Return = 0xFF0D
+Pause = 0xFF13
+Scroll_Lock = 0xFF14
+Sys_Req = 0xFF15
+Escape = 0xFF1B
+Delete = 0xFFFF
+Multi_key = 0xFF20
+Codeinput = 0xFF37
+SingleCandidate = 0xFF3C
+MultipleCandidate = 0xFF3D
+PreviousCandidate = 0xFF3E
+Kanji = 0xFF21
+Muhenkan = 0xFF22
+Henkan_Mode = 0xFF23
+Henkan = 0xFF23
+Romaji = 0xFF24
+Hiragana = 0xFF25
+Katakana = 0xFF26
+Hiragana_Katakana = 0xFF27
+Zenkaku = 0xFF28
+Hankaku = 0xFF29
+Zenkaku_Hankaku = 0xFF2A
+Touroku = 0xFF2B
+Massyo = 0xFF2C
+Kana_Lock = 0xFF2D
+Kana_Shift = 0xFF2E
+Eisu_Shift = 0xFF2F
+Eisu_toggle = 0xFF30
+Kanji_Bangou = 0xFF37
+Zen_Koho = 0xFF3D
+Mae_Koho = 0xFF3E
+Home = 0xFF50
+Left = 0xFF51
+Up = 0xFF52
+Right = 0xFF53
+Down = 0xFF54
+Prior = 0xFF55
+Page_Up = 0xFF55
+Next = 0xFF56
+Page_Down = 0xFF56
+End = 0xFF57
+Begin = 0xFF58
+Select = 0xFF60
+Print = 0xFF61
+Execute = 0xFF62
+Insert = 0xFF63
+Undo = 0xFF65
+Redo = 0xFF66
+Menu = 0xFF67
+Find = 0xFF68
+Cancel = 0xFF69
+Help = 0xFF6A
+Break = 0xFF6B
+Mode_switch = 0xFF7E
+script_switch = 0xFF7E
+Num_Lock = 0xFF7F
+KP_Space = 0xFF80
+KP_Tab = 0xFF89
+KP_Enter = 0xFF8D
+KP_F1 = 0xFF91
+KP_F2 = 0xFF92
+KP_F3 = 0xFF93
+KP_F4 = 0xFF94
+KP_Home = 0xFF95
+KP_Left = 0xFF96
+KP_Up = 0xFF97
+KP_Right = 0xFF98
+KP_Down = 0xFF99
+KP_Prior = 0xFF9A
+KP_Page_Up = 0xFF9A
+KP_Next = 0xFF9B
+KP_Page_Down = 0xFF9B
+KP_End = 0xFF9C
+KP_Begin = 0xFF9D
+KP_Insert = 0xFF9E
+KP_Delete = 0xFF9F
+KP_Equal = 0xFFBD
+KP_Multiply = 0xFFAA
+KP_Add = 0xFFAB
+KP_Separator = 0xFFAC
+KP_Subtract = 0xFFAD
+KP_Decimal = 0xFFAE
+KP_Divide = 0xFFAF
+KP_0 = 0xFFB0
+KP_1 = 0xFFB1
+KP_2 = 0xFFB2
+KP_3 = 0xFFB3
+KP_4 = 0xFFB4
+KP_5 = 0xFFB5
+KP_6 = 0xFFB6
+KP_7 = 0xFFB7
+KP_8 = 0xFFB8
+KP_9 = 0xFFB9
+F1 = 0xFFBE
+F2 = 0xFFBF
+F3 = 0xFFC0
+F4 = 0xFFC1
+F5 = 0xFFC2
+F6 = 0xFFC3
+F7 = 0xFFC4
+F8 = 0xFFC5
+F9 = 0xFFC6
+F10 = 0xFFC7
+F11 = 0xFFC8
+L1 = 0xFFC8
+F12 = 0xFFC9
+L2 = 0xFFC9
+F13 = 0xFFCA
+L3 = 0xFFCA
+F14 = 0xFFCB
+L4 = 0xFFCB
+F15 = 0xFFCC
+L5 = 0xFFCC
+F16 = 0xFFCD
+L6 = 0xFFCD
+F17 = 0xFFCE
+L7 = 0xFFCE
+F18 = 0xFFCF
+L8 = 0xFFCF
+F19 = 0xFFD0
+L9 = 0xFFD0
+F20 = 0xFFD1
+L10 = 0xFFD1
+F21 = 0xFFD2
+R1 = 0xFFD2
+F22 = 0xFFD3
+R2 = 0xFFD3
+F23 = 0xFFD4
+R3 = 0xFFD4
+F24 = 0xFFD5
+R4 = 0xFFD5
+F25 = 0xFFD6
+R5 = 0xFFD6
+F26 = 0xFFD7
+R6 = 0xFFD7
+F27 = 0xFFD8
+R7 = 0xFFD8
+F28 = 0xFFD9
+R8 = 0xFFD9
+F29 = 0xFFDA
+R9 = 0xFFDA
+F30 = 0xFFDB
+R10 = 0xFFDB
+F31 = 0xFFDC
+R11 = 0xFFDC
+F32 = 0xFFDD
+R12 = 0xFFDD
+F33 = 0xFFDE
+R13 = 0xFFDE
+F34 = 0xFFDF
+R14 = 0xFFDF
+F35 = 0xFFE0
+R15 = 0xFFE0
+Shift_L = 0xFFE1
+Shift_R = 0xFFE2
+Control_L = 0xFFE3
+Control_R = 0xFFE4
+Caps_Lock = 0xFFE5
+Shift_Lock = 0xFFE6
+Meta_L = 0xFFE7
+Meta_R = 0xFFE8
+Alt_L = 0xFFE9
+Alt_R = 0xFFEA
+Super_L = 0xFFEB
+Super_R = 0xFFEC
+Hyper_L = 0xFFED
+Hyper_R = 0xFFEE
+ISO_Lock = 0xFE01
+ISO_Level2_Latch = 0xFE02
+ISO_Level3_Shift = 0xFE03
+ISO_Level3_Latch = 0xFE04
+ISO_Level3_Lock = 0xFE05
+ISO_Group_Shift = 0xFF7E
+ISO_Group_Latch = 0xFE06
+ISO_Group_Lock = 0xFE07
+ISO_Next_Group = 0xFE08
+ISO_Next_Group_Lock = 0xFE09
+ISO_Prev_Group = 0xFE0A
+ISO_Prev_Group_Lock = 0xFE0B
+ISO_First_Group = 0xFE0C
+ISO_First_Group_Lock = 0xFE0D
+ISO_Last_Group = 0xFE0E
+ISO_Last_Group_Lock = 0xFE0F
+ISO_Left_Tab = 0xFE20
+ISO_Move_Line_Up = 0xFE21
+ISO_Move_Line_Down = 0xFE22
+ISO_Partial_Line_Up = 0xFE23
+ISO_Partial_Line_Down = 0xFE24
+ISO_Partial_Space_Left = 0xFE25
+ISO_Partial_Space_Right = 0xFE26
+ISO_Set_Margin_Left = 0xFE27
+ISO_Set_Margin_Right = 0xFE28
+ISO_Release_Margin_Left = 0xFE29
+ISO_Release_Margin_Right = 0xFE2A
+ISO_Release_Both_Margins = 0xFE2B
+ISO_Fast_Cursor_Left = 0xFE2C
+ISO_Fast_Cursor_Right = 0xFE2D
+ISO_Fast_Cursor_Up = 0xFE2E
+ISO_Fast_Cursor_Down = 0xFE2F
+ISO_Continuous_Underline = 0xFE30
+ISO_Discontinuous_Underline = 0xFE31
+ISO_Emphasize = 0xFE32
+ISO_Center_Object = 0xFE33
+ISO_Enter = 0xFE34
+dead_grave = 0xFE50
+dead_acute = 0xFE51
+dead_circumflex = 0xFE52
+dead_tilde = 0xFE53
+dead_macron = 0xFE54
+dead_breve = 0xFE55
+dead_abovedot = 0xFE56
+dead_diaeresis = 0xFE57
+dead_abovering = 0xFE58
+dead_doubleacute = 0xFE59
+dead_caron = 0xFE5A
+dead_cedilla = 0xFE5B
+dead_ogonek = 0xFE5C
+dead_iota = 0xFE5D
+dead_voiced_sound = 0xFE5E
+dead_semivoiced_sound = 0xFE5F
+dead_belowdot = 0xFE60
+First_Virtual_Screen = 0xFED0
+Prev_Virtual_Screen = 0xFED1
+Next_Virtual_Screen = 0xFED2
+Last_Virtual_Screen = 0xFED4
+Terminate_Server = 0xFED5
+AccessX_Enable = 0xFE70
+AccessX_Feedback_Enable = 0xFE71
+RepeatKeys_Enable = 0xFE72
+SlowKeys_Enable = 0xFE73
+BounceKeys_Enable = 0xFE74
+StickyKeys_Enable = 0xFE75
+MouseKeys_Enable = 0xFE76
+MouseKeys_Accel_Enable = 0xFE77
+Overlay1_Enable = 0xFE78
+Overlay2_Enable = 0xFE79
+AudibleBell_Enable = 0xFE7A
+Pointer_Left = 0xFEE0
+Pointer_Right = 0xFEE1
+Pointer_Up = 0xFEE2
+Pointer_Down = 0xFEE3
+Pointer_UpLeft = 0xFEE4
+Pointer_UpRight = 0xFEE5
+Pointer_DownLeft = 0xFEE6
+Pointer_DownRight = 0xFEE7
+Pointer_Button_Dflt = 0xFEE8
+Pointer_Button1 = 0xFEE9
+Pointer_Button2 = 0xFEEA
+Pointer_Button3 = 0xFEEB
+Pointer_Button4 = 0xFEEC
+Pointer_Button5 = 0xFEED
+Pointer_DblClick_Dflt = 0xFEEE
+Pointer_DblClick1 = 0xFEEF
+Pointer_DblClick2 = 0xFEF0
+Pointer_DblClick3 = 0xFEF1
+Pointer_DblClick4 = 0xFEF2
+Pointer_DblClick5 = 0xFEF3
+Pointer_Drag_Dflt = 0xFEF4
+Pointer_Drag1 = 0xFEF5
+Pointer_Drag2 = 0xFEF6
+Pointer_Drag3 = 0xFEF7
+Pointer_Drag4 = 0xFEF8
+Pointer_Drag5 = 0xFEFD
+Pointer_EnableKeys = 0xFEF9
+Pointer_Accelerate = 0xFEFA
+Pointer_DfltBtnNext = 0xFEFB
+Pointer_DfltBtnPrev = 0xFEFC
+_3270_Duplicate = 0xFD01
+_3270_FieldMark = 0xFD02
+_3270_Right2 = 0xFD03
+_3270_Left2 = 0xFD04
+_3270_BackTab = 0xFD05
+_3270_EraseEOF = 0xFD06
+_3270_EraseInput = 0xFD07
+_3270_Reset = 0xFD08
+_3270_Quit = 0xFD09
+_3270_PA1 = 0xFD0A
+_3270_PA2 = 0xFD0B
+_3270_PA3 = 0xFD0C
+_3270_Test = 0xFD0D
+_3270_Attn = 0xFD0E
+_3270_CursorBlink = 0xFD0F
+_3270_AltCursor = 0xFD10
+_3270_KeyClick = 0xFD11
+_3270_Jump = 0xFD12
+_3270_Ident = 0xFD13
+_3270_Rule = 0xFD14
+_3270_Copy = 0xFD15
+_3270_Play = 0xFD16
+_3270_Setup = 0xFD17
+_3270_Record = 0xFD18
+_3270_ChangeScreen = 0xFD19
+_3270_DeleteWord = 0xFD1A
+_3270_ExSelect = 0xFD1B
+_3270_CursorSelect = 0xFD1C
+_3270_PrintScreen = 0xFD1D
+_3270_Enter = 0xFD1E
+space = 0x020
+exclam = 0x021
+quotedbl = 0x022
+numbersign = 0x023
+dollar = 0x024
+percent = 0x025
+ampersand = 0x026
+apostrophe = 0x027
+quoteright = 0x027
+parenleft = 0x028
+parenright = 0x029
+asterisk = 0x02a
+plus = 0x02b
+comma = 0x02c
+minus = 0x02d
+period = 0x02e
+slash = 0x02f
+_0 = 0x030
+_1 = 0x031
+_2 = 0x032
+_3 = 0x033
+_4 = 0x034
+_5 = 0x035
+_6 = 0x036
+_7 = 0x037
+_8 = 0x038
+_9 = 0x039
+colon = 0x03a
+semicolon = 0x03b
+less = 0x03c
+equal = 0x03d
+greater = 0x03e
+question = 0x03f
+at = 0x040
+A = 0x041
+B = 0x042
+C = 0x043
+D = 0x044
+E = 0x045
+F = 0x046
+G = 0x047
+H = 0x048
+I = 0x049
+J = 0x04a
+K = 0x04b
+L = 0x04c
+M = 0x04d
+N = 0x04e
+O = 0x04f
+P = 0x050
+Q = 0x051
+R = 0x052
+S = 0x053
+T = 0x054
+U = 0x055
+V = 0x056
+W = 0x057
+X = 0x058
+Y = 0x059
+Z = 0x05a
+bracketleft = 0x05b
+backslash = 0x05c
+bracketright = 0x05d
+asciicircum = 0x05e
+underscore = 0x05f
+grave = 0x060
+quoteleft = 0x060
+a = 0x061
+b = 0x062
+c = 0x063
+d = 0x064
+e = 0x065
+f = 0x066
+g = 0x067
+h = 0x068
+i = 0x069
+j = 0x06a
+k = 0x06b
+l = 0x06c
+m = 0x06d
+n = 0x06e
+o = 0x06f
+p = 0x070
+q = 0x071
+r = 0x072
+s = 0x073
+t = 0x074
+u = 0x075
+v = 0x076
+w = 0x077
+x = 0x078
+y = 0x079
+z = 0x07a
+braceleft = 0x07b
+bar = 0x07c
+braceright = 0x07d
+asciitilde = 0x07e
+nobreakspace = 0x0a0
+exclamdown = 0x0a1
+cent = 0x0a2
+sterling = 0x0a3
+currency = 0x0a4
+yen = 0x0a5
+brokenbar = 0x0a6
+section = 0x0a7
+diaeresis = 0x0a8
+copyright = 0x0a9
+ordfeminine = 0x0aa
+guillemotleft = 0x0ab
+notsign = 0x0ac
+hyphen = 0x0ad
+registered = 0x0ae
+macron = 0x0af
+degree = 0x0b0
+plusminus = 0x0b1
+twosuperior = 0x0b2
+threesuperior = 0x0b3
+acute = 0x0b4
+mu = 0x0b5
+paragraph = 0x0b6
+periodcentered = 0x0b7
+cedilla = 0x0b8
+onesuperior = 0x0b9
+masculine = 0x0ba
+guillemotright = 0x0bb
+onequarter = 0x0bc
+onehalf = 0x0bd
+threequarters = 0x0be
+questiondown = 0x0bf
+Agrave = 0x0c0
+Aacute = 0x0c1
+Acircumflex = 0x0c2
+Atilde = 0x0c3
+Adiaeresis = 0x0c4
+Aring = 0x0c5
+AE = 0x0c6
+Ccedilla = 0x0c7
+Egrave = 0x0c8
+Eacute = 0x0c9
+Ecircumflex = 0x0ca
+Ediaeresis = 0x0cb
+Igrave = 0x0cc
+Iacute = 0x0cd
+Icircumflex = 0x0ce
+Idiaeresis = 0x0cf
+ETH = 0x0d0
+Eth = 0x0d0
+Ntilde = 0x0d1
+Ograve = 0x0d2
+Oacute = 0x0d3
+Ocircumflex = 0x0d4
+Otilde = 0x0d5
+Odiaeresis = 0x0d6
+multiply = 0x0d7
+Ooblique = 0x0d8
+Ugrave = 0x0d9
+Uacute = 0x0da
+Ucircumflex = 0x0db
+Udiaeresis = 0x0dc
+Yacute = 0x0dd
+THORN = 0x0de
+Thorn = 0x0de
+ssharp = 0x0df
+agrave = 0x0e0
+aacute = 0x0e1
+acircumflex = 0x0e2
+atilde = 0x0e3
+adiaeresis = 0x0e4
+aring = 0x0e5
+ae = 0x0e6
+ccedilla = 0x0e7
+egrave = 0x0e8
+eacute = 0x0e9
+ecircumflex = 0x0ea
+ediaeresis = 0x0eb
+igrave = 0x0ec
+iacute = 0x0ed
+icircumflex = 0x0ee
+idiaeresis = 0x0ef
+eth = 0x0f0
+ntilde = 0x0f1
+ograve = 0x0f2
+oacute = 0x0f3
+ocircumflex = 0x0f4
+otilde = 0x0f5
+odiaeresis = 0x0f6
+division = 0x0f7
+oslash = 0x0f8
+ugrave = 0x0f9
+uacute = 0x0fa
+ucircumflex = 0x0fb
+udiaeresis = 0x0fc
+yacute = 0x0fd
+thorn = 0x0fe
+ydiaeresis = 0x0ff
+Aogonek = 0x1a1
+breve = 0x1a2
+Lstroke = 0x1a3
+Lcaron = 0x1a5
+Sacute = 0x1a6
+Scaron = 0x1a9
+Scedilla = 0x1aa
+Tcaron = 0x1ab
+Zacute = 0x1ac
+Zcaron = 0x1ae
+Zabovedot = 0x1af
+aogonek = 0x1b1
+ogonek = 0x1b2
+lstroke = 0x1b3
+lcaron = 0x1b5
+sacute = 0x1b6
+caron = 0x1b7
+scaron = 0x1b9
+scedilla = 0x1ba
+tcaron = 0x1bb
+zacute = 0x1bc
+doubleacute = 0x1bd
+zcaron = 0x1be
+zabovedot = 0x1bf
+Racute = 0x1c0
+Abreve = 0x1c3
+Lacute = 0x1c5
+Cacute = 0x1c6
+Ccaron = 0x1c8
+Eogonek = 0x1ca
+Ecaron = 0x1cc
+Dcaron = 0x1cf
+Dstroke = 0x1d0
+Nacute = 0x1d1
+Ncaron = 0x1d2
+Odoubleacute = 0x1d5
+Rcaron = 0x1d8
+Uring = 0x1d9
+Udoubleacute = 0x1db
+Tcedilla = 0x1de
+racute = 0x1e0
+abreve = 0x1e3
+lacute = 0x1e5
+cacute = 0x1e6
+ccaron = 0x1e8
+eogonek = 0x1ea
+ecaron = 0x1ec
+dcaron = 0x1ef
+dstroke = 0x1f0
+nacute = 0x1f1
+ncaron = 0x1f2
+odoubleacute = 0x1f5
+udoubleacute = 0x1fb
+rcaron = 0x1f8
+uring = 0x1f9
+tcedilla = 0x1fe
+abovedot = 0x1ff
+Hstroke = 0x2a1
+Hcircumflex = 0x2a6
+Iabovedot = 0x2a9
+Gbreve = 0x2ab
+Jcircumflex = 0x2ac
+hstroke = 0x2b1
+hcircumflex = 0x2b6
+idotless = 0x2b9
+gbreve = 0x2bb
+jcircumflex = 0x2bc
+Cabovedot = 0x2c5
+Ccircumflex = 0x2c6
+Gabovedot = 0x2d5
+Gcircumflex = 0x2d8
+Ubreve = 0x2dd
+Scircumflex = 0x2de
+cabovedot = 0x2e5
+ccircumflex = 0x2e6
+gabovedot = 0x2f5
+gcircumflex = 0x2f8
+ubreve = 0x2fd
+scircumflex = 0x2fe
+kra = 0x3a2
+kappa = 0x3a2
+Rcedilla = 0x3a3
+Itilde = 0x3a5
+Lcedilla = 0x3a6
+Emacron = 0x3aa
+Gcedilla = 0x3ab
+Tslash = 0x3ac
+rcedilla = 0x3b3
+itilde = 0x3b5
+lcedilla = 0x3b6
+emacron = 0x3ba
+gcedilla = 0x3bb
+tslash = 0x3bc
+ENG = 0x3bd
+eng = 0x3bf
+Amacron = 0x3c0
+Iogonek = 0x3c7
+Eabovedot = 0x3cc
+Imacron = 0x3cf
+Ncedilla = 0x3d1
+Omacron = 0x3d2
+Kcedilla = 0x3d3
+Uogonek = 0x3d9
+Utilde = 0x3dd
+Umacron = 0x3de
+amacron = 0x3e0
+iogonek = 0x3e7
+eabovedot = 0x3ec
+imacron = 0x3ef
+ncedilla = 0x3f1
+omacron = 0x3f2
+kcedilla = 0x3f3
+uogonek = 0x3f9
+utilde = 0x3fd
+umacron = 0x3fe
+OE = 0x13bc
+oe = 0x13bd
+Ydiaeresis = 0x13be
+overline = 0x47e
+kana_fullstop = 0x4a1
+kana_openingbracket = 0x4a2
+kana_closingbracket = 0x4a3
+kana_comma = 0x4a4
+kana_conjunctive = 0x4a5
+kana_middledot = 0x4a5
+kana_WO = 0x4a6
+kana_a = 0x4a7
+kana_i = 0x4a8
+kana_u = 0x4a9
+kana_e = 0x4aa
+kana_o = 0x4ab
+kana_ya = 0x4ac
+kana_yu = 0x4ad
+kana_yo = 0x4ae
+kana_tsu = 0x4af
+kana_tu = 0x4af
+prolongedsound = 0x4b0
+kana_A = 0x4b1
+kana_I = 0x4b2
+kana_U = 0x4b3
+kana_E = 0x4b4
+kana_O = 0x4b5
+kana_KA = 0x4b6
+kana_KI = 0x4b7
+kana_KU = 0x4b8
+kana_KE = 0x4b9
+kana_KO = 0x4ba
+kana_SA = 0x4bb
+kana_SHI = 0x4bc
+kana_SU = 0x4bd
+kana_SE = 0x4be
+kana_SO = 0x4bf
+kana_TA = 0x4c0
+kana_CHI = 0x4c1
+kana_TI = 0x4c1
+kana_TSU = 0x4c2
+kana_TU = 0x4c2
+kana_TE = 0x4c3
+kana_TO = 0x4c4
+kana_NA = 0x4c5
+kana_NI = 0x4c6
+kana_NU = 0x4c7
+kana_NE = 0x4c8
+kana_NO = 0x4c9
+kana_HA = 0x4ca
+kana_HI = 0x4cb
+kana_FU = 0x4cc
+kana_HU = 0x4cc
+kana_HE = 0x4cd
+kana_HO = 0x4ce
+kana_MA = 0x4cf
+kana_MI = 0x4d0
+kana_MU = 0x4d1
+kana_ME = 0x4d2
+kana_MO = 0x4d3
+kana_YA = 0x4d4
+kana_YU = 0x4d5
+kana_YO = 0x4d6
+kana_RA = 0x4d7
+kana_RI = 0x4d8
+kana_RU = 0x4d9
+kana_RE = 0x4da
+kana_RO = 0x4db
+kana_WA = 0x4dc
+kana_N = 0x4dd
+voicedsound = 0x4de
+semivoicedsound = 0x4df
+kana_switch = 0xFF7E
+Arabic_comma = 0x5ac
+Arabic_semicolon = 0x5bb
+Arabic_question_mark = 0x5bf
+Arabic_hamza = 0x5c1
+Arabic_maddaonalef = 0x5c2
+Arabic_hamzaonalef = 0x5c3
+Arabic_hamzaonwaw = 0x5c4
+Arabic_hamzaunderalef = 0x5c5
+Arabic_hamzaonyeh = 0x5c6
+Arabic_alef = 0x5c7
+Arabic_beh = 0x5c8
+Arabic_tehmarbuta = 0x5c9
+Arabic_teh = 0x5ca
+Arabic_theh = 0x5cb
+Arabic_jeem = 0x5cc
+Arabic_hah = 0x5cd
+Arabic_khah = 0x5ce
+Arabic_dal = 0x5cf
+Arabic_thal = 0x5d0
+Arabic_ra = 0x5d1
+Arabic_zain = 0x5d2
+Arabic_seen = 0x5d3
+Arabic_sheen = 0x5d4
+Arabic_sad = 0x5d5
+Arabic_dad = 0x5d6
+Arabic_tah = 0x5d7
+Arabic_zah = 0x5d8
+Arabic_ain = 0x5d9
+Arabic_ghain = 0x5da
+Arabic_tatweel = 0x5e0
+Arabic_feh = 0x5e1
+Arabic_qaf = 0x5e2
+Arabic_kaf = 0x5e3
+Arabic_lam = 0x5e4
+Arabic_meem = 0x5e5
+Arabic_noon = 0x5e6
+Arabic_ha = 0x5e7
+Arabic_heh = 0x5e7
+Arabic_waw = 0x5e8
+Arabic_alefmaksura = 0x5e9
+Arabic_yeh = 0x5ea
+Arabic_fathatan = 0x5eb
+Arabic_dammatan = 0x5ec
+Arabic_kasratan = 0x5ed
+Arabic_fatha = 0x5ee
+Arabic_damma = 0x5ef
+Arabic_kasra = 0x5f0
+Arabic_shadda = 0x5f1
+Arabic_sukun = 0x5f2
+Arabic_switch = 0xFF7E
+Serbian_dje = 0x6a1
+Macedonia_gje = 0x6a2
+Cyrillic_io = 0x6a3
+Ukrainian_ie = 0x6a4
+Ukranian_je = 0x6a4
+Macedonia_dse = 0x6a5
+Ukrainian_i = 0x6a6
+Ukranian_i = 0x6a6
+Ukrainian_yi = 0x6a7
+Ukranian_yi = 0x6a7
+Cyrillic_je = 0x6a8
+Serbian_je = 0x6a8
+Cyrillic_lje = 0x6a9
+Serbian_lje = 0x6a9
+Cyrillic_nje = 0x6aa
+Serbian_nje = 0x6aa
+Serbian_tshe = 0x6ab
+Macedonia_kje = 0x6ac
+Ukrainian_ghe_with_upturn = 0x6ad
+Byelorussian_shortu = 0x6ae
+Cyrillic_dzhe = 0x6af
+Serbian_dze = 0x6af
+numerosign = 0x6b0
+Serbian_DJE = 0x6b1
+Macedonia_GJE = 0x6b2
+Cyrillic_IO = 0x6b3
+Ukrainian_IE = 0x6b4
+Ukranian_JE = 0x6b4
+Macedonia_DSE = 0x6b5
+Ukrainian_I = 0x6b6
+Ukranian_I = 0x6b6
+Ukrainian_YI = 0x6b7
+Ukranian_YI = 0x6b7
+Cyrillic_JE = 0x6b8
+Serbian_JE = 0x6b8
+Cyrillic_LJE = 0x6b9
+Serbian_LJE = 0x6b9
+Cyrillic_NJE = 0x6ba
+Serbian_NJE = 0x6ba
+Serbian_TSHE = 0x6bb
+Macedonia_KJE = 0x6bc
+Ukrainian_GHE_WITH_UPTURN = 0x6bd
+Byelorussian_SHORTU = 0x6be
+Cyrillic_DZHE = 0x6bf
+Serbian_DZE = 0x6bf
+Cyrillic_yu = 0x6c0
+Cyrillic_a = 0x6c1
+Cyrillic_be = 0x6c2
+Cyrillic_tse = 0x6c3
+Cyrillic_de = 0x6c4
+Cyrillic_ie = 0x6c5
+Cyrillic_ef = 0x6c6
+Cyrillic_ghe = 0x6c7
+Cyrillic_ha = 0x6c8
+Cyrillic_i = 0x6c9
+Cyrillic_shorti = 0x6ca
+Cyrillic_ka = 0x6cb
+Cyrillic_el = 0x6cc
+Cyrillic_em = 0x6cd
+Cyrillic_en = 0x6ce
+Cyrillic_o = 0x6cf
+Cyrillic_pe = 0x6d0
+Cyrillic_ya = 0x6d1
+Cyrillic_er = 0x6d2
+Cyrillic_es = 0x6d3
+Cyrillic_te = 0x6d4
+Cyrillic_u = 0x6d5
+Cyrillic_zhe = 0x6d6
+Cyrillic_ve = 0x6d7
+Cyrillic_softsign = 0x6d8
+Cyrillic_yeru = 0x6d9
+Cyrillic_ze = 0x6da
+Cyrillic_sha = 0x6db
+Cyrillic_e = 0x6dc
+Cyrillic_shcha = 0x6dd
+Cyrillic_che = 0x6de
+Cyrillic_hardsign = 0x6df
+Cyrillic_YU = 0x6e0
+Cyrillic_A = 0x6e1
+Cyrillic_BE = 0x6e2
+Cyrillic_TSE = 0x6e3
+Cyrillic_DE = 0x6e4
+Cyrillic_IE = 0x6e5
+Cyrillic_EF = 0x6e6
+Cyrillic_GHE = 0x6e7
+Cyrillic_HA = 0x6e8
+Cyrillic_I = 0x6e9
+Cyrillic_SHORTI = 0x6ea
+Cyrillic_KA = 0x6eb
+Cyrillic_EL = 0x6ec
+Cyrillic_EM = 0x6ed
+Cyrillic_EN = 0x6ee
+Cyrillic_O = 0x6ef
+Cyrillic_PE = 0x6f0
+Cyrillic_YA = 0x6f1
+Cyrillic_ER = 0x6f2
+Cyrillic_ES = 0x6f3
+Cyrillic_TE = 0x6f4
+Cyrillic_U = 0x6f5
+Cyrillic_ZHE = 0x6f6
+Cyrillic_VE = 0x6f7
+Cyrillic_SOFTSIGN = 0x6f8
+Cyrillic_YERU = 0x6f9
+Cyrillic_ZE = 0x6fa
+Cyrillic_SHA = 0x6fb
+Cyrillic_E = 0x6fc
+Cyrillic_SHCHA = 0x6fd
+Cyrillic_CHE = 0x6fe
+Cyrillic_HARDSIGN = 0x6ff
+Greek_ALPHAaccent = 0x7a1
+Greek_EPSILONaccent = 0x7a2
+Greek_ETAaccent = 0x7a3
+Greek_IOTAaccent = 0x7a4
+Greek_IOTAdiaeresis = 0x7a5
+Greek_OMICRONaccent = 0x7a7
+Greek_UPSILONaccent = 0x7a8
+Greek_UPSILONdieresis = 0x7a9
+Greek_OMEGAaccent = 0x7ab
+Greek_accentdieresis = 0x7ae
+Greek_horizbar = 0x7af
+Greek_alphaaccent = 0x7b1
+Greek_epsilonaccent = 0x7b2
+Greek_etaaccent = 0x7b3
+Greek_iotaaccent = 0x7b4
+Greek_iotadieresis = 0x7b5
+Greek_iotaaccentdieresis = 0x7b6
+Greek_omicronaccent = 0x7b7
+Greek_upsilonaccent = 0x7b8
+Greek_upsilondieresis = 0x7b9
+Greek_upsilonaccentdieresis = 0x7ba
+Greek_omegaaccent = 0x7bb
+Greek_ALPHA = 0x7c1
+Greek_BETA = 0x7c2
+Greek_GAMMA = 0x7c3
+Greek_DELTA = 0x7c4
+Greek_EPSILON = 0x7c5
+Greek_ZETA = 0x7c6
+Greek_ETA = 0x7c7
+Greek_THETA = 0x7c8
+Greek_IOTA = 0x7c9
+Greek_KAPPA = 0x7ca
+Greek_LAMDA = 0x7cb
+Greek_LAMBDA = 0x7cb
+Greek_MU = 0x7cc
+Greek_NU = 0x7cd
+Greek_XI = 0x7ce
+Greek_OMICRON = 0x7cf
+Greek_PI = 0x7d0
+Greek_RHO = 0x7d1
+Greek_SIGMA = 0x7d2
+Greek_TAU = 0x7d4
+Greek_UPSILON = 0x7d5
+Greek_PHI = 0x7d6
+Greek_CHI = 0x7d7
+Greek_PSI = 0x7d8
+Greek_OMEGA = 0x7d9
+Greek_alpha = 0x7e1
+Greek_beta = 0x7e2
+Greek_gamma = 0x7e3
+Greek_delta = 0x7e4
+Greek_epsilon = 0x7e5
+Greek_zeta = 0x7e6
+Greek_eta = 0x7e7
+Greek_theta = 0x7e8
+Greek_iota = 0x7e9
+Greek_kappa = 0x7ea
+Greek_lamda = 0x7eb
+Greek_lambda = 0x7eb
+Greek_mu = 0x7ec
+Greek_nu = 0x7ed
+Greek_xi = 0x7ee
+Greek_omicron = 0x7ef
+Greek_pi = 0x7f0
+Greek_rho = 0x7f1
+Greek_sigma = 0x7f2
+Greek_finalsmallsigma = 0x7f3
+Greek_tau = 0x7f4
+Greek_upsilon = 0x7f5
+Greek_phi = 0x7f6
+Greek_chi = 0x7f7
+Greek_psi = 0x7f8
+Greek_omega = 0x7f9
+Greek_switch = 0xFF7E
+leftradical = 0x8a1
+topleftradical = 0x8a2
+horizconnector = 0x8a3
+topintegral = 0x8a4
+botintegral = 0x8a5
+vertconnector = 0x8a6
+topleftsqbracket = 0x8a7
+botleftsqbracket = 0x8a8
+toprightsqbracket = 0x8a9
+botrightsqbracket = 0x8aa
+topleftparens = 0x8ab
+botleftparens = 0x8ac
+toprightparens = 0x8ad
+botrightparens = 0x8ae
+leftmiddlecurlybrace = 0x8af
+rightmiddlecurlybrace = 0x8b0
+topleftsummation = 0x8b1
+botleftsummation = 0x8b2
+topvertsummationconnector = 0x8b3
+botvertsummationconnector = 0x8b4
+toprightsummation = 0x8b5
+botrightsummation = 0x8b6
+rightmiddlesummation = 0x8b7
+lessthanequal = 0x8bc
+notequal = 0x8bd
+greaterthanequal = 0x8be
+integral = 0x8bf
+therefore = 0x8c0
+variation = 0x8c1
+infinity = 0x8c2
+nabla = 0x8c5
+approximate = 0x8c8
+similarequal = 0x8c9
+ifonlyif = 0x8cd
+implies = 0x8ce
+identical = 0x8cf
+radical = 0x8d6
+includedin = 0x8da
+includes = 0x8db
+intersection = 0x8dc
+union = 0x8dd
+logicaland = 0x8de
+logicalor = 0x8df
+partialderivative = 0x8ef
+function = 0x8f6
+leftarrow = 0x8fb
+uparrow = 0x8fc
+rightarrow = 0x8fd
+downarrow = 0x8fe
+blank = 0x9df
+soliddiamond = 0x9e0
+checkerboard = 0x9e1
+ht = 0x9e2
+ff = 0x9e3
+cr = 0x9e4
+lf = 0x9e5
+nl = 0x9e8
+vt = 0x9e9
+lowrightcorner = 0x9ea
+uprightcorner = 0x9eb
+upleftcorner = 0x9ec
+lowleftcorner = 0x9ed
+crossinglines = 0x9ee
+horizlinescan1 = 0x9ef
+horizlinescan3 = 0x9f0
+horizlinescan5 = 0x9f1
+horizlinescan7 = 0x9f2
+horizlinescan9 = 0x9f3
+leftt = 0x9f4
+rightt = 0x9f5
+bott = 0x9f6
+topt = 0x9f7
+vertbar = 0x9f8
+emspace = 0xaa1
+enspace = 0xaa2
+em3space = 0xaa3
+em4space = 0xaa4
+digitspace = 0xaa5
+punctspace = 0xaa6
+thinspace = 0xaa7
+hairspace = 0xaa8
+emdash = 0xaa9
+endash = 0xaaa
+signifblank = 0xaac
+ellipsis = 0xaae
+doubbaselinedot = 0xaaf
+onethird = 0xab0
+twothirds = 0xab1
+onefifth = 0xab2
+twofifths = 0xab3
+threefifths = 0xab4
+fourfifths = 0xab5
+onesixth = 0xab6
+fivesixths = 0xab7
+careof = 0xab8
+figdash = 0xabb
+leftanglebracket = 0xabc
+decimalpoint = 0xabd
+rightanglebracket = 0xabe
+marker = 0xabf
+oneeighth = 0xac3
+threeeighths = 0xac4
+fiveeighths = 0xac5
+seveneighths = 0xac6
+trademark = 0xac9
+signaturemark = 0xaca
+trademarkincircle = 0xacb
+leftopentriangle = 0xacc
+rightopentriangle = 0xacd
+emopencircle = 0xace
+emopenrectangle = 0xacf
+leftsinglequotemark = 0xad0
+rightsinglequotemark = 0xad1
+leftdoublequotemark = 0xad2
+rightdoublequotemark = 0xad3
+prescription = 0xad4
+minutes = 0xad6
+seconds = 0xad7
+latincross = 0xad9
+hexagram = 0xada
+filledrectbullet = 0xadb
+filledlefttribullet = 0xadc
+filledrighttribullet = 0xadd
+emfilledcircle = 0xade
+emfilledrect = 0xadf
+enopencircbullet = 0xae0
+enopensquarebullet = 0xae1
+openrectbullet = 0xae2
+opentribulletup = 0xae3
+opentribulletdown = 0xae4
+openstar = 0xae5
+enfilledcircbullet = 0xae6
+enfilledsqbullet = 0xae7
+filledtribulletup = 0xae8
+filledtribulletdown = 0xae9
+leftpointer = 0xaea
+rightpointer = 0xaeb
+club = 0xaec
+diamond = 0xaed
+heart = 0xaee
+maltesecross = 0xaf0
+dagger = 0xaf1
+doubledagger = 0xaf2
+checkmark = 0xaf3
+ballotcross = 0xaf4
+musicalsharp = 0xaf5
+musicalflat = 0xaf6
+malesymbol = 0xaf7
+femalesymbol = 0xaf8
+telephone = 0xaf9
+telephonerecorder = 0xafa
+phonographcopyright = 0xafb
+caret = 0xafc
+singlelowquotemark = 0xafd
+doublelowquotemark = 0xafe
+cursor = 0xaff
+leftcaret = 0xba3
+rightcaret = 0xba6
+downcaret = 0xba8
+upcaret = 0xba9
+overbar = 0xbc0
+downtack = 0xbc2
+upshoe = 0xbc3
+downstile = 0xbc4
+underbar = 0xbc6
+jot = 0xbca
+quad = 0xbcc
+uptack = 0xbce
+circle = 0xbcf
+upstile = 0xbd3
+downshoe = 0xbd6
+rightshoe = 0xbd8
+leftshoe = 0xbda
+lefttack = 0xbdc
+righttack = 0xbfc
+hebrew_doublelowline = 0xcdf
+hebrew_aleph = 0xce0
+hebrew_bet = 0xce1
+hebrew_beth = 0xce1
+hebrew_gimel = 0xce2
+hebrew_gimmel = 0xce2
+hebrew_dalet = 0xce3
+hebrew_daleth = 0xce3
+hebrew_he = 0xce4
+hebrew_waw = 0xce5
+hebrew_zain = 0xce6
+hebrew_zayin = 0xce6
+hebrew_chet = 0xce7
+hebrew_het = 0xce7
+hebrew_tet = 0xce8
+hebrew_teth = 0xce8
+hebrew_yod = 0xce9
+hebrew_finalkaph = 0xcea
+hebrew_kaph = 0xceb
+hebrew_lamed = 0xcec
+hebrew_finalmem = 0xced
+hebrew_mem = 0xcee
+hebrew_finalnun = 0xcef
+hebrew_nun = 0xcf0
+hebrew_samech = 0xcf1
+hebrew_samekh = 0xcf1
+hebrew_ayin = 0xcf2
+hebrew_finalpe = 0xcf3
+hebrew_pe = 0xcf4
+hebrew_finalzade = 0xcf5
+hebrew_finalzadi = 0xcf5
+hebrew_zade = 0xcf6
+hebrew_zadi = 0xcf6
+hebrew_qoph = 0xcf7
+hebrew_kuf = 0xcf7
+hebrew_resh = 0xcf8
+hebrew_shin = 0xcf9
+hebrew_taw = 0xcfa
+hebrew_taf = 0xcfa
+Hebrew_switch = 0xFF7E
+Thai_kokai = 0xda1
+Thai_khokhai = 0xda2
+Thai_khokhuat = 0xda3
+Thai_khokhwai = 0xda4
+Thai_khokhon = 0xda5
+Thai_khorakhang = 0xda6
+Thai_ngongu = 0xda7
+Thai_chochan = 0xda8
+Thai_choching = 0xda9
+Thai_chochang = 0xdaa
+Thai_soso = 0xdab
+Thai_chochoe = 0xdac
+Thai_yoying = 0xdad
+Thai_dochada = 0xdae
+Thai_topatak = 0xdaf
+Thai_thothan = 0xdb0
+Thai_thonangmontho = 0xdb1
+Thai_thophuthao = 0xdb2
+Thai_nonen = 0xdb3
+Thai_dodek = 0xdb4
+Thai_totao = 0xdb5
+Thai_thothung = 0xdb6
+Thai_thothahan = 0xdb7
+Thai_thothong = 0xdb8
+Thai_nonu = 0xdb9
+Thai_bobaimai = 0xdba
+Thai_popla = 0xdbb
+Thai_phophung = 0xdbc
+Thai_fofa = 0xdbd
+Thai_phophan = 0xdbe
+Thai_fofan = 0xdbf
+Thai_phosamphao = 0xdc0
+Thai_moma = 0xdc1
+Thai_yoyak = 0xdc2
+Thai_rorua = 0xdc3
+Thai_ru = 0xdc4
+Thai_loling = 0xdc5
+Thai_lu = 0xdc6
+Thai_wowaen = 0xdc7
+Thai_sosala = 0xdc8
+Thai_sorusi = 0xdc9
+Thai_sosua = 0xdca
+Thai_hohip = 0xdcb
+Thai_lochula = 0xdcc
+Thai_oang = 0xdcd
+Thai_honokhuk = 0xdce
+Thai_paiyannoi = 0xdcf
+Thai_saraa = 0xdd0
+Thai_maihanakat = 0xdd1
+Thai_saraaa = 0xdd2
+Thai_saraam = 0xdd3
+Thai_sarai = 0xdd4
+Thai_saraii = 0xdd5
+Thai_saraue = 0xdd6
+Thai_sarauee = 0xdd7
+Thai_sarau = 0xdd8
+Thai_sarauu = 0xdd9
+Thai_phinthu = 0xdda
+Thai_maihanakat_maitho = 0xdde
+Thai_baht = 0xddf
+Thai_sarae = 0xde0
+Thai_saraae = 0xde1
+Thai_sarao = 0xde2
+Thai_saraaimaimuan = 0xde3
+Thai_saraaimaimalai = 0xde4
+Thai_lakkhangyao = 0xde5
+Thai_maiyamok = 0xde6
+Thai_maitaikhu = 0xde7
+Thai_maiek = 0xde8
+Thai_maitho = 0xde9
+Thai_maitri = 0xdea
+Thai_maichattawa = 0xdeb
+Thai_thanthakhat = 0xdec
+Thai_nikhahit = 0xded
+Thai_leksun = 0xdf0
+Thai_leknung = 0xdf1
+Thai_leksong = 0xdf2
+Thai_leksam = 0xdf3
+Thai_leksi = 0xdf4
+Thai_lekha = 0xdf5
+Thai_lekhok = 0xdf6
+Thai_lekchet = 0xdf7
+Thai_lekpaet = 0xdf8
+Thai_lekkao = 0xdf9
+Hangul = 0xff31
+Hangul_Start = 0xff32
+Hangul_End = 0xff33
+Hangul_Hanja = 0xff34
+Hangul_Jamo = 0xff35
+Hangul_Romaja = 0xff36
+Hangul_Codeinput = 0xff37
+Hangul_Jeonja = 0xff38
+Hangul_Banja = 0xff39
+Hangul_PreHanja = 0xff3a
+Hangul_PostHanja = 0xff3b
+Hangul_SingleCandidate = 0xff3c
+Hangul_MultipleCandidate = 0xff3d
+Hangul_PreviousCandidate = 0xff3e
+Hangul_Special = 0xff3f
+Hangul_switch = 0xFF7E
+Hangul_Kiyeog = 0xea1
+Hangul_SsangKiyeog = 0xea2
+Hangul_KiyeogSios = 0xea3
+Hangul_Nieun = 0xea4
+Hangul_NieunJieuj = 0xea5
+Hangul_NieunHieuh = 0xea6
+Hangul_Dikeud = 0xea7
+Hangul_SsangDikeud = 0xea8
+Hangul_Rieul = 0xea9
+Hangul_RieulKiyeog = 0xeaa
+Hangul_RieulMieum = 0xeab
+Hangul_RieulPieub = 0xeac
+Hangul_RieulSios = 0xead
+Hangul_RieulTieut = 0xeae
+Hangul_RieulPhieuf = 0xeaf
+Hangul_RieulHieuh = 0xeb0
+Hangul_Mieum = 0xeb1
+Hangul_Pieub = 0xeb2
+Hangul_SsangPieub = 0xeb3
+Hangul_PieubSios = 0xeb4
+Hangul_Sios = 0xeb5
+Hangul_SsangSios = 0xeb6
+Hangul_Ieung = 0xeb7
+Hangul_Jieuj = 0xeb8
+Hangul_SsangJieuj = 0xeb9
+Hangul_Cieuc = 0xeba
+Hangul_Khieuq = 0xebb
+Hangul_Tieut = 0xebc
+Hangul_Phieuf = 0xebd
+Hangul_Hieuh = 0xebe
+Hangul_A = 0xebf
+Hangul_AE = 0xec0
+Hangul_YA = 0xec1
+Hangul_YAE = 0xec2
+Hangul_EO = 0xec3
+Hangul_E = 0xec4
+Hangul_YEO = 0xec5
+Hangul_YE = 0xec6
+Hangul_O = 0xec7
+Hangul_WA = 0xec8
+Hangul_WAE = 0xec9
+Hangul_OE = 0xeca
+Hangul_YO = 0xecb
+Hangul_U = 0xecc
+Hangul_WEO = 0xecd
+Hangul_WE = 0xece
+Hangul_WI = 0xecf
+Hangul_YU = 0xed0
+Hangul_EU = 0xed1
+Hangul_YI = 0xed2
+Hangul_I = 0xed3
+Hangul_J_Kiyeog = 0xed4
+Hangul_J_SsangKiyeog = 0xed5
+Hangul_J_KiyeogSios = 0xed6
+Hangul_J_Nieun = 0xed7
+Hangul_J_NieunJieuj = 0xed8
+Hangul_J_NieunHieuh = 0xed9
+Hangul_J_Dikeud = 0xeda
+Hangul_J_Rieul = 0xedb
+Hangul_J_RieulKiyeog = 0xedc
+Hangul_J_RieulMieum = 0xedd
+Hangul_J_RieulPieub = 0xede
+Hangul_J_RieulSios = 0xedf
+Hangul_J_RieulTieut = 0xee0
+Hangul_J_RieulPhieuf = 0xee1
+Hangul_J_RieulHieuh = 0xee2
+Hangul_J_Mieum = 0xee3
+Hangul_J_Pieub = 0xee4
+Hangul_J_PieubSios = 0xee5
+Hangul_J_Sios = 0xee6
+Hangul_J_SsangSios = 0xee7
+Hangul_J_Ieung = 0xee8
+Hangul_J_Jieuj = 0xee9
+Hangul_J_Cieuc = 0xeea
+Hangul_J_Khieuq = 0xeeb
+Hangul_J_Tieut = 0xeec
+Hangul_J_Phieuf = 0xeed
+Hangul_J_Hieuh = 0xeee
+Hangul_RieulYeorinHieuh = 0xeef
+Hangul_SunkyeongeumMieum = 0xef0
+Hangul_SunkyeongeumPieub = 0xef1
+Hangul_PanSios = 0xef2
+Hangul_KkogjiDalrinIeung = 0xef3
+Hangul_SunkyeongeumPhieuf = 0xef4
+Hangul_YeorinHieuh = 0xef5
+Hangul_AraeA = 0xef6
+Hangul_AraeAE = 0xef7
+Hangul_J_PanSios = 0xef8
+Hangul_J_KkogjiDalrinIeung = 0xef9
+Hangul_J_YeorinHieuh = 0xefa
+Korean_Won = 0xeff
 Armenian_eternity = 0x14a1
 Armenian_section_sign = 0x14a2
+Armenian_full_stop = 0x14a3
+Armenian_verjaket = 0x14a3
+Armenian_parenright = 0x14a4
 Armenian_parenleft = 0x14a5
 Armenian_guillemotright = 0x14a6
 Armenian_guillemotleft = 0x14a7
 Armenian_em_dash = 0x14a8
 Armenian_dot = 0x14a9
 Armenian_mijaket = 0x14a9
+Armenian_separation_mark = 0x14aa
+Armenian_but = 0x14aa
 Armenian_comma = 0x14ab
 Armenian_en_dash = 0x14ac
+Armenian_hyphen = 0x14ad
+Armenian_yentamna = 0x14ad
 Armenian_ellipsis = 0x14ae
+Armenian_exclam = 0x14af
+Armenian_amanak = 0x14af
+Armenian_accent = 0x14b0
+Armenian_shesht = 0x14b0
+Armenian_question = 0x14b1
+Armenian_paruyk = 0x14b1
+Armenian_AYB = 0x14b2
+Armenian_ayb = 0x14b3
+Armenian_BEN = 0x14b4
+Armenian_ben = 0x14b5
+Armenian_GIM = 0x14b6
+Armenian_gim = 0x14b7
+Armenian_DA = 0x14b8
+Armenian_da = 0x14b9
+Armenian_YECH = 0x14ba
+Armenian_yech = 0x14bb
+Armenian_ZA = 0x14bc
+Armenian_za = 0x14bd
+Armenian_E = 0x14be
+Armenian_e = 0x14bf
+Armenian_AT = 0x14c0
+Armenian_at = 0x14c1
+Armenian_TO = 0x14c2
+Armenian_to = 0x14c3
+Armenian_ZHE = 0x14c4
+Armenian_zhe = 0x14c5
+Armenian_INI = 0x14c6
+Armenian_ini = 0x14c7
+Armenian_LYUN = 0x14c8
+Armenian_lyun = 0x14c9
+Armenian_KHE = 0x14ca
+Armenian_khe = 0x14cb
+Armenian_TSA = 0x14cc
+Armenian_tsa = 0x14cd
+Armenian_KEN = 0x14ce
+Armenian_ken = 0x14cf
+Armenian_HO = 0x14d0
+Armenian_ho = 0x14d1
+Armenian_DZA = 0x14d2
+Armenian_dza = 0x14d3
+Armenian_GHAT = 0x14d4
+Armenian_ghat = 0x14d5
+Armenian_TCHE = 0x14d6
+Armenian_tche = 0x14d7
+Armenian_MEN = 0x14d8
+Armenian_men = 0x14d9
+Armenian_HI = 0x14da
+Armenian_hi = 0x14db
+Armenian_NU = 0x14dc
+Armenian_nu = 0x14dd
+Armenian_SHA = 0x14de
+Armenian_sha = 0x14df
+Armenian_VO = 0x14e0
+Armenian_vo = 0x14e1
+Armenian_CHA = 0x14e2
+Armenian_cha = 0x14e3
+Armenian_PE = 0x14e4
+Armenian_pe = 0x14e5
+Armenian_JE = 0x14e6
+Armenian_je = 0x14e7
+Armenian_RA = 0x14e8
+Armenian_ra = 0x14e9
+Armenian_SE = 0x14ea
+Armenian_se = 0x14eb
+Armenian_VEV = 0x14ec
+Armenian_vev = 0x14ed
+Armenian_TYUN = 0x14ee
+Armenian_tyun = 0x14ef
+Armenian_RE = 0x14f0
+Armenian_re = 0x14f1
+Armenian_TSO = 0x14f2
+Armenian_tso = 0x14f3
+Armenian_VYUN = 0x14f4
+Armenian_vyun = 0x14f5
+Armenian_PYUR = 0x14f6
+Armenian_pyur = 0x14f7
+Armenian_KE = 0x14f8
+Armenian_ke = 0x14f9
+Armenian_O = 0x14fa
+Armenian_o = 0x14fb
+Armenian_FE = 0x14fc
+Armenian_fe = 0x14fd
+Armenian_apostrophe = 0x14fe
+Armenian_ligature_ew = 0x14ff
+Georgian_an = 0x15d0
+Georgian_ban = 0x15d1
+Georgian_gan = 0x15d2
+Georgian_don = 0x15d3
+Georgian_en = 0x15d4
+Georgian_vin = 0x15d5
+Georgian_zen = 0x15d6
+Georgian_tan = 0x15d7
+Georgian_in = 0x15d8
+Georgian_kan = 0x15d9
+Georgian_las = 0x15da
+Georgian_man = 0x15db
+Georgian_nar = 0x15dc
+Georgian_on = 0x15dd
+Georgian_par = 0x15de
+Georgian_zhar = 0x15df
+Georgian_rae = 0x15e0
+Georgian_san = 0x15e1
+Georgian_tar = 0x15e2
+Georgian_un = 0x15e3
+Georgian_phar = 0x15e4
+Georgian_khar = 0x15e5
+Georgian_ghan = 0x15e6
+Georgian_qar = 0x15e7
+Georgian_shin = 0x15e8
+Georgian_chin = 0x15e9
+Georgian_can = 0x15ea
+Georgian_jil = 0x15eb
+Georgian_cil = 0x15ec
+Georgian_char = 0x15ed
+Georgian_xan = 0x15ee
+Georgian_jhan = 0x15ef
+Georgian_hae = 0x15f0
+Georgian_he = 0x15f1
+Georgian_hie = 0x15f2
+Georgian_we = 0x15f3
+Georgian_har = 0x15f4
+Georgian_hoe = 0x15f5
+Georgian_fi = 0x15f6
+EcuSign = 0x20a0
+ColonSign = 0x20a1
+CruzeiroSign = 0x20a2
+FFrancSign = 0x20a3
+LiraSign = 0x20a4
+MillSign = 0x20a5
+NairaSign = 0x20a6
+PesetaSign = 0x20a7
+RupeeSign = 0x20a8
+WonSign = 0x20a9
+NewSheqelSign = 0x20aa
+DongSign = 0x20ab
+EuroSign = 0x20ac
diff --git a/gi/pygenum.h b/gi/pygenum.h
deleted file mode 100644 (file)
index 0625a94..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGOBJECT_ENUM_H__ 
-#define __PYGOBJECT_ENUM_H__
-
-extern GQuark pygenum_class_key;
-
-#define PyGEnum_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGEnum_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_ENUM))
-
-typedef struct {
-    PYGLIB_PyLongObject parent;
-    int zero_pad; /* must always be 0 */
-    GType gtype;
-} PyGEnum;
-
-extern PyTypeObject PyGEnum_Type;
-
-PyObject * pyg_enum_add        (PyObject *   module,
-                                const char * type_name,
-                                const char * strip_prefix,
-                                GType        gtype);
-
-PyObject * pyg_enum_from_gtype (GType        gtype,
-                                int          value);
-
-gint pyg_enum_get_value  (GType enum_type, PyObject *obj, gint *val);
-
-void pygobject_enum_register_types(PyObject *d);
-
-#endif /* __PYGOBJECT_ENUM_H__ */
diff --git a/gi/pygflags.h b/gi/pygflags.h
deleted file mode 100644 (file)
index 9555b94..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGOBJECT_FLAGS_H__ 
-#define __PYGOBJECT_FLAGS_H__
-
-extern GQuark pygflags_class_key;
-
-typedef struct {
-    PYGLIB_PyLongObject parent;
-    int zero_pad; /* must always be 0 */
-    GType gtype;
-} PyGFlags;
-
-extern PyTypeObject PyGFlags_Type;
-
-#define PyGFlags_Check(x) (PyObject_IsInstance((PyObject *)x, (PyObject *)&PyGFlags_Type) && g_type_is_a(((PyGFlags*)x)->gtype, G_TYPE_FLAGS))
-
-extern PyObject * pyg_flags_add        (PyObject *   module,
-                                        const char * type_name,
-                                        const char * strip_prefix,
-                                        GType        gtype);
-extern PyObject * pyg_flags_from_gtype (GType        gtype,
-                                        guint        value);
-
-gint pyg_flags_get_value (GType flag_type, PyObject *obj, guint *val);
-
-void pygobject_flags_register_types(PyObject *d);
-
-#endif /* __PYGOBJECT_FLAGS_H__ */
index e6f9346..64602f2 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include <Python.h>
+#include "pygi-private.h"
 
 #include <string.h>
 #include <time.h>
 
-#include "pygobject-internal.h"
-
+#include <datetime.h>
+#include <pygobject.h>
 #include <pyglib-python-compat.h>
 #include <pyglib.h>
-#include <pygenum.h>
-#include <pygflags.h>
-
-#include "pygi-argument.h"
-#include "pygi-info.h"
-#include "pygi-value.h"
-#include "pygi-basictype.h"
-#include "pygi-object.h"
-#include "pygi-struct-marshal.h"
-#include "pygi-error.h"
-#include "pygi-foreign.h"
-#include "pygi-type.h"
-#include "pygi-util.h"
-
-/* Redefine g_array_index because we want it to return the i-th element, casted
- * to the type t, of the array a, and not the i-th element of the array a
- * casted to the type t. */
-#define _g_array_index(a,t,i) \
-    *(t *)((a)->data + g_array_get_element_size(a) * (i))
-
-
-gboolean
-pygi_argument_to_gssize (GIArgument *arg_in,
-                         GITypeTag  type_tag,
-                         gssize *gssize_out)
+
+static void
+_pygi_g_type_tag_py_bounds (GITypeTag   type_tag,
+                            PyObject  **lower,
+                            PyObject  **upper)
 {
     switch (type_tag) {
-      case GI_TYPE_TAG_INT8:
-          *gssize_out = arg_in->v_int8;
-          return TRUE;
-      case GI_TYPE_TAG_UINT8:
-          *gssize_out = arg_in->v_uint8;
-          return TRUE;
-      case GI_TYPE_TAG_INT16:
-          *gssize_out = arg_in->v_int16;
-          return TRUE;
-      case GI_TYPE_TAG_UINT16:
-          *gssize_out = arg_in->v_uint16;
-          return TRUE;
-      case GI_TYPE_TAG_INT32:
-          *gssize_out = arg_in->v_int32;
-          return TRUE;
-      case GI_TYPE_TAG_UINT32:
-          *gssize_out = arg_in->v_uint32;
-          return TRUE;
-      case GI_TYPE_TAG_INT64:
-          *gssize_out = arg_in->v_int64;
-          return TRUE;
-      case GI_TYPE_TAG_UINT64:
-          *gssize_out = arg_in->v_uint64;
-          return TRUE;
-      default:
-          PyErr_Format (PyExc_TypeError,
-                        "Unable to marshal %s to gssize",
-                        g_type_tag_to_string(type_tag));
-          return FALSE;
+        case GI_TYPE_TAG_INT8:
+            *lower = PYGLIB_PyLong_FromLong (-128);
+            *upper = PYGLIB_PyLong_FromLong (127);
+            break;
+        case GI_TYPE_TAG_UINT8:
+            *upper = PYGLIB_PyLong_FromLong (255);
+            *lower = PYGLIB_PyLong_FromLong (0);
+            break;
+        case GI_TYPE_TAG_INT16:
+            *lower = PYGLIB_PyLong_FromLong (-32768);
+            *upper = PYGLIB_PyLong_FromLong (32767);
+            break;
+        case GI_TYPE_TAG_UINT16:
+            *upper = PYGLIB_PyLong_FromLong (65535);
+            *lower = PYGLIB_PyLong_FromLong (0);
+            break;
+        case GI_TYPE_TAG_INT32:
+            *lower = PYGLIB_PyLong_FromLong (G_MININT32);
+            *upper = PYGLIB_PyLong_FromLong (G_MAXINT32);
+            break;
+        case GI_TYPE_TAG_UINT32:
+            /* Note: On 32-bit archs, this number doesn't fit in a long. */
+            *upper = PyLong_FromLongLong (G_MAXUINT32);
+            *lower = PYGLIB_PyLong_FromLong (0);
+            break;
+        case GI_TYPE_TAG_INT64:
+            /* Note: On 32-bit archs, these numbers don't fit in a long. */
+            *lower = PyLong_FromLongLong (G_MININT64);
+            *upper = PyLong_FromLongLong (G_MAXINT64);
+            break;
+        case GI_TYPE_TAG_UINT64:
+            *upper = PyLong_FromUnsignedLongLong (G_MAXUINT64);
+            *lower = PYGLIB_PyLong_FromLong (0);
+            break;
+        case GI_TYPE_TAG_FLOAT:
+            *upper = PyFloat_FromDouble (G_MAXFLOAT);
+            *lower = PyFloat_FromDouble (-G_MAXFLOAT);
+            break;
+        case GI_TYPE_TAG_DOUBLE:
+            *upper = PyFloat_FromDouble (G_MAXDOUBLE);
+            *lower = PyFloat_FromDouble (-G_MAXDOUBLE);
+            break;
+        default:
+            PyErr_SetString (PyExc_TypeError, "Non-numeric type tag");
+            *lower = *upper = NULL;
+            return;
     }
 }
 
-static GITypeTag
-_pygi_get_storage_type (GITypeInfo *type_info)
+gint
+_pygi_g_registered_type_info_check_object (GIRegisteredTypeInfo *info,
+                                           gboolean              is_instance,
+                                           PyObject             *object)
 {
-    GITypeTag type_tag = g_type_info_get_tag (type_info);
+    gint retval;
+
+    GType g_type;
+    PyObject *py_type;
+    gchar *type_name_expected = NULL;
+    GIInfoType interface_type;
+
+    interface_type = g_base_info_get_type (info);
+    if ( (interface_type == GI_INFO_TYPE_STRUCT) &&
+            (g_struct_info_is_foreign ( (GIStructInfo*) info))) {
+        /* TODO: Could we check is the correct foreign type? */
+        return 1;
+    }
 
-    if (type_tag == GI_TYPE_TAG_INTERFACE) {
-        GIBaseInfo *interface = g_type_info_get_interface (type_info);
-        switch (g_base_info_get_type (interface)) {
-            case GI_INFO_TYPE_ENUM:
-            case GI_INFO_TYPE_FLAGS:
-                type_tag = g_enum_info_get_storage_type ((GIEnumInfo *)interface);
-                break;
-            default:
-                /* FIXME: we might have something to do for other types */
-                break;
+    g_type = g_registered_type_info_get_g_type (info);
+    if (g_type != G_TYPE_NONE) {
+        py_type = _pygi_type_get_from_g_type (g_type);
+    } else {
+        py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) info);
+    }
+
+    if (py_type == NULL) {
+        return 0;
+    }
+
+    g_assert (PyType_Check (py_type));
+
+    if (is_instance) {
+        retval = PyObject_IsInstance (object, py_type);
+        if (!retval) {
+            type_name_expected = _pygi_g_base_info_get_fullname (
+                                     (GIBaseInfo *) info);
+        }
+    } else {
+        if (!PyObject_Type (py_type)) {
+            type_name_expected = "type";
+            retval = 0;
+        } else if (!PyType_IsSubtype ( (PyTypeObject *) object,
+                                       (PyTypeObject *) py_type)) {
+            type_name_expected = _pygi_g_base_info_get_fullname (
+                                     (GIBaseInfo *) info);
+            retval = 0;
+        } else {
+            retval = 1;
+        }
+    }
+
+    Py_DECREF (py_type);
+
+    if (!retval) {
+        PyTypeObject *object_type;
+
+        if (type_name_expected == NULL) {
+            return -1;
+        }
+
+        object_type = (PyTypeObject *) PyObject_Type (object);
+        if (object_type == NULL) {
+            return -1;
         }
-        g_base_info_unref (interface);
+
+        PyErr_Format (PyExc_TypeError, "Must be %s, not %s",
+                      type_name_expected, object_type->tp_name);
+
+        g_free (type_name_expected);
     }
-    return type_tag;
+
+    return retval;
 }
 
-void
-_pygi_hash_pointer_to_arg (GIArgument *arg,
-                           GITypeInfo *type_info)
+gint
+_pygi_g_type_interface_check_object (GIBaseInfo *info,
+                                     PyObject   *object)
 {
-    GITypeTag type_tag = _pygi_get_storage_type (type_info);
-
-    switch (type_tag) {
-        case GI_TYPE_TAG_INT8:
-            arg->v_int8 = GPOINTER_TO_INT (arg->v_pointer);
-            break;
-        case GI_TYPE_TAG_INT16:
-            arg->v_int16 = GPOINTER_TO_INT (arg->v_pointer);
-            break;
-        case GI_TYPE_TAG_INT32:
-            arg->v_int32 = GPOINTER_TO_INT (arg->v_pointer);
-            break;
-        case GI_TYPE_TAG_UINT8:
-            arg->v_uint8 = GPOINTER_TO_UINT (arg->v_pointer);
+    gint retval = 1;
+    GIInfoType info_type;
+
+    info_type = g_base_info_get_type (info);
+    switch (info_type) {
+        case GI_INFO_TYPE_CALLBACK:
+            if (!PyCallable_Check (object)) {
+                PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+            }
             break;
-        case GI_TYPE_TAG_UINT16:
-            arg->v_uint16 = GPOINTER_TO_UINT (arg->v_pointer);
+        case GI_INFO_TYPE_ENUM:
+            retval = 0;
+            if (PyNumber_Check (object)) {
+                PyObject *number = PYGLIB_PyNumber_Long (object);
+                if (number == NULL)
+                    PyErr_Clear();
+                else {
+                    glong value = PYGLIB_PyLong_AsLong (number);
+                    int i;
+                    for (i = 0; i < g_enum_info_get_n_values (info); i++) {
+                        GIValueInfo *value_info = g_enum_info_get_value (info, i);
+                        glong enum_value = g_value_info_get_value (value_info);
+                        g_base_info_unref (value_info);
+                        if (value == enum_value) {
+                            retval = 1;
+                            break;
+                        }
+                    }
+                }
+            }
+            if (retval < 1)
+                retval = _pygi_g_registered_type_info_check_object (
+                             (GIRegisteredTypeInfo *) info, TRUE, object);
             break;
-        case GI_TYPE_TAG_UINT32:
-            arg->v_uint32 = GPOINTER_TO_UINT (arg->v_pointer);
+        case GI_INFO_TYPE_FLAGS:
+            if (PyNumber_Check (object)) {
+                /* Accept 0 as a valid flag value */
+                PyObject *number = PYGLIB_PyNumber_Long (object);
+                if (number == NULL)
+                    PyErr_Clear();
+                else {
+                    long value = PYGLIB_PyLong_AsLong (number);
+                    if (value == 0)
+                        break;
+                    else if (value == -1)
+                        PyErr_Clear();
+                }
+            }
+            retval = _pygi_g_registered_type_info_check_object (
+                         (GIRegisteredTypeInfo *) info, TRUE, object);
             break;
-        case GI_TYPE_TAG_GTYPE:
-            arg->v_size = GPOINTER_TO_SIZE (arg->v_pointer);
+        case GI_INFO_TYPE_STRUCT:
+        {
+            GType type;
+
+            /* Handle special cases. */
+            type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
+            if (g_type_is_a (type, G_TYPE_CLOSURE)) {
+                if (!(PyCallable_Check (object) ||
+                      pyg_type_from_object_strict (object, FALSE) == G_TYPE_CLOSURE)) {
+                    PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
+                                  object->ob_type->tp_name);
+                    retval = 0;
+                }
+                break;
+            } else if (g_type_is_a (type, G_TYPE_VALUE)) {
+                /* we can't check g_values because we don't have 
+                 * enough context so just pass them through */
+                break;
+            }
+
+            /* Fallback. */
+        }
+        case GI_INFO_TYPE_BOXED:
+        case GI_INFO_TYPE_INTERFACE:
+        case GI_INFO_TYPE_OBJECT:
+            retval = _pygi_g_registered_type_info_check_object ( (GIRegisteredTypeInfo *) info, TRUE, object);
             break;
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-        case GI_TYPE_TAG_INTERFACE:
+        case GI_INFO_TYPE_UNION:
+
+
+            retval = _pygi_g_registered_type_info_check_object ( (GIRegisteredTypeInfo *) info, TRUE, object);
+
+            /* If not the same type then check to see if the object's type
+             * is the same as one of the union's members
+             */
+            if (retval == 0) {
+                gint i;
+                gint n_fields;
+
+                n_fields = g_union_info_get_n_fields ( (GIUnionInfo *) info);
+
+                for (i = 0; i < n_fields; i++) {
+                    gint member_retval;
+                    GIFieldInfo *field_info;
+                    GITypeInfo *field_type_info;
+
+                    field_info =
+                        g_union_info_get_field ( (GIUnionInfo *) info, i);
+                    field_type_info = g_field_info_get_type (field_info);
+
+                    member_retval = _pygi_g_type_info_check_object(
+                        field_type_info,
+                        object,
+                        TRUE);
+
+                    g_base_info_unref ( ( GIBaseInfo *) field_type_info);
+                    g_base_info_unref ( ( GIBaseInfo *) field_info);
+
+                    if (member_retval == 1) {
+                        retval = member_retval;
+                        break;
+                    }
+                }
+            }
+
             break;
         default:
-            g_critical ("Unsupported type %s", g_type_tag_to_string(type_tag));
+            g_assert_not_reached();
     }
+
+    return retval;
 }
 
-gpointer
-_pygi_arg_to_hash_pointer (const GIArgument *arg,
-                           GITypeInfo       *type_info)
+gint
+_pygi_g_type_info_check_object (GITypeInfo *type_info,
+                                PyObject   *object,
+                                gboolean   allow_none)
 {
-    GITypeTag type_tag = _pygi_get_storage_type (type_info);
+    GITypeTag type_tag;
+    gint retval = 1;
+
+    if (allow_none && object == Py_None) {
+        return retval;
+    }
+
+    type_tag = g_type_info_get_tag (type_info);
 
     switch (type_tag) {
-        case GI_TYPE_TAG_INT8:
-            return GINT_TO_POINTER (arg->v_int8);
+        case GI_TYPE_TAG_VOID:
+            /* No check; VOID means undefined type */
+            break;
+        case GI_TYPE_TAG_BOOLEAN:
+            /* No check; every Python object has a truth value. */
+            break;
         case GI_TYPE_TAG_UINT8:
-            return GINT_TO_POINTER (arg->v_uint8);
+            /* UINT8 types can be characters */
+            if (PYGLIB_PyBytes_Check(object)) {
+                if (PYGLIB_PyBytes_Size(object) != 1) {
+                    PyErr_Format (PyExc_TypeError, "Must be a single character");
+                    retval = 0;
+                    break;
+                }
+
+                break;
+            }
+        case GI_TYPE_TAG_INT8:
         case GI_TYPE_TAG_INT16:
-            return GINT_TO_POINTER (arg->v_int16);
         case GI_TYPE_TAG_UINT16:
-            return GINT_TO_POINTER (arg->v_uint16);
         case GI_TYPE_TAG_INT32:
-            return GINT_TO_POINTER (arg->v_int32);
         case GI_TYPE_TAG_UINT32:
-            return GINT_TO_POINTER (arg->v_uint32);
+        case GI_TYPE_TAG_INT64:
+        case GI_TYPE_TAG_UINT64:
+        case GI_TYPE_TAG_FLOAT:
+        case GI_TYPE_TAG_DOUBLE:
+        {
+            PyObject *number, *lower, *upper;
+
+            if (!PyNumber_Check (object)) {
+                PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+                break;
+            }
+
+            if (type_tag == GI_TYPE_TAG_FLOAT || type_tag == GI_TYPE_TAG_DOUBLE) {
+                number = PyNumber_Float (object);
+            } else {
+                number = PYGLIB_PyNumber_Long (object);
+            }
+
+            _pygi_g_type_tag_py_bounds (type_tag, &lower, &upper);
+
+            if (lower == NULL || upper == NULL || number == NULL) {
+                retval = -1;
+                goto check_number_release;
+            }
+
+            /* Check bounds */
+            if (PyObject_RichCompareBool (lower, number, Py_GT)
+                    || PyObject_RichCompareBool (upper, number, Py_LT)) {
+                PyObject *lower_str;
+                PyObject *upper_str;
+
+                if (PyErr_Occurred()) {
+                    retval = -1;
+                    goto check_number_release;
+                }
+
+                lower_str = PyObject_Str (lower);
+                upper_str = PyObject_Str (upper);
+                if (lower_str == NULL || upper_str == NULL) {
+                    retval = -1;
+                    goto check_number_error_release;
+                }
+
+#if PY_VERSION_HEX < 0x03000000
+                PyErr_Format (PyExc_ValueError, "Must range from %s to %s",
+                              PyString_AS_STRING (lower_str),
+                              PyString_AS_STRING (upper_str));
+#else
+                {
+                    PyObject *lower_pybytes_obj = PyUnicode_AsUTF8String (lower_str);
+                    if (!lower_pybytes_obj)
+                        goto utf8_fail;
+
+                    PyObject *upper_pybytes_obj = PyUnicode_AsUTF8String (upper_str);                    
+                    if (!upper_pybytes_obj) {
+                        Py_DECREF(lower_pybytes_obj);
+                        goto utf8_fail;
+                    }
+
+                    PyErr_Format (PyExc_ValueError, "Must range from %s to %s",
+                                  PyBytes_AsString (lower_pybytes_obj),
+                                  PyBytes_AsString (upper_pybytes_obj));
+                    Py_DECREF (lower_pybytes_obj);
+                    Py_DECREF (upper_pybytes_obj);
+                }
+utf8_fail:
+#endif
+                retval = 0;
+
+check_number_error_release:
+                Py_XDECREF (lower_str);
+                Py_XDECREF (upper_str);
+            }
+
+check_number_release:
+            Py_XDECREF (number);
+            Py_XDECREF (lower);
+            Py_XDECREF (upper);
+            break;
+        }
         case GI_TYPE_TAG_GTYPE:
-            return GSIZE_TO_POINTER (arg->v_size);
+        {
+            if (pyg_type_from_object (object) == 0) {
+                PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+            }
+            break;
+        }
+        case GI_TYPE_TAG_UNICHAR:
+        {
+            Py_ssize_t size;
+            if (PyUnicode_Check (object)) {
+                size = PyUnicode_GET_SIZE (object);
+#if PY_VERSION_HEX < 0x03000000
+            } else if (PyString_Check (object)) {
+                PyObject *pyuni = PyUnicode_FromEncodedObject (object, "UTF-8", "strict");
+                size = PyUnicode_GET_SIZE (pyuni);
+                Py_DECREF(pyuni);
+#endif
+            } else {
+                PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+                break;
+            }
+
+            if (size != 1) {
+                PyErr_Format (PyExc_TypeError, "Must be a one character string, not %ld characters",
+                              size);
+                retval = 0;
+                break;
+            }
+
+            break;
+        }
         case GI_TYPE_TAG_UTF8:
         case GI_TYPE_TAG_FILENAME:
+            if (!PYGLIB_PyBaseString_Check (object) ) {
+                PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+            }
+            break;
+        case GI_TYPE_TAG_ARRAY:
+        {
+            gssize fixed_size;
+            Py_ssize_t length;
+            GITypeInfo *item_type_info;
+            Py_ssize_t i;
+
+            if (!PySequence_Check (object)) {
+                PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+                break;
+            }
+
+            length = PySequence_Length (object);
+            if (length < 0) {
+                retval = -1;
+                break;
+            }
+
+            fixed_size = g_type_info_get_array_fixed_size (type_info);
+            if (fixed_size >= 0 && length != fixed_size) {
+                PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                              fixed_size, length);
+                retval = 0;
+                break;
+            }
+
+            item_type_info = g_type_info_get_param_type (type_info, 0);
+            g_assert (item_type_info != NULL);
+
+            /* FIXME: This is insain.  We really should only check the first
+             *        object and perhaps have a debugging mode.  Large arrays
+             *        will cause apps to slow to a crawl.
+             */
+            for (i = 0; i < length; i++) {
+                PyObject *item;
+
+                item = PySequence_GetItem (object, i);
+                if (item == NULL) {
+                    retval = -1;
+                    break;
+                }
+
+                retval = _pygi_g_type_info_check_object (item_type_info, item, TRUE);
+
+                Py_DECREF (item);
+
+                if (retval < 0) {
+                    break;
+                }
+                if (!retval) {
+                    _PyGI_ERROR_PREFIX ("Item %zd: ", i);
+                    break;
+                }
+            }
+
+            g_base_info_unref ( (GIBaseInfo *) item_type_info);
+
+            break;
+        }
         case GI_TYPE_TAG_INTERFACE:
-            return arg->v_pointer;
-        default:
-            g_critical ("Unsupported type %s", g_type_tag_to_string(type_tag));
-            return arg->v_pointer;
-    }
-}
+        {
+            GIBaseInfo *info;
 
+            info = g_type_info_get_interface (type_info);
+            g_assert (info != NULL);
 
-/**
- * _pygi_argument_array_length_marshal:
- * @length_arg_index: Index of length argument in the callables args list.
- * @user_data1: (type Array(GValue)): Array of GValue arguments to retrieve length
- * @user_data2: (type GICallableInfo): Callable info to get the argument from.
- *
- * Generic marshalling policy for array length arguments in callables.
- *
- * Returns: The length of the array or -1 on failure.
- */
-gssize
-_pygi_argument_array_length_marshal (gsize length_arg_index,
-                                     void *user_data1,
-                                     void *user_data2)
-{
-    GIArgInfo length_arg_info;
-    GITypeInfo length_type_info;
-    GIArgument length_arg;
-    gssize array_len = -1;
-    GValue *values = (GValue *)user_data1;
-    GICallableInfo *callable_info = (GICallableInfo *)user_data2;
-
-    g_callable_info_load_arg (callable_info, length_arg_index, &length_arg_info);
-    g_arg_info_load_type (&length_arg_info, &length_type_info);
-
-    length_arg = _pygi_argument_from_g_value (&(values[length_arg_index]),
-                                              &length_type_info);
-    if (!pygi_argument_to_gssize (&length_arg,
-                                  g_type_info_get_tag (&length_type_info),
-                                  &array_len)) {
-        return -1;
+            retval = _pygi_g_type_interface_check_object(info, object);
+
+            g_base_info_unref (info);
+            break;
+        }
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+        {
+            Py_ssize_t length;
+            GITypeInfo *item_type_info;
+            Py_ssize_t i;
+
+            if (!PySequence_Check (object)) {
+                PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+                break;
+            }
+
+            length = PySequence_Length (object);
+            if (length < 0) {
+                retval = -1;
+                break;
+            }
+
+            item_type_info = g_type_info_get_param_type (type_info, 0);
+            g_assert (item_type_info != NULL);
+
+            for (i = 0; i < length; i++) {
+                PyObject *item;
+
+                item = PySequence_GetItem (object, i);
+                if (item == NULL) {
+                    retval = -1;
+                    break;
+                }
+
+                retval = _pygi_g_type_info_check_object (item_type_info, item, TRUE);
+
+                Py_DECREF (item);
+
+                if (retval < 0) {
+                    break;
+                }
+                if (!retval) {
+                    _PyGI_ERROR_PREFIX ("Item %zd: ", i);
+                    break;
+                }
+            }
+
+            g_base_info_unref ( (GIBaseInfo *) item_type_info);
+            break;
+        }
+        case GI_TYPE_TAG_GHASH:
+        {
+            Py_ssize_t length;
+            PyObject *keys;
+            PyObject *values;
+            GITypeInfo *key_type_info;
+            GITypeInfo *value_type_info;
+            Py_ssize_t i;
+
+            keys = PyMapping_Keys (object);
+            if (keys == NULL) {
+                PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
+                              object->ob_type->tp_name);
+                retval = 0;
+                break;
+            }
+
+            length = PyMapping_Length (object);
+            if (length < 0) {
+                Py_DECREF (keys);
+                retval = -1;
+                break;
+            }
+
+            values = PyMapping_Values (object);
+            if (values == NULL) {
+                retval = -1;
+                Py_DECREF (keys);
+                break;
+            }
+
+            key_type_info = g_type_info_get_param_type (type_info, 0);
+            g_assert (key_type_info != NULL);
+
+            value_type_info = g_type_info_get_param_type (type_info, 1);
+            g_assert (value_type_info != NULL);
+
+            for (i = 0; i < length; i++) {
+                PyObject *key;
+                PyObject *value;
+
+                key = PyList_GET_ITEM (keys, i);
+                value = PyList_GET_ITEM (values, i);
+
+                retval = _pygi_g_type_info_check_object (key_type_info, key, TRUE);
+                if (retval < 0) {
+                    break;
+                }
+                if (!retval) {
+                    _PyGI_ERROR_PREFIX ("Key %zd :", i);
+                    break;
+                }
+
+                retval = _pygi_g_type_info_check_object (value_type_info, value, TRUE);
+                if (retval < 0) {
+                    break;
+                }
+                if (!retval) {
+                    _PyGI_ERROR_PREFIX ("Value %zd :", i);
+                    break;
+                }
+            }
+
+            g_base_info_unref ( (GIBaseInfo *) key_type_info);
+            g_base_info_unref ( (GIBaseInfo *) value_type_info);
+            Py_DECREF (values);
+            Py_DECREF (keys);
+            break;
+        }
+        case GI_TYPE_TAG_ERROR:
+            PyErr_SetString (PyExc_NotImplementedError, "Error marshalling is not supported yet");
+            /* TODO */
+            break;
     }
 
-    return array_len;
+    return retval;
 }
 
-/**
- * _pygi_argument_to_array
- * @arg: The argument to convert
- * @array_length_policy: Closure for marshalling the array length argument when needed.
- * @user_data1: Generic user data passed to the array_length_policy.
- * @user_data2: Generic user data passed to the array_length_policy.
- * @type_info: The type info for @arg
- * @out_free_array: A return location for a gboolean that indicates whether
- *                  or not the wrapped GArray should be freed
- *
- * Make sure an array type argument is wrapped in a GArray.
- *
- * Note: This method can *not* be folded into _pygi_argument_to_object() because
- * arrays are special in the sense that they might require access to @args in
- * order to get the length.
- *
- * Returns: A GArray wrapping @arg. If @out_free_array has been set to TRUE then
- *          free the array with g_array_free() without freeing the data members.
- *          Otherwise don't free the array.
- */
 GArray *
 _pygi_argument_to_array (GIArgument  *arg,
-                         PyGIArgArrayLengthPolicy array_length_policy,
-                         void        *user_data1,
-                         void        *user_data2,
-                         GITypeInfo  *type_info,
-                         gboolean    *out_free_array)
+                         GIArgument  *args[],
+                         GITypeInfo *type_info,
+                         gboolean is_method)
 {
     GITypeInfo *item_type_info;
     gboolean is_zero_terminated;
     gsize item_size;
     gssize length;
     GArray *g_array;
-    
-    g_return_val_if_fail (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ARRAY, NULL);
 
     if (arg->v_pointer == NULL) {
         return NULL;
     }
-    
-    switch (g_type_info_get_array_type (type_info)) {
-        case GI_ARRAY_TYPE_C:
-            is_zero_terminated = g_type_info_is_zero_terminated (type_info);
-            item_type_info = g_type_info_get_param_type (type_info, 0);
 
-            item_size = _pygi_g_type_info_size (item_type_info);
+    is_zero_terminated = g_type_info_is_zero_terminated (type_info);
+    item_type_info = g_type_info_get_param_type (type_info, 0);
 
-            g_base_info_unref ( (GIBaseInfo *) item_type_info);
+    item_size = _pygi_g_type_info_size (item_type_info);
 
-            if (is_zero_terminated) {
-                length = g_strv_length (arg->v_pointer);
-            } else {
-                length = g_type_info_get_array_fixed_size (type_info);
-                if (length < 0) {
-                    gint length_arg_pos;
-
-                    if (G_UNLIKELY (array_length_policy == NULL)) {
-                        g_critical ("Unable to determine array length for %p",
-                                    arg->v_pointer);
-                        g_array = g_array_new (is_zero_terminated, FALSE, item_size);
-                        *out_free_array = TRUE;
-                        return g_array;
-                    }
+    g_base_info_unref ( (GIBaseInfo *) item_type_info);
 
-                    length_arg_pos = g_type_info_get_array_length (type_info);
-                    g_assert (length_arg_pos >= 0);
+    if (is_zero_terminated) {
+        length = g_strv_length (arg->v_pointer);
+    } else {
+        length = g_type_info_get_array_fixed_size (type_info);
+        if (length < 0) {
+            gint length_arg_pos;
 
-                    length = array_length_policy (length_arg_pos, user_data1, user_data2);
-                    if (length < 0) {
-                        return NULL;
-                    }
-                }
-            }
+            length_arg_pos = g_type_info_get_array_length (type_info);
+            g_assert (length_arg_pos >= 0);
 
-            g_assert (length >= 0);
-
-            g_array = g_array_new (is_zero_terminated, FALSE, item_size);
-
-            g_free (g_array->data);
-            g_array->data = arg->v_pointer;
-            g_array->len = length;
-            *out_free_array = TRUE;
-            break;
-        case GI_ARRAY_TYPE_ARRAY:
-        case GI_ARRAY_TYPE_BYTE_ARRAY:
-            /* Note: GByteArray is really just a GArray */
-            g_array = arg->v_pointer;
-            *out_free_array = FALSE;
-            break;
-        case GI_ARRAY_TYPE_PTR_ARRAY:
-        {
-            GPtrArray *ptr_array = (GPtrArray*) arg->v_pointer;
-            g_array = g_array_sized_new (FALSE, FALSE,
-                                         sizeof(gpointer),
-                                         ptr_array->len);
-             g_array->data = (char*) ptr_array->pdata;
-             g_array->len = ptr_array->len;
-             *out_free_array = TRUE;
-             break;
+            /* FIXME: Take into account the type of the argument. */
+            length = args[length_arg_pos]->v_int;
         }
-        default:
-            g_critical ("Unexpected array type %u",
-                        g_type_info_get_array_type (type_info));
-            g_array = NULL;
-            break;
     }
 
+    g_assert (length >= 0);
+
+    g_array = g_array_new (is_zero_terminated, FALSE, item_size);
+
+    g_array->data = arg->v_pointer;
+    g_array->len = length;
+
     return g_array;
 }
 
@@ -330,18 +708,234 @@ _pygi_argument_from_object (PyObject   *object,
 {
     GIArgument arg;
     GITypeTag type_tag;
-    gpointer cleanup_data = NULL;
 
     memset(&arg, 0, sizeof(GIArgument));
     type_tag = g_type_info_get_tag (type_info);
 
-    /* Ignores cleanup data for now. */
-    if (_pygi_marshal_from_py_basic_type (object, &arg, type_tag, transfer, &cleanup_data) ||
-            PyErr_Occurred()) {
-        return arg;
-    }
-
     switch (type_tag) {
+        case GI_TYPE_TAG_VOID:
+            g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
+            arg.v_pointer = object;
+            break;
+        case GI_TYPE_TAG_BOOLEAN:
+        {
+            arg.v_boolean = PyObject_IsTrue (object);
+            break;
+        }
+        case GI_TYPE_TAG_INT8:
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_INT32:
+        {
+            PyObject *int_;
+
+            int_ = PYGLIB_PyNumber_Long (object);
+            if (int_ == NULL) {
+                break;
+            }
+
+            if (type_tag == GI_TYPE_TAG_INT32)
+                arg.v_int32 = PYGLIB_PyLong_AsLong (int_);
+            else if (type_tag == GI_TYPE_TAG_INT8)
+                arg.v_int8 = PYGLIB_PyLong_AsLong (int_);
+            else if (type_tag == GI_TYPE_TAG_INT16)
+                arg.v_int16 = PYGLIB_PyLong_AsLong (int_);
+
+            Py_DECREF (int_);
+
+            break;
+        }
+        case GI_TYPE_TAG_UINT8:
+        case GI_TYPE_TAG_UINT16:
+        case GI_TYPE_TAG_UINT32:
+        case GI_TYPE_TAG_UINT64:
+        {
+            PyObject *number;
+            guint64 value;
+
+            number = PYGLIB_PyNumber_Long (object);
+            if (number == NULL) {
+                break;
+            }
+
+#if PY_VERSION_HEX < 0x03000000
+            if (PyInt_Check (number)) {
+                value = PyInt_AS_LONG (number);
+            } else
+#endif
+            value = PyLong_AsUnsignedLongLong (number);
+
+            if (type_tag == GI_TYPE_TAG_UINT32)
+                arg.v_uint32 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT64)
+                arg.v_uint64 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT8)
+                arg.v_uint8 = value;
+            else if (type_tag == GI_TYPE_TAG_UINT16)
+                arg.v_uint16 = value;
+
+            Py_DECREF (number);
+
+            break;
+        }
+        case GI_TYPE_TAG_INT64:
+        {
+            PyObject *number;
+            gint64 value;
+
+            number = PYGLIB_PyNumber_Long (object);
+            if (number == NULL) {
+                break;
+            }
+
+#if PY_VERSION_HEX < 0x03000000
+            if (PyInt_Check (number)) {
+                value = PyInt_AS_LONG (number);
+            } else
+#endif
+            value = PyLong_AsLongLong (number);
+
+            arg.v_int64 = value;
+
+            Py_DECREF (number);
+
+            break;
+        }
+        case GI_TYPE_TAG_FLOAT:
+        {
+            PyObject *float_;
+
+            float_ = PyNumber_Float (object);
+            if (float_ == NULL) {
+                break;
+            }
+
+            arg.v_float = (float) PyFloat_AsDouble (float_);
+            Py_DECREF (float_);
+
+            break;
+        }
+        case GI_TYPE_TAG_DOUBLE:
+        {
+            PyObject *float_;
+
+            float_ = PyNumber_Float (object);
+            if (float_ == NULL) {
+                break;
+            }
+
+            arg.v_double = PyFloat_AsDouble (float_);
+            Py_DECREF (float_);
+
+            break;
+        }
+        case GI_TYPE_TAG_GTYPE:
+        {
+            arg.v_long = pyg_type_from_object (object);
+
+            break;
+        }
+        case GI_TYPE_TAG_UNICHAR:
+        {
+            gchar *string;
+
+            if (object == Py_None) {
+                arg.v_uint32 = 0;
+                break;
+            }
+
+#if PY_VERSION_HEX < 0x03000000
+            if (PyUnicode_Check(object)) {
+                 PyObject *pystr_obj = PyUnicode_AsUTF8String (object);
+
+                 if (!pystr_obj)
+                     break;
+
+                 string = g_strdup(PyString_AsString (pystr_obj));
+                 Py_DECREF(pystr_obj);
+            } else {
+                 string = g_strdup(PyString_AsString (object));
+            }
+#else
+            {
+                PyObject *pybytes_obj = PyUnicode_AsUTF8String (object);
+                if (!pybytes_obj)
+                    break;
+
+                string = g_strdup(PyBytes_AsString (pybytes_obj));
+                Py_DECREF (pybytes_obj);
+            }
+#endif
+
+            arg.v_uint32 = g_utf8_get_char (string);
+
+            break;
+        }
+        case GI_TYPE_TAG_UTF8:
+        {
+            gchar *string;
+
+            if (object == Py_None) {
+                arg.v_string = NULL;
+                break;
+            }
+#if PY_VERSION_HEX < 0x03000000
+            if (PyUnicode_Check(object)) {
+                 PyObject *pystr_obj = PyUnicode_AsUTF8String (object);
+                 
+                 if (!pystr_obj)
+                     break;
+
+                 string = g_strdup(PyString_AsString (pystr_obj));
+                 Py_DECREF(pystr_obj);
+            } else {
+                 string = g_strdup(PyString_AsString (object));
+            }
+#else
+            {
+                PyObject *pybytes_obj = PyUnicode_AsUTF8String (object);
+                if (!pybytes_obj)
+                    break;
+
+                string = g_strdup(PyBytes_AsString (pybytes_obj));
+                Py_DECREF (pybytes_obj);
+            }
+#endif
+            arg.v_string = string;
+
+            break;
+        }
+        case GI_TYPE_TAG_FILENAME:
+        {
+            GError *error = NULL;
+            gchar *string;
+
+#if PY_VERSION_HEX < 0x03000000
+            string = g_strdup(PyString_AsString (object));
+#else
+            {
+                PyObject *pybytes_obj = PyUnicode_AsUTF8String (object);
+                if (!pybytes_obj)
+                    break;
+
+                string = g_strdup(PyBytes_AsString (pybytes_obj));
+                Py_DECREF (pybytes_obj);
+            }
+#endif
+
+            if (string == NULL) {
+                break;
+            }
+
+            arg.v_string = g_filename_from_utf8 (string, -1, NULL, NULL, &error);
+            g_free(string);
+
+            if (arg.v_string == NULL) {
+                PyErr_SetString (PyExc_Exception, error->message);
+                /* TODO: Convert the error to an exception. */
+            }
+
+            break;
+        }
         case GI_TYPE_TAG_ARRAY:
         {
             Py_ssize_t length;
@@ -353,17 +947,7 @@ _pygi_argument_from_object (PyObject   *object,
             Py_ssize_t i;
 
             if (object == Py_None) {
-                arg.v_pointer = NULL;
-                break;
-            }
-
-            /* Note, strings are sequences, but we cannot accept them here */
-            if (!PySequence_Check (object) || 
-#if PY_VERSION_HEX < 0x03000000
-                PyString_Check (object) || 
-#endif
-                PyUnicode_Check (object)) {
-                PyErr_SetString (PyExc_TypeError, "expected sequence");
+                arg.v_pointer = NULL;
                 break;
             }
 
@@ -375,11 +959,7 @@ _pygi_argument_from_object (PyObject   *object,
             is_zero_terminated = g_type_info_is_zero_terminated (type_info);
             item_type_info = g_type_info_get_param_type (type_info, 0);
 
-            /* we handle arrays that are really strings specially, see below */
-            if (g_type_info_get_tag (item_type_info) == GI_TYPE_TAG_UINT8)
-               item_size = 1;
-            else
-               item_size = sizeof (GIArgument);
+            item_size = _pygi_g_type_info_size (item_type_info);
 
             array = g_array_sized_new (is_zero_terminated, FALSE, item_size, length);
             if (array == NULL) {
@@ -452,33 +1032,84 @@ array_success:
                 case GI_INFO_TYPE_STRUCT:
                 case GI_INFO_TYPE_UNION:
                 {
-                    GType g_type;
-                    PyObject *py_type;
-                    gboolean is_foreign = (info_type == GI_INFO_TYPE_STRUCT) &&
-                                          (g_struct_info_is_foreign ((GIStructInfo *) info));
-
-                    g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
-                    py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) info);
-
-                    /* Note for G_TYPE_VALUE g_type:
-                     * This will currently leak the GValue that is allocated and
-                     * stashed in arg.v_pointer. Out argument marshaling for caller
-                     * allocated GValues already pass in memory for the GValue.
-                     * Further re-factoring is needed to fix this leak.
-                     * See: https://bugzilla.gnome.org/show_bug.cgi?id=693405
-                     */
-                    pygi_arg_struct_from_py_marshal (object,
-                                                     &arg,
-                                                     NULL, /*arg_name*/
-                                                     info, /*interface_info*/
-                                                     g_type,
-                                                     py_type,
-                                                     transfer,
-                                                     FALSE, /*copy_reference*/
-                                                     is_foreign,
-                                                     g_type_info_is_pointer (type_info));
-
-                    Py_DECREF (py_type);
+                    GType type;
+
+                    if (object == Py_None) {
+                        arg.v_pointer = NULL;
+                        break;
+                    }
+
+                    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
+
+                    /* Handle special cases first. */
+                    if (g_type_is_a (type, G_TYPE_VALUE)) {
+                        GValue *value;
+                        GType object_type;
+                        gint retval;
+
+                        object_type = pyg_type_from_object_strict ( (PyObject *) object->ob_type, FALSE);
+                        if (object_type == G_TYPE_INVALID) {
+                            PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
+                            break;
+                        }
+
+                        g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
+
+                        value = g_slice_new0 (GValue);
+
+                        /* if already a gvalue, copy, else marshal into gvalue */
+                        if (object_type == G_TYPE_VALUE) {
+                            /* src GValue's lifecycle is handled by Python
+                             * so we have to copy it into the destination's
+                             * GValue which is freed during the cleanup of
+                             * invoke.
+                             */
+                            GValue *src = (GValue *)((PyGObject *) object)->obj;
+                            g_value_init (value, G_VALUE_TYPE (src));
+                            g_value_copy(src, value);
+                        } else {
+                            g_value_init (value, object_type);
+                            retval = pyg_value_from_pyobject (value, object);
+                            if (retval < 0) {
+                                g_slice_free (GValue, value);
+                                PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GValue failed");
+                                break;
+                            }
+                        }
+
+                        arg.v_pointer = value;
+                    } else if (g_type_is_a (type, G_TYPE_CLOSURE)) {
+                        GClosure *closure;
+
+                        if (pyg_type_from_object_strict (object, FALSE) == G_TYPE_CLOSURE) {
+                            closure = (GClosure *)pyg_boxed_get (object, void);
+                        } else {
+                            closure = pyg_closure_new (object, NULL, NULL);
+                            if (closure == NULL) {
+                                PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
+                                break;
+                            }
+                        }
+
+                        arg.v_pointer = closure;
+                    } else if (g_struct_info_is_foreign (info)) {
+                        PyObject *result;
+                        result = pygi_struct_foreign_convert_to_g_argument (
+                                     object, info, transfer, &arg);
+                    } else if (g_type_is_a (type, G_TYPE_BOXED)) {
+                        arg.v_pointer = pyg_boxed_get (object, void);
+                        if (transfer == GI_TRANSFER_EVERYTHING) {
+                            arg.v_pointer = g_boxed_copy (type, arg.v_pointer);
+                        }
+                    } else if (g_type_is_a (type, G_TYPE_POINTER) || 
+                               g_type_is_a (type, G_TYPE_VARIANT) || 
+                               type == G_TYPE_NONE) {
+                       g_warn_if_fail (g_type_is_a (type, G_TYPE_VARIANT) || !g_type_info_is_pointer (type_info) || transfer == GI_TRANSFER_NOTHING);
+                        arg.v_pointer = pyg_pointer_get (object, void);
+                    } else {
+                        PyErr_Format (PyExc_NotImplementedError, "structure type '%s' is not supported yet", g_type_name (type));
+                    }
+
                     break;
                 }
                 case GI_INFO_TYPE_ENUM:
@@ -491,7 +1122,7 @@ array_success:
                         break;
                     }
 
-                    arg.v_int = PYGLIB_PyLong_AsLong (int_);
+                    arg.v_long = PYGLIB_PyLong_AsLong (int_);
 
                     Py_DECREF (int_);
 
@@ -499,10 +1130,17 @@ array_success:
                 }
                 case GI_INFO_TYPE_INTERFACE:
                 case GI_INFO_TYPE_OBJECT:
-                    /* An error within this call will result in a NULL arg */
-                    pygi_arg_gobject_out_arg_from_py (object, &arg, transfer);
-                    break;
+                    if (object == Py_None) {
+                        arg.v_pointer = NULL;
+                        break;
+                    }
 
+                    arg.v_pointer = pygobject_get (object);
+                    if (transfer == GI_TRANSFER_EVERYTHING) {
+                        g_object_ref (arg.v_pointer);
+                    }
+
+                    break;
                 default:
                     g_assert_not_reached();
             }
@@ -657,8 +1295,7 @@ list_item_error:
                     goto hash_table_item_error;
                 }
 
-                g_hash_table_insert (hash_table, key.v_pointer,
-                                     _pygi_arg_to_hash_pointer (&value, value_type_info));
+                g_hash_table_insert (hash_table, key.v_pointer, value.v_pointer);
                 continue;
 
 hash_table_item_error:
@@ -684,25 +1321,11 @@ hash_table_release:
             PyErr_SetString (PyExc_NotImplementedError, "error marshalling is not supported yet");
             /* TODO */
             break;
-        default:
-            g_assert_not_reached ();
     }
 
     return arg;
 }
 
-/**
- * _pygi_argument_to_object:
- * @arg: The argument to convert to an object.
- * @type_info: Type info for @arg
- * @transfer:
- *
- * If the argument is of type array, it must be encoded in a GArray, by calling
- * _pygi_argument_to_array(). This logic can not be folded into this method
- * as determining array lengths may require access to method call arguments.
- *
- * Returns: A PyObject representing @arg
- */
 PyObject *
 _pygi_argument_to_object (GIArgument  *arg,
                           GITypeInfo *type_info,
@@ -712,72 +1335,202 @@ _pygi_argument_to_object (GIArgument  *arg,
     PyObject *object = NULL;
 
     type_tag = g_type_info_get_tag (type_info);
-    object = _pygi_marshal_to_py_basic_type (arg, type_tag, transfer);
-    if (object)
-        return object;
-
     switch (type_tag) {
         case GI_TYPE_TAG_VOID:
-        {
-            if (g_type_info_is_pointer (type_info)) {
+            if (g_type_info_is_pointer (type_info) &&
+                    (arg->v_pointer != NULL)) {
+                /* Raw Python objects are passed to void* args */
                 g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
-                object = PyLong_FromVoidPtr (arg->v_pointer);
+                object = arg->v_pointer;
+            } else
+                object = Py_None;
+            Py_XINCREF (object);
+            break;
+        case GI_TYPE_TAG_BOOLEAN:
+        {
+            object = PyBool_FromLong (arg->v_boolean);
+            break;
+        }
+        case GI_TYPE_TAG_INT8:
+        {
+            object = PYGLIB_PyLong_FromLong (arg->v_int8);
+            break;
+        }
+        case GI_TYPE_TAG_UINT8:
+        {
+            object = PYGLIB_PyLong_FromLong (arg->v_uint8);
+            break;
+        }
+        case GI_TYPE_TAG_INT16:
+        {
+            object = PYGLIB_PyLong_FromLong (arg->v_int16);
+            break;
+        }
+        case GI_TYPE_TAG_UINT16:
+        {
+            object = PYGLIB_PyLong_FromLong (arg->v_uint16);
+            break;
+        }
+        case GI_TYPE_TAG_INT32:
+        {
+            object = PYGLIB_PyLong_FromLong (arg->v_int32);
+            break;
+        }
+        case GI_TYPE_TAG_UINT32:
+        {
+            object = PyLong_FromLongLong (arg->v_uint32);
+            break;
+        }
+        case GI_TYPE_TAG_INT64:
+        {
+            object = PyLong_FromLongLong (arg->v_int64);
+            break;
+        }
+        case GI_TYPE_TAG_UINT64:
+        {
+            object = PyLong_FromUnsignedLongLong (arg->v_uint64);
+            break;
+        }
+        case GI_TYPE_TAG_FLOAT:
+        {
+            object = PyFloat_FromDouble (arg->v_float);
+            break;
+        }
+        case GI_TYPE_TAG_DOUBLE:
+        {
+            object = PyFloat_FromDouble (arg->v_double);
+            break;
+        }
+        case GI_TYPE_TAG_GTYPE:
+        {
+            object = pyg_type_wrapper_new ( (GType) arg->v_long);
+            break;
+        }
+        case GI_TYPE_TAG_UNICHAR:
+        {
+            /* Preserve the bidirectional mapping between 0 and "" */
+            if (arg->v_uint32 == 0) {
+                object = PYGLIB_PyUnicode_FromString ("");
+            } else if (g_unichar_validate (arg->v_uint32)) {
+                gchar utf8[6];
+                gint bytes;
+
+                bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
+                object = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
+            } else {
+                /* TODO: Convert the error to an exception. */
+                PyErr_Format (PyExc_TypeError,
+                              "Invalid unicode codepoint %" G_GUINT32_FORMAT,
+                              arg->v_uint32);
+                object = Py_None;
+                Py_INCREF (object);
+            }
+            break;
+        }
+        case GI_TYPE_TAG_UTF8:
+            if (arg->v_string == NULL) {
+                object = Py_None;
+                Py_INCREF (object);
+                break;
+            }
+
+            object = PYGLIB_PyUnicode_FromString (arg->v_string);
+            break;
+        case GI_TYPE_TAG_FILENAME:
+        {
+            GError *error = NULL;
+            gchar *string;
+
+            if (arg->v_string == NULL) {
+                object = Py_None;
+                Py_INCREF (object);
+                break;
             }
+
+            string = g_filename_to_utf8 (arg->v_string, -1, NULL, NULL, &error);
+            if (string == NULL) {
+                PyErr_SetString (PyExc_Exception, error->message);
+                /* TODO: Convert the error to an exception. */
+                break;
+            }
+
+            object = PYGLIB_PyUnicode_FromString (string);
+
+            g_free (string);
+
             break;
         }
         case GI_TYPE_TAG_ARRAY:
         {
-            /* Arrays are assumed to be packed in a GArray */
             GArray *array;
             GITypeInfo *item_type_info;
             GITypeTag item_type_tag;
             GITransfer item_transfer;
             gsize i, item_size;
 
-            if (arg->v_pointer == NULL)
-                return PyList_New (0);
-            
+            array = arg->v_pointer;
+
             item_type_info = g_type_info_get_param_type (type_info, 0);
             g_assert (item_type_info != NULL);
 
             item_type_tag = g_type_info_get_tag (item_type_info);
             item_transfer = transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
-            
-            array = arg->v_pointer;
-            item_size = g_array_get_element_size (array);
-            
-            if (G_UNLIKELY (item_size > sizeof(GIArgument))) {
-                g_critical ("Stack overflow protection. "
-                            "Can't copy array element into GIArgument.");
-                return PyList_New (0);
-            }
 
             if (item_type_tag == GI_TYPE_TAG_UINT8) {
                 /* Return as a byte array */
-                object = PYGLIB_PyBytes_FromStringAndSize (array->data, array->len);
+                if (arg->v_pointer == NULL) {
+                    object = PYGLIB_PyBytes_FromString ("");
+                    break;
+                }
+
+                object = PYGLIB_PyBytes_FromStringAndSize(array->data, array->len);
+                break;
+
             } else {
+                if (arg->v_pointer == NULL) {
+                    object = PyList_New (0);
+                    break;
+                }
+
                 object = PyList_New (array->len);
                 if (object == NULL) {
-                    g_critical ("Failure to allocate array for %u items", array->len);
-                    g_base_info_unref ( (GIBaseInfo *) item_type_info);
                     break;
                 }
 
-                for (i = 0; i < array->len; i++) {
-                    GIArgument item = { 0 };
-                    PyObject *py_item;
-                    
-                    memcpy (&item, array->data + i * item_size, item_size);
-
-                    py_item = _pygi_argument_to_object (&item, item_type_info, item_transfer);
-                    if (py_item == NULL) {
-                        Py_CLEAR (object);
-                        _PyGI_ERROR_PREFIX ("Item %zu: ", i);
-                        break;
+            }
+            item_size = g_array_get_element_size (array);
+
+            for (i = 0; i < array->len; i++) {
+                GIArgument item;
+                PyObject *py_item;
+                gboolean is_struct = FALSE;
+
+                if (item_type_tag == GI_TYPE_TAG_INTERFACE) {
+                    GIBaseInfo *iface_info = g_type_info_get_interface (item_type_info);
+                    switch (g_base_info_get_type (iface_info)) {
+                        case GI_INFO_TYPE_STRUCT:
+                        case GI_INFO_TYPE_BOXED:
+                            is_struct = TRUE;
+                        default:
+                            break;
                     }
+                    g_base_info_unref ( (GIBaseInfo *) iface_info);
+                }
+
+                if (is_struct) {
+                    item.v_pointer = &_g_array_index (array, GIArgument, i);
+                } else {
+                    memcpy (&item, &_g_array_index (array, GIArgument, i), item_size);
+                }
 
-                    PyList_SET_ITEM (object, i, py_item);
+                py_item = _pygi_argument_to_object (&item, item_type_info, item_transfer);
+                if (py_item == NULL) {
+                    Py_CLEAR (object);
+                    _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+                    break;
                 }
+
+                PyList_SET_ITEM (object, i, py_item);
             }
 
             g_base_info_unref ( (GIBaseInfo *) item_type_info);
@@ -800,27 +1553,69 @@ _pygi_argument_to_object (GIArgument  *arg,
                 case GI_INFO_TYPE_STRUCT:
                 case GI_INFO_TYPE_UNION:
                 {
-                    PyObject *py_type;
-                    GType g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
-                    gboolean is_foreign = (info_type == GI_INFO_TYPE_STRUCT) &&
-                                          (g_struct_info_is_foreign ((GIStructInfo *) info));
+                    GType type;
+
+                    if (arg->v_pointer == NULL) {
+                        object = Py_None;
+                        Py_INCREF (object);
+                        break;
+                    }
+
+                    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) info);
+                    if (g_type_is_a (type, G_TYPE_VALUE)) {
+                        object = pyg_value_as_pyobject (arg->v_pointer, FALSE);
+                    } else if (g_struct_info_is_foreign (info)) {
+                        object = pygi_struct_foreign_convert_from_g_argument (info, arg->v_pointer);
+                    } else if (g_type_is_a (type, G_TYPE_BOXED)) {
+                        PyObject *py_type;
+
+                        py_type = _pygi_type_get_from_g_type (type);
+                        if (py_type == NULL)
+                            break;
+
+                        object = _pygi_boxed_new ( (PyTypeObject *) py_type, arg->v_pointer, transfer == GI_TRANSFER_EVERYTHING);
+
+                        Py_DECREF (py_type);
+                    } else if (g_type_is_a (type, G_TYPE_POINTER)) {
+                        PyObject *py_type;
+
+                        py_type = _pygi_type_get_from_g_type (type);
+
+                        if (py_type == NULL || !PyType_IsSubtype ( (PyTypeObject *) type, &PyGIStruct_Type)) {
+                            g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
+                            object = pyg_pointer_new (type, arg->v_pointer);
+                        } else {
+                            object = _pygi_struct_new ( (PyTypeObject *) py_type, arg->v_pointer, transfer == GI_TRANSFER_EVERYTHING);
+                        }
+
+                        Py_XDECREF (py_type);
+                   } else if (type == G_TYPE_VARIANT) {
+                        PyObject *py_type;
+
+                        g_variant_ref_sink (arg->v_pointer);
+                        py_type = _pygi_type_import_by_gi_info (info);
+                        object = _pygi_struct_new ( (PyTypeObject *) py_type, arg->v_pointer,
+                                                    transfer == GI_TRANSFER_EVERYTHING);
+                    } else if (type == G_TYPE_NONE) {
+                        PyObject *py_type;
 
-                    /* Special case variant and none to force loading from py module. */
-                    if (g_type == G_TYPE_VARIANT || g_type == G_TYPE_NONE) {
                         py_type = _pygi_type_import_by_gi_info (info);
+                        if (py_type == NULL) {
+                            break;
+                        }
+
+                        /* Only structs created in invoke can be safely marked
+                         * GI_TRANSFER_EVERYTHING. Trust that invoke has
+                         * filtered correctly
+                         */
+                        object = _pygi_struct_new ( (PyTypeObject *) py_type, arg->v_pointer,
+                                                    transfer == GI_TRANSFER_EVERYTHING);
+
+                        Py_DECREF (py_type);
                     } else {
-                        py_type = _pygi_type_get_from_g_type (g_type);
+                        PyErr_Format (PyExc_NotImplementedError, "structure type '%s' is not supported yet", g_type_name (type));
                     }
 
-                    object = pygi_arg_struct_to_py_marshal (arg,
-                                                            info, /*interface_info*/
-                                                            g_type,
-                                                            py_type,
-                                                            transfer,
-                                                            FALSE, /*is_allocated*/
-                                                            is_foreign);
-
-                    Py_XDECREF (py_type);
                     break;
                 }
                 case GI_INFO_TYPE_ENUM:
@@ -839,29 +1634,43 @@ _pygi_argument_to_object (GIArgument  *arg,
                             return NULL;
 
                         py_args = PyTuple_New (1);
-                        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (arg->v_int)) != 0) {
+                        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (arg->v_long)) != 0) {
                             Py_DECREF (py_args);
                             Py_DECREF (py_type);
                             return NULL;
                         }
 
-                        object = PyObject_CallFunction (py_type, "i", arg->v_int);
+                        object = PyObject_CallFunction (py_type, "l", arg->v_long);
 
                         Py_DECREF (py_args);
                         Py_DECREF (py_type);
 
                     } else if (info_type == GI_INFO_TYPE_ENUM) {
-                        object = pyg_enum_from_gtype (type, arg->v_int);
+                        object = pyg_enum_from_gtype (type, arg->v_long);
                     } else {
-                        object = pyg_flags_from_gtype (type, arg->v_uint);
+                        object = pyg_flags_from_gtype (type, arg->v_long);
                     }
 
                     break;
                 }
                 case GI_INFO_TYPE_INTERFACE:
                 case GI_INFO_TYPE_OBJECT:
-                    object = pygi_arg_gobject_to_py_called_from_c (arg, transfer);
+                    if (arg->v_pointer == NULL) {
+                        object = Py_None;
+                        Py_INCREF (object);
+                        break;
+                    }
 
+                    /* since we will unref the object when the
+                     * wrapper is destroyed and we don't want
+                     * GTK removing the object while the
+                     * wrapper is live, we take a gobject reference
+                     * when one is not transfered to us
+                     */
+                    if (transfer == GI_TRANSFER_NOTHING)
+                        g_object_ref (G_OBJECT(arg->v_pointer));
+
+                    object = pygobject_new (arg->v_pointer);
                     break;
                 default:
                     g_assert_not_reached();
@@ -952,7 +1761,6 @@ _pygi_argument_to_object (GIArgument  *arg,
                     break;
                 }
 
-                _pygi_hash_pointer_to_arg (&value, value_type_info);
                 py_value = _pygi_argument_to_object (&value, value_type_info, item_transfer);
                 if (py_value == NULL) {
                     Py_DECREF (py_key);
@@ -979,12 +1787,12 @@ _pygi_argument_to_object (GIArgument  *arg,
             GError *error = (GError *) arg->v_pointer;
             if (error != NULL && transfer == GI_TRANSFER_NOTHING) {
                 /* If we have not been transferred the ownership we must copy
-                 * the error, because pygi_error_check() is going to free it.
+                 * the error, because pyglib_error_check() is going to free it.
                  */
                 error = g_error_copy (error);
             }
 
-            if (pygi_error_check (&error)) {
+            if (pyglib_error_check (&error)) {
                 PyObject *err_type;
                 PyObject *err_value;
                 PyObject *err_trace;
@@ -997,15 +1805,107 @@ _pygi_argument_to_object (GIArgument  *arg,
                 Py_INCREF (object);
                 break;
             }
-            break;
         }
-        default:
+    }
+
+    return object;
+}
+
+
+GIArgument
+_pygi_argument_from_g_value(const GValue *value,
+                            GITypeInfo *type_info)
+{
+    GIArgument arg = { 0, };
+
+    GITypeTag type_tag = g_type_info_get_tag (type_info);
+    switch (type_tag) {
+        case GI_TYPE_TAG_BOOLEAN:
+            arg.v_boolean = g_value_get_boolean (value);
+            break;
+        case GI_TYPE_TAG_INT8:
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_INT32:
+        case GI_TYPE_TAG_INT64:
+            arg.v_int = g_value_get_int (value);
+            break;
+        case GI_TYPE_TAG_UINT8:
+        case GI_TYPE_TAG_UINT16:
+        case GI_TYPE_TAG_UINT32:
+        case GI_TYPE_TAG_UINT64:
+            arg.v_uint = g_value_get_uint (value);
+            break;
+        case GI_TYPE_TAG_UNICHAR:
+            arg.v_uint32 = g_value_get_schar (value);
+            break;
+        case GI_TYPE_TAG_FLOAT:
+            arg.v_float = g_value_get_float (value);
+            break;
+        case GI_TYPE_TAG_DOUBLE:
+            arg.v_double = g_value_get_double (value);
+            break;
+        case GI_TYPE_TAG_GTYPE:
+            arg.v_long = g_value_get_gtype (value);
+            break;
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+            arg.v_string = g_value_dup_string (value);
+            break;
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+            arg.v_pointer = g_value_get_pointer (value);
+            break;
+        case GI_TYPE_TAG_ARRAY:
+        case GI_TYPE_TAG_GHASH:
+            arg.v_pointer = g_value_get_boxed (value);
+            break;
+        case GI_TYPE_TAG_INTERFACE:
         {
-            g_assert_not_reached();
+            GIBaseInfo *info;
+            GIInfoType info_type;
+
+            info = g_type_info_get_interface (type_info);
+            info_type = g_base_info_get_type (info);
+
+            g_base_info_unref (info);
+
+            switch (info_type) {
+                case GI_INFO_TYPE_FLAGS:
+                    arg.v_long = g_value_get_flags (value);
+                    break;
+                case GI_INFO_TYPE_ENUM:
+                    arg.v_long = g_value_get_enum (value);
+                    break;
+                case GI_INFO_TYPE_INTERFACE:
+                case GI_INFO_TYPE_OBJECT:
+                    arg.v_pointer = g_value_get_object (value);
+                    break;
+                case GI_INFO_TYPE_BOXED:
+                case GI_INFO_TYPE_STRUCT:
+                case GI_INFO_TYPE_UNION:
+                    if (G_VALUE_HOLDS(value, G_TYPE_BOXED)) {
+                        arg.v_pointer = g_value_get_boxed (value);
+                    } else if (G_VALUE_HOLDS(value, G_TYPE_VARIANT)) {
+                        arg.v_pointer = g_value_get_variant (value);
+                    } else {
+                        arg.v_pointer = g_value_get_pointer (value);
+                    }
+                    break;
+                default:
+                    g_warning("Converting of type '%s' is not implemented", g_info_type_to_string(info_type));
+                    g_assert_not_reached();
+            }
+            break;
         }
+        case GI_TYPE_TAG_ERROR:
+            arg.v_pointer = g_value_get_boxed (value);
+            break;
+        case GI_TYPE_TAG_VOID:
+            g_critical("Converting of type '%s' is not implemented", g_type_tag_to_string(type_tag));
+            g_assert_not_reached();
     }
 
-    return object;
+    return arg;
 }
 
 void
@@ -1125,8 +2025,7 @@ _pygi_argument_release (GIArgument   *arg,
                         if (direction == GI_DIRECTION_IN && transfer == GI_TRANSFER_NOTHING) {
                             g_closure_unref (arg->v_pointer);
                         }
-                    } else if (info_type == GI_INFO_TYPE_STRUCT &&
-                               g_struct_info_is_foreign ((GIStructInfo*) info)) {
+                    } else if (g_struct_info_is_foreign ( (GIStructInfo*) info)) {
                         if (direction == GI_DIRECTION_OUT && transfer == GI_TRANSFER_EVERYTHING) {
                             pygi_struct_foreign_release (info, arg->v_pointer);
                         }
@@ -1271,8 +2170,13 @@ _pygi_argument_release (GIArgument   *arg,
             g_slice_free (GError *, arg->v_pointer);
             break;
         }
-        default:
-            break;
     }
 }
 
+void
+_pygi_argument_init (void)
+{
+    PyDateTime_IMPORT;
+    _pygobject_import();
+}
+
index 2e889dd..7224c75 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_ARGUMENT_H__
@@ -28,26 +30,22 @@ G_BEGIN_DECLS
 
 
 /* Private */
-typedef gssize (*PyGIArgArrayLengthPolicy) (gsize item_index,
-                                            void *user_data1,
-                                            void *user_data2);
+gint _pygi_g_type_interface_check_object (GIBaseInfo *info,
+                                          PyObject   *object);
 
-gssize _pygi_argument_array_length_marshal (gsize length_arg_index,
-                                            void *user_data1,
-                                            void *user_data2);
+gint _pygi_g_type_info_check_object (GITypeInfo *type_info,
+                                     PyObject   *object,
+                                     gboolean   allow_none);
 
-gpointer _pygi_arg_to_hash_pointer (const GIArgument *arg,
-                                    GITypeInfo       *type_info);
+gint _pygi_g_registered_type_info_check_object (GIRegisteredTypeInfo *info,
+                                                gboolean              is_instance,
+                                                PyObject             *object);
 
-void _pygi_hash_pointer_to_arg (GIArgument *arg,
-                                GITypeInfo *type_info);
 
 GArray* _pygi_argument_to_array (GIArgument  *arg,
-                                 PyGIArgArrayLengthPolicy array_length_policy,
-                                 void        *user_data1,
-                                 void        *user_data2,
-                                 GITypeInfo  *type_info,
-                                 gboolean    *out_free_array);
+                                 GIArgument  *args[],
+                                 GITypeInfo *type_info,
+                                 gboolean    is_method);
 
 GIArgument _pygi_argument_from_object (PyObject   *object,
                                       GITypeInfo *type_info,
@@ -57,14 +55,15 @@ PyObject* _pygi_argument_to_object (GIArgument  *arg,
                                     GITypeInfo *type_info,
                                     GITransfer  transfer);
 
+GIArgument _pygi_argument_from_g_value(const GValue *value,
+                                       GITypeInfo *type_info);
+
 void _pygi_argument_release (GIArgument   *arg,
                              GITypeInfo  *type_info,
                              GITransfer   transfer,
                              GIDirection  direction);
 
-gboolean pygi_argument_to_gssize (GIArgument *arg_in,
-                                  GITypeTag  type_tag,
-                                  gssize *gssize_out);
+void _pygi_argument_init (void);
 
 G_END_DECLS
 
diff --git a/gi/pygi-array.c b/gi/pygi-array.c
deleted file mode 100644 (file)
index 8dfab12..0000000
+++ /dev/null
@@ -1,916 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include <glib.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-array.h"
-#include "pygi-info.h"
-#include "pygi-marshal-cleanup.h"
-#include "pygi-basictype.h"
-#include "pygi-util.h"
-
-/* Needed for _pygi_marshal_cleanup_from_py_interface_struct_gvalue hack */
-#include "pygi-struct-marshal.h"
-
-/*
- * GArray to Python
- */
-
-static gboolean
-gi_argument_from_py_ssize_t (GIArgument   *arg_out,
-                             Py_ssize_t    size_in,
-                             GITypeTag     type_tag)
-{
-    switch (type_tag) {
-    case GI_TYPE_TAG_VOID:
-    case GI_TYPE_TAG_BOOLEAN:
-        goto unhandled_type;
-
-    case GI_TYPE_TAG_INT8:
-        if (size_in >= G_MININT8 && size_in <= G_MAXINT8) {
-            arg_out->v_int8 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_UINT8:
-        if (size_in >= 0 && size_in <= G_MAXUINT8) {
-            arg_out->v_uint8 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_INT16:
-        if (size_in >= G_MININT16 && size_in <= G_MAXINT16) {
-            arg_out->v_int16 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_UINT16:
-        if (size_in >= 0 && size_in <= G_MAXUINT16) {
-            arg_out->v_uint16 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-        /* Ranges assume two's complement */
-    case GI_TYPE_TAG_INT32:
-        if (size_in >= G_MININT32 && size_in <= G_MAXINT32) {
-            arg_out->v_int32 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_UINT32:
-        if (size_in >= 0 && (gsize)size_in <= G_MAXUINT32) {
-            arg_out->v_uint32 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_INT64:
-        arg_out->v_int64 = size_in;
-        return TRUE;
-
-    case GI_TYPE_TAG_UINT64:
-        if (size_in >= 0) {
-            arg_out->v_uint64 = size_in;
-            return TRUE;
-        } else {
-            goto overflow;
-        }
-
-    case GI_TYPE_TAG_FLOAT:
-    case GI_TYPE_TAG_DOUBLE:
-    case GI_TYPE_TAG_GTYPE:
-    case GI_TYPE_TAG_UTF8:
-    case GI_TYPE_TAG_FILENAME:
-    case GI_TYPE_TAG_ARRAY:
-    case GI_TYPE_TAG_INTERFACE:
-    case GI_TYPE_TAG_GLIST:
-    case GI_TYPE_TAG_GSLIST:
-    case GI_TYPE_TAG_GHASH:
-    case GI_TYPE_TAG_ERROR:
-    case GI_TYPE_TAG_UNICHAR:
-    default:
-        goto unhandled_type;
-    }
-
- overflow:
-    PyErr_Format (PyExc_OverflowError,
-                  "Unable to marshal C Py_ssize_t %zd to %s",
-                  size_in,
-                  g_type_tag_to_string (type_tag));
-    return FALSE;
-
- unhandled_type:
-    PyErr_Format (PyExc_TypeError,
-                  "Unable to marshal C Py_ssize_t %zd to %s",
-                  size_in,
-                  g_type_tag_to_string (type_tag));
-    return FALSE;
-}
-
-static gboolean
-gi_argument_to_gsize (GIArgument *arg_in,
-                      gsize      *gsize_out,
-                      GITypeTag   type_tag)
-{
-    switch (type_tag) {
-      case GI_TYPE_TAG_INT8:
-          *gsize_out = arg_in->v_int8;
-          return TRUE;
-      case GI_TYPE_TAG_UINT8:
-          *gsize_out = arg_in->v_uint8;
-          return TRUE;
-      case GI_TYPE_TAG_INT16:
-          *gsize_out = arg_in->v_int16;
-          return TRUE;
-      case GI_TYPE_TAG_UINT16:
-          *gsize_out = arg_in->v_uint16;
-          return TRUE;
-      case GI_TYPE_TAG_INT32:
-          *gsize_out = arg_in->v_int32;
-          return TRUE;
-      case GI_TYPE_TAG_UINT32:
-          *gsize_out = arg_in->v_uint32;
-          return TRUE;
-      case GI_TYPE_TAG_INT64:
-          *gsize_out = arg_in->v_int64;
-          return TRUE;
-      case GI_TYPE_TAG_UINT64:
-          *gsize_out = arg_in->v_uint64;
-          return TRUE;
-      default:
-          PyErr_Format (PyExc_TypeError,
-                        "Unable to marshal %s to gsize",
-                        g_type_tag_to_string (type_tag));
-          return FALSE;
-    }
-}
-
-static gboolean
-_pygi_marshal_from_py_array (PyGIInvokeState   *state,
-                             PyGICallableCache *callable_cache,
-                             PyGIArgCache      *arg_cache,
-                             PyObject          *py_arg,
-                             GIArgument        *arg,
-                             gpointer          *cleanup_data)
-{
-    PyGIMarshalFromPyFunc from_py_marshaller;
-    int i = 0;
-    gsize success_count = 0;
-    Py_ssize_t length;
-    gssize item_size;
-    gboolean is_ptr_array;
-    GArray *array_ = NULL;
-    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-    PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
-    GITransfer cleanup_transfer = arg_cache->transfer;
-
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (!PySequence_Check (py_arg)) {
-        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    length = PySequence_Length (py_arg);
-    if (length < 0)
-        return FALSE;
-
-    if (array_cache->fixed_size >= 0 &&
-            array_cache->fixed_size != length) {
-        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
-                      array_cache->fixed_size, length);
-
-        return FALSE;
-    }
-
-    item_size = array_cache->item_size;
-    is_ptr_array = (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY);
-    if (is_ptr_array) {
-        array_ = (GArray *)g_ptr_array_sized_new (length);
-    } else {
-        array_ = g_array_sized_new (array_cache->is_zero_terminated,
-                                    TRUE,
-                                    item_size,
-                                    length);
-    }
-
-    if (array_ == NULL) {
-        PyErr_NoMemory ();
-        return FALSE;
-    }
-
-    if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8 &&
-        PYGLIB_PyBytes_Check (py_arg)) {
-        gchar *data = PYGLIB_PyBytes_AsString (py_arg);
-
-        /* Avoid making a copy if the data
-         * is not transferred to the C function
-         * and cannot not be modified by it.
-         */
-        if (array_cache->array_type == GI_ARRAY_TYPE_C &&
-            arg_cache->transfer == GI_TRANSFER_NOTHING &&
-            !array_cache->is_zero_terminated) {
-            g_free (array_->data);
-            array_->data = data;
-            cleanup_transfer = GI_TRANSFER_EVERYTHING;
-        } else {
-            memcpy (array_->data, data, length);
-        }
-        array_->len = length;
-        if (array_cache->is_zero_terminated) {
-            /* If array_ has been created with zero_termination, space for the
-             * terminator is properly allocated, so we're not off-by-one here. */
-            array_->data[length] = '\0';
-        }
-        goto array_success;
-    }
-
-    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
-    for (i = 0, success_count = 0; i < length; i++) {
-        GIArgument item = {0};
-        gpointer item_cleanup_data = NULL;
-        PyObject *py_item = PySequence_GetItem (py_arg, i);
-        if (py_item == NULL)
-            goto err;
-
-        if (!from_py_marshaller ( state,
-                                  callable_cache,
-                                  sequence_cache->item_cache,
-                                  py_item,
-                                 &item,
-                                 &item_cleanup_data)) {
-            Py_DECREF (py_item);
-            goto err;
-        }
-        Py_DECREF (py_item);
-
-        if (item_cleanup_data != NULL && item_cleanup_data != item.v_pointer) {
-            /* We only support one level of data discrepancy between an items
-             * data and its cleanup data. This is because we only track a single
-             * extra cleanup data pointer per-argument and cannot track the entire
-             * array of items differing data and cleanup_data.
-             * For example, this would fail if trying to marshal an array of
-             * callback closures marked with SCOPE call type where the cleanup data
-             * is different from the items v_pointer, likewise an array of arrays.
-             */
-            PyErr_SetString(PyExc_RuntimeError, "Cannot cleanup item data for array due to "
-                                                "the items data its cleanup data being different.");
-            goto err;
-        }
-
-        /* FIXME: it is much more efficent to have seperate marshaller
-         *        for ptr arrays than doing the evaluation
-         *        and casting each loop iteration
-         */
-        if (is_ptr_array) {
-            g_ptr_array_add((GPtrArray *)array_, item.v_pointer);
-        } else if (sequence_cache->item_cache->is_pointer) {
-            /* if the item is a pointer, simply copy the pointer */
-            g_assert (item_size == sizeof (item.v_pointer));
-            g_array_insert_val (array_, i, item);
-        } else if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
-            /* Special case handling of flat arrays of gvalue/boxed/struct */
-            PyGIInterfaceCache *item_iface_cache = (PyGIInterfaceCache *) sequence_cache->item_cache;
-            GIBaseInfo *base_info = (GIBaseInfo *) item_iface_cache->interface_info;
-            GIInfoType info_type = g_base_info_get_type (base_info);
-
-            switch (info_type) {
-                case GI_INFO_TYPE_UNION:
-                case GI_INFO_TYPE_STRUCT:
-                {
-                    PyGIArgCache *item_arg_cache = (PyGIArgCache *)item_iface_cache;
-                    PyGIMarshalCleanupFunc from_py_cleanup = item_arg_cache->from_py_cleanup;
-
-                    if (g_type_is_a (item_iface_cache->g_type, G_TYPE_VALUE)) {
-                        /* Special case GValue flat arrays to properly init and copy the contents. */
-                        GValue* dest = (GValue*) (array_->data + (i * item_size));
-                        if (item.v_pointer != NULL) {
-                            memset (dest, 0, item_size);
-                            g_value_init (dest, G_VALUE_TYPE ((GValue*) item.v_pointer));
-                            g_value_copy ((GValue*) item.v_pointer, dest);
-                        }
-                        /* Manually increment the length because we are manually setting the memory. */
-                        array_->len++;
-
-                    } else {
-                        /* Handles flat arrays of boxed or struct types. */
-                        g_array_insert_vals (array_, i, item.v_pointer, 1);
-                    }
-
-                    /* Cleanup any memory left by the per-item marshaler because
-                     * _pygi_marshal_cleanup_from_py_array will not know about this
-                     * due to "item" being a temporarily marshaled value done on the stack.
-                     */
-                    if (from_py_cleanup)
-                        from_py_cleanup (state, item_arg_cache, py_item, item_cleanup_data, TRUE);
-
-                    break;
-                }
-                default:
-                    g_array_insert_val (array_, i, item);
-            }
-        } else {
-            /* default value copy of a simple type */
-            g_array_insert_val (array_, i, item);
-        }
-
-        success_count++;
-        continue;
-err:
-        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
-            gsize j;
-            PyGIMarshalCleanupFunc cleanup_func =
-                sequence_cache->item_cache->from_py_cleanup;
-
-            /* Only attempt per item cleanup on pointer items */
-            if (sequence_cache->item_cache->is_pointer) {
-                for(j = 0; j < success_count; j++) {
-                    PyObject *py_seq_item = PySequence_GetItem (py_arg, j);
-                    cleanup_func (state,
-                                  sequence_cache->item_cache,
-                                  py_seq_item,
-                                  is_ptr_array ?
-                                          g_ptr_array_index ((GPtrArray *)array_, j) :
-                                          g_array_index (array_, gpointer, j),
-                                  TRUE);
-                    Py_DECREF (py_seq_item);
-                }
-            }
-        }
-
-        if (is_ptr_array)
-            g_ptr_array_free ( ( GPtrArray *)array_, TRUE);
-        else
-            g_array_free (array_, TRUE);
-        _PyGI_ERROR_PREFIX ("Item %i: ", i);
-        return FALSE;
-    }
-
-array_success:
-    if (array_cache->len_arg_index >= 0) {
-        /* we have an child arg to handle */
-        PyGIArgCache *child_cache =
-            _pygi_callable_cache_get_arg (callable_cache, array_cache->len_arg_index);
-
-        if (!gi_argument_from_py_ssize_t (&state->args[child_cache->c_arg_index].arg_value,
-                                          length,
-                                          child_cache->type_tag)) {
-            goto err;
-        }
-    }
-
-    if (array_cache->array_type == GI_ARRAY_TYPE_C) {
-        /* In the case of GI_ARRAY_C, we give the data directly as the argument
-         * but keep the array_ wrapper as cleanup data so we don't have to find
-         * it's length again.
-         */
-        arg->v_pointer = array_->data;
-
-        if (cleanup_transfer == GI_TRANSFER_EVERYTHING) {
-            g_array_free (array_, FALSE);
-            *cleanup_data = NULL;
-        } else {
-            *cleanup_data = array_;
-        }
-    } else {
-        arg->v_pointer = array_;
-
-        if (cleanup_transfer == GI_TRANSFER_NOTHING) {
-            /* Free everything in cleanup. */
-            *cleanup_data = array_;
-        } else if (cleanup_transfer == GI_TRANSFER_CONTAINER) {
-            /* Make a shallow copy so we can free the elements later in cleanup
-             * because it is possible invoke will free the list before our cleanup. */
-            *cleanup_data = is_ptr_array ?
-                    (gpointer)g_ptr_array_ref ((GPtrArray *)array_) :
-                    (gpointer)g_array_ref (array_);
-        } else { /* GI_TRANSFER_EVERYTHING */
-            /* No cleanup, everything is given to the callee. */
-            *cleanup_data = NULL;
-        }
-    }
-
-    return TRUE;
-}
-
-static void
-_pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
-                                     PyGIArgCache    *arg_cache,
-                                     PyObject        *py_arg,
-                                     gpointer         data,
-                                     gboolean         was_processed)
-{
-    if (was_processed) {
-        GArray *array_ = NULL;
-        GPtrArray *ptr_array_ = NULL;
-        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-        PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
-
-        if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
-            ptr_array_ = (GPtrArray *) data;
-        } else {
-            array_ = (GArray *) data;
-        }
-
-        /* clean up items first */
-        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
-            gsize i;
-            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
-            PyGIMarshalCleanupFunc cleanup_func =
-                sequence_cache->item_cache->from_py_cleanup;
-
-            for (i = 0; i < len; i++) {
-                gpointer item;
-                PyObject *py_item = NULL;
-
-                /* case 1: GPtrArray */
-                if (ptr_array_ != NULL)
-                    item = g_ptr_array_index (ptr_array_, i);
-                /* case 2: C array or GArray with object pointers */
-                else if (sequence_cache->item_cache->is_pointer)
-                    item = g_array_index (array_, gpointer, i);
-                /* case 3: C array or GArray with simple types or structs */
-                else {
-                    item = array_->data + i * array_cache->item_size;
-                    /* special-case hack: GValue array items do not get slice
-                     * allocated in _pygi_marshal_from_py_array(), so we must
-                     * not try to deallocate it as a slice and thus
-                     * short-circuit cleanup_func. */
-                    if (cleanup_func == pygi_arg_gvalue_from_py_cleanup) {
-                        g_value_unset ((GValue*) item);
-                        continue;
-                    }
-                }
-
-                py_item = PySequence_GetItem (py_arg, i);
-                cleanup_func (state, sequence_cache->item_cache, py_item, item, TRUE);
-                Py_XDECREF (py_item);
-            }
-        }
-
-        /* Only free the array when we didn't transfer ownership */
-        if (array_cache->array_type == GI_ARRAY_TYPE_C) {
-            /* always free the GArray wrapper created in from_py marshaling and
-             * passed back as cleanup_data
-             */
-            g_array_free (array_, arg_cache->transfer == GI_TRANSFER_NOTHING);
-        } else {
-            if (array_ != NULL)
-                g_array_unref (array_);
-            else
-                g_ptr_array_unref (ptr_array_);
-        }
-    }
-}
-
-/*
- * GArray from Python
- */
-static PyObject *
-_pygi_marshal_to_py_array (PyGIInvokeState   *state,
-                           PyGICallableCache *callable_cache,
-                           PyGIArgCache      *arg_cache,
-                           GIArgument        *arg)
-{
-    GArray *array_;
-    PyObject *py_obj = NULL;
-    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
-    PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
-    gsize processed_items = 0;
-
-     /* GArrays make it easier to iterate over arrays
-      * with different element sizes but requires that
-      * we allocate a GArray if the argument was a C array
-      */
-    if (array_cache->array_type == GI_ARRAY_TYPE_C) {
-        gsize len;
-        if (array_cache->fixed_size >= 0) {
-            g_assert(arg->v_pointer != NULL);
-            len = array_cache->fixed_size;
-        } else if (array_cache->is_zero_terminated) {
-            if (arg->v_pointer == NULL) {
-                len = 0;
-            } else if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
-                len = strlen (arg->v_pointer);
-            } else {
-                len = g_strv_length ((gchar **)arg->v_pointer);
-            }
-        } else {
-            GIArgument *len_arg = &state->args[array_cache->len_arg_index].arg_value;
-            PyGIArgCache *sub_cache = _pygi_callable_cache_get_arg (callable_cache,
-                                                                    array_cache->len_arg_index);
-
-            if (!gi_argument_to_gsize (len_arg, &len, sub_cache->type_tag)) {
-                return NULL;
-            }
-        }
-
-        array_ = g_array_new (FALSE,
-                              FALSE,
-                              array_cache->item_size);
-        if (array_ == NULL) {
-            PyErr_NoMemory ();
-
-            if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && arg->v_pointer != NULL)
-                g_free (arg->v_pointer);
-
-            return NULL;
-        }
-
-        if (array_->data != NULL)
-            g_free (array_->data);
-        array_->data = arg->v_pointer;
-        array_->len = len;
-    } else {
-        array_ = arg->v_pointer;
-    }
-
-    if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
-        if (arg->v_pointer == NULL) {
-            py_obj = PYGLIB_PyBytes_FromString ("");
-        } else {
-            py_obj = PYGLIB_PyBytes_FromStringAndSize (array_->data, array_->len);
-        }
-    } else {
-        if (arg->v_pointer == NULL) {
-            py_obj = PyList_New (0);
-        } else {
-            guint i;
-
-            gsize item_size;
-            PyGIMarshalToPyFunc item_to_py_marshaller;
-            PyGIArgCache *item_arg_cache;
-
-            py_obj = PyList_New (array_->len);
-            if (py_obj == NULL)
-                goto err;
-
-
-            item_arg_cache = seq_cache->item_cache;
-            item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
-            item_size = g_array_get_element_size (array_);
-
-            for (i = 0; i < array_->len; i++) {
-                GIArgument item_arg = {0};
-                PyObject *py_item;
-
-                /* If we are receiving an array of pointers, simply assign the pointer
-                 * and move on, letting the per-item marshaler deal with the
-                 * various transfer modes and ref counts (e.g. g_variant_ref_sink).
-                 */
-                if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
-                    item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
-
-                } else if (item_arg_cache->is_pointer) {
-                    item_arg.v_pointer = g_array_index (array_, gpointer, i);
-
-                } else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
-                    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
-
-                    /* FIXME: This probably doesn't work with boxed types or gvalues.
-                     * See fx. _pygi_marshal_from_py_array() */
-                    switch (g_base_info_get_type (iface_cache->interface_info)) {
-                        case GI_INFO_TYPE_STRUCT:
-                            if (arg_cache->transfer == GI_TRANSFER_EVERYTHING &&
-                                       !g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
-                                /* array elements are structs */
-                                gpointer *_struct = g_malloc (item_size);
-                                memcpy (_struct, array_->data + i * item_size,
-                                        item_size);
-                                item_arg.v_pointer = _struct;
-                            } else {
-                                item_arg.v_pointer = array_->data + i * item_size;
-                            }
-                            break;
-                        default:
-                            item_arg.v_pointer = g_array_index (array_, gpointer, i);
-                            break;
-                    }
-                } else {
-                    memcpy (&item_arg, array_->data + i * item_size, item_size);
-                }
-
-                py_item = item_to_py_marshaller ( state,
-                                                callable_cache,
-                                                item_arg_cache,
-                                                &item_arg);
-
-                if (py_item == NULL) {
-                    Py_CLEAR (py_obj);
-
-                    if (array_cache->array_type == GI_ARRAY_TYPE_C)
-                        g_array_unref (array_);
-
-                    goto err;
-                }
-                PyList_SET_ITEM (py_obj, i, py_item);
-                processed_items++;
-            }
-        }
-    }
-
-    if (array_cache->array_type == GI_ARRAY_TYPE_C)
-        g_array_free (array_, FALSE);
-
-    return py_obj;
-
-err:
-    if (array_cache->array_type == GI_ARRAY_TYPE_C) {
-        g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
-    } else {
-        /* clean up unprocessed items */
-        if (seq_cache->item_cache->to_py_cleanup != NULL) {
-            guint j;
-            PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
-            for (j = processed_items; j < array_->len; j++) {
-                cleanup_func (state,
-                              seq_cache->item_cache,
-                              NULL,
-                              g_array_index (array_, gpointer, j),
-                              FALSE);
-            }
-        }
-
-        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
-            g_array_free (array_, TRUE);
-    }
-
-    return NULL;
-}
-
-static GArray*
-_wrap_c_array (PyGIInvokeState   *state,
-               PyGIArgGArray     *array_cache,
-               gpointer           data)
-{
-    GArray *array_;
-    gsize   len = 0;
-
-    if (array_cache->fixed_size >= 0) {
-        len = array_cache->fixed_size;
-    } else if (array_cache->is_zero_terminated) {
-        len = g_strv_length ((gchar **)data);
-    } else if (array_cache->len_arg_index >= 0) {
-        GIArgument *len_arg = &state->args[array_cache->len_arg_index].arg_value;
-        len = len_arg->v_long;
-    }
-
-    array_ = g_array_new (FALSE,
-                          FALSE,
-                          array_cache->item_size);
-
-    if (array_ == NULL)
-        return NULL;
-
-    g_free (array_->data);
-    array_->data = data;
-    array_->len = len;
-
-    return array_;
-}
-
-static void
-_pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
-                                   PyGIArgCache    *arg_cache,
-                                   PyObject        *dummy,
-                                   gpointer         data,
-                                   gboolean         was_processed)
-{
-    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
-        arg_cache->transfer == GI_TRANSFER_CONTAINER) {
-        GArray *array_ = NULL;
-        GPtrArray *ptr_array_ = NULL;
-        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-        PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
-
-        /* If this isn't a garray create one to help process variable sized
-           array elements */
-        if (array_cache->array_type == GI_ARRAY_TYPE_C) {
-            array_ = _wrap_c_array (state, array_cache, data);
-
-            if (array_ == NULL)
-                return;
-
-        } else if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
-            ptr_array_ = (GPtrArray *) data;
-        } else {
-            array_ = (GArray *) data;
-        }
-
-        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
-            gsize i;
-            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
-
-            PyGIMarshalCleanupFunc cleanup_func = sequence_cache->item_cache->to_py_cleanup;
-            for (i = 0; i < len; i++) {
-                cleanup_func (state,
-                              sequence_cache->item_cache,
-                              NULL,
-                              (array_ != NULL) ? g_array_index (array_, gpointer, i) : g_ptr_array_index (ptr_array_, i),
-                              was_processed);
-            }
-        }
-
-        if (array_ != NULL)
-            g_array_free (array_, TRUE);
-        else
-            g_ptr_array_free (ptr_array_, TRUE);
-    }
-}
-
-static void
-_array_cache_free_func (PyGIArgGArray *cache)
-{
-    if (cache != NULL) {
-        pygi_arg_cache_free (((PyGISequenceCache *)cache)->item_cache);
-        g_slice_free (PyGIArgGArray, cache);
-    }
-}
-
-PyGIArgCache*
-pygi_arg_garray_len_arg_setup (PyGIArgCache *arg_cache,
-                               GITypeInfo *type_info,
-                               PyGICallableCache *callable_cache,
-                               PyGIDirection direction,
-                               gssize arg_index,
-                               gssize *py_arg_index)
-{
-    PyGIArgGArray *seq_cache = (PyGIArgGArray *)arg_cache;
-
-    /* attempt len_arg_index setup for the first time */
-    if (seq_cache->len_arg_index < 0) {
-        seq_cache->len_arg_index = g_type_info_get_array_length (type_info);
-
-        /* offset by self arg for methods and vfuncs */
-        if (seq_cache->len_arg_index >= 0 && callable_cache != NULL) {
-            seq_cache->len_arg_index += callable_cache->args_offset;
-        }
-    }
-
-    if (seq_cache->len_arg_index >= 0) {
-        PyGIArgCache *child_cache = NULL;
-
-        child_cache = _pygi_callable_cache_get_arg (callable_cache,
-                                                    seq_cache->len_arg_index);
-        if (child_cache == NULL) {
-            child_cache = pygi_arg_cache_alloc ();
-        } else {
-            /* If the "length" arg cache already exists (the length comes before
-             * the array in the argument list), remove it from the to_py_args list
-             * because it does not belong in "to python" return tuple. The length
-             * will implicitly be a part of the returned Python list.
-             */
-            if (direction & PYGI_DIRECTION_TO_PYTHON) {
-                callable_cache->to_py_args =
-                    g_slist_remove (callable_cache->to_py_args, child_cache);
-            }
-
-            /* This is a case where the arg cache already exists and has been
-             * setup by another array argument sharing the same length argument.
-             * See: gi_marshalling_tests_multi_array_key_value_in
-             */
-            if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD)
-                return child_cache;
-        }
-
-        /* There is a length argument for this array, so increment the number
-         * of "to python" child arguments when applicable.
-         */
-        if (direction & PYGI_DIRECTION_TO_PYTHON)
-             callable_cache->n_to_py_child_args++;
-
-        child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
-        child_cache->direction = direction;
-        child_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
-        child_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
-        child_cache->py_arg_index = -1;
-
-        /* ugly edge case code:
-         *
-         * When the length comes before the array parameter we need to update
-         * indexes of arguments after the index argument.
-         */
-        if (seq_cache->len_arg_index < arg_index && direction & PYGI_DIRECTION_FROM_PYTHON) {
-            gssize i;
-            (*py_arg_index) -= 1;
-            callable_cache->n_py_args -= 1;
-
-            for (i = seq_cache->len_arg_index + 1;
-                   (gsize)i < _pygi_callable_cache_args_len (callable_cache); i++) {
-                PyGIArgCache *update_cache = _pygi_callable_cache_get_arg (callable_cache, i);
-                if (update_cache == NULL)
-                    break;
-
-                update_cache->py_arg_index -= 1;
-            }
-        }
-
-        _pygi_callable_cache_set_arg (callable_cache, seq_cache->len_arg_index, child_cache);
-        return child_cache;
-    }
-
-    return NULL;
-}
-
-static gboolean
-pygi_arg_garray_setup (PyGIArgGArray     *sc,
-                       GITypeInfo        *type_info,
-                       GIArgInfo         *arg_info,    /* may be NULL for return arguments */
-                       GITransfer         transfer,
-                       PyGIDirection      direction,
-                       PyGICallableCache *callable_cache)
-{
-    GITypeInfo *item_type_info;
-    PyGIArgCache *arg_cache = (PyGIArgCache *)sc;
-
-    if (!pygi_arg_sequence_setup ((PyGISequenceCache *)sc,
-                                  type_info,
-                                  arg_info,
-                                  transfer,
-                                  direction,
-                                  callable_cache)) {
-        return FALSE;
-    }
-
-    ((PyGIArgCache *)sc)->destroy_notify = (GDestroyNotify)_array_cache_free_func;
-    sc->array_type = g_type_info_get_array_type (type_info);
-    sc->is_zero_terminated = g_type_info_is_zero_terminated (type_info);
-    sc->fixed_size = g_type_info_get_array_fixed_size (type_info);
-    sc->len_arg_index = -1;  /* setup by pygi_arg_garray_len_arg_setup */
-
-    item_type_info = g_type_info_get_param_type (type_info, 0);
-    sc->item_size = _pygi_g_type_info_size (item_type_info);
-    g_base_info_unref ( (GIBaseInfo *)item_type_info);
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        arg_cache->from_py_marshaller = _pygi_marshal_from_py_array;
-        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_array;
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        arg_cache->to_py_marshaller = _pygi_marshal_to_py_array;
-        arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_array;
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_garray_new_from_info (GITypeInfo *type_info,
-                               GIArgInfo *arg_info,
-                               GITransfer transfer,
-                               PyGIDirection direction,
-                               PyGICallableCache *callable_cache)
-{
-    PyGIArgGArray *array_cache = g_slice_new0 (PyGIArgGArray);
-    if (array_cache == NULL)
-        return NULL;
-
-    if (!pygi_arg_garray_setup (array_cache,
-                                type_info,
-                                arg_info,
-                                transfer,
-                                direction,
-                                callable_cache)) {
-        pygi_arg_cache_free ( (PyGIArgCache *)array_cache);
-        return NULL;
-    }
-
-    return (PyGIArgCache *)array_cache;
-}
diff --git a/gi/pygi-array.h b/gi/pygi-array.h
deleted file mode 100644 (file)
index 718c7cd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_ARRAY_H__
-#define __PYGI_ARRAY_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-PyGIArgCache *pygi_arg_garray_new_from_info  (GITypeInfo        *type_info,
-                                              GIArgInfo         *arg_info,   /* may be null */
-                                              GITransfer         transfer,
-                                              PyGIDirection      direction,
-                                              PyGICallableCache *callable_cache);
-
-PyGIArgCache *pygi_arg_garray_len_arg_setup  (PyGIArgCache      *arg_cache,
-                                              GITypeInfo        *type_info,
-                                              PyGICallableCache *callable_cache,
-                                              PyGIDirection      direction,
-                                              gssize             arg_index,
-                                              gssize            *py_arg_index);
-
-G_END_DECLS
-
-#endif /*__PYGI_ARRAY_H__*/
diff --git a/gi/pygi-basictype.c b/gi/pygi-basictype.c
deleted file mode 100644 (file)
index 6d4e64e..0000000
+++ /dev/null
@@ -1,957 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include <pyglib-python-compat.h>
-
-#include "pygtype.h"
-#include "pygi-basictype.h"
-#include "pygi-argument.h"
-
-#ifdef G_OS_WIN32
-#include <math.h>
-
-#ifndef NAN
-static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
-#define NAN (*(const float *) __nan)
-#endif
-
-#ifndef INFINITY
-#define INFINITY HUGE_VAL
-#endif
-
-#endif
-
-
-/*
- * From Python Marshaling
- */
-
-static gboolean
-_pygi_marshal_from_py_void (PyGIInvokeState   *state,
-                            PyGICallableCache *callable_cache,
-                            PyGIArgCache      *arg_cache,
-                            PyObject          *py_arg,
-                            GIArgument        *arg,
-                            gpointer          *cleanup_data)
-{
-    g_warn_if_fail (arg_cache->transfer == GI_TRANSFER_NOTHING);
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-    } else if (PYGLIB_CPointer_Check(py_arg)) {
-        arg->v_pointer = PYGLIB_CPointer_GetPointer (py_arg, NULL);
-    } else if (PYGLIB_PyLong_Check(py_arg) || PyLong_Check(py_arg)) {
-        arg->v_pointer = PyLong_AsVoidPtr (py_arg);
-    } else {
-        PyErr_SetString(PyExc_ValueError,
-                        "Pointer arguments are restricted to integers, capsules, and None. "
-                        "See: https://bugzilla.gnome.org/show_bug.cgi?id=683599");
-        return FALSE;
-    }
-
-    *cleanup_data = arg->v_pointer;
-    return TRUE;
-}
-
-static gboolean
-check_valid_double (double x, double min, double max)
-{
-    char buf[100];
-
-    if ((x < min || x > max) && x != INFINITY && x != -INFINITY && x != NAN) {
-        if (PyErr_Occurred())
-            PyErr_Clear ();
-
-        /* we need this as PyErr_Format() does not support float types */
-        snprintf (buf, sizeof (buf), "%g not in range %g to %g", x, min, max);
-        PyErr_SetString (PyExc_OverflowError, buf);
-        return FALSE;
-    }
-    return TRUE;
-}
-
-static gboolean
-_pygi_py_arg_to_double (PyObject *py_arg, double *double_)
-{
-    PyObject *py_float;
-
-    if (!PyNumber_Check (py_arg)) {
-        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    py_float = PyNumber_Float (py_arg);
-    if (!py_float)
-        return FALSE;
-
-    *double_ = PyFloat_AsDouble (py_float);
-    Py_DECREF (py_float);
-
-
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_float (PyObject          *py_arg,
-                             GIArgument        *arg)
-{
-    double double_;
-
-    if (!_pygi_py_arg_to_double (py_arg, &double_))
-        return FALSE;
-
-    if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXFLOAT, G_MAXFLOAT))
-        return FALSE;
-
-    arg->v_float = double_;
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_double (PyObject          *py_arg,
-                              GIArgument        *arg)
-{
-    double double_;
-
-    if (!_pygi_py_arg_to_double (py_arg, &double_))
-        return FALSE;
-
-    if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXDOUBLE, G_MAXDOUBLE))
-        return FALSE;
-
-    arg->v_double = double_;
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_unichar (PyObject          *py_arg,
-                               GIArgument        *arg)
-{
-    Py_ssize_t size;
-    gchar *string_;
-
-    if (py_arg == Py_None) {
-        arg->v_uint32 = 0;
-        return FALSE;
-    }
-
-    if (PyUnicode_Check (py_arg)) {
-       PyObject *py_bytes;
-
-       size = PyUnicode_GET_SIZE (py_arg);
-       py_bytes = PyUnicode_AsUTF8String (py_arg);
-       if (!py_bytes)
-           return FALSE;
-
-       string_ = g_strdup(PYGLIB_PyBytes_AsString (py_bytes));
-       Py_DECREF (py_bytes);
-
-#if PY_VERSION_HEX < 0x03000000
-    } else if (PyString_Check (py_arg)) {
-       PyObject *pyuni = PyUnicode_FromEncodedObject (py_arg, "UTF-8", "strict");
-       if (!pyuni)
-           return FALSE;
-
-       size = PyUnicode_GET_SIZE (pyuni);
-       string_ = g_strdup (PyString_AsString(py_arg));
-       Py_DECREF (pyuni);
-#endif
-    } else {
-       PyErr_Format (PyExc_TypeError, "Must be string, not %s",
-                     py_arg->ob_type->tp_name);
-       return FALSE;
-    }
-
-    if (size != 1) {
-       PyErr_Format (PyExc_TypeError, "Must be a one character string, not %lld characters",
-                     (long long) size);
-       g_free (string_);
-       return FALSE;
-    }
-
-    arg->v_uint32 = g_utf8_get_char (string_);
-    g_free (string_);
-
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_gtype (PyObject          *py_arg,
-                             GIArgument        *arg)
-{
-    long type_ = pyg_type_from_object (py_arg);
-
-    if (type_ == 0) {
-        PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    arg->v_long = type_;
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_utf8 (PyObject          *py_arg,
-                            GIArgument        *arg,
-                            gpointer          *cleanup_data)
-{
-    gchar *string_;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (PyUnicode_Check (py_arg)) {
-        PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
-        if (!pystr_obj)
-            return FALSE;
-
-        string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
-        Py_DECREF (pystr_obj);
-    }
-#if PY_VERSION_HEX < 0x03000000
-    else if (PyString_Check (py_arg)) {
-        string_ = g_strdup (PyString_AsString (py_arg));
-    }
-#endif
-    else {
-        PyErr_Format (PyExc_TypeError, "Must be string, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    arg->v_string = string_;
-    *cleanup_data = arg->v_string;
-    return TRUE;
-}
-
-G_GNUC_UNUSED static gboolean
-_pygi_marshal_from_py_filename_unix (PyObject          *py_arg,
-                                     GIArgument        *arg,
-                                     gpointer          *cleanup_data)
-{
-    gchar *filename;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (PYGLIB_PyBytes_Check (py_arg)) {
-        char *buffer;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (py_arg, &buffer, NULL) == -1)
-            return FALSE;
-
-        filename = g_strdup (buffer);
-    } else if (PyUnicode_Check (py_arg)) {
-        PyObject *bytes;
-        char *buffer;
-
-#if PY_VERSION_HEX < 0x03000000
-        bytes = PyUnicode_AsEncodedString (py_arg, Py_FileSystemDefaultEncoding,
-                                           NULL);
-#else
-        bytes = PyUnicode_EncodeFSDefault (py_arg);
-#endif
-
-        if (!bytes)
-            return FALSE;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (bytes, &buffer, NULL) == -1) {
-            Py_DECREF (bytes);
-            return FALSE;
-        }
-
-        filename = g_strdup (buffer);
-        Py_DECREF (bytes);
-    } else {
-        PyErr_Format (PyExc_TypeError, "Must be bytes, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    arg->v_string = filename;
-    *cleanup_data = filename;
-    return TRUE;
-}
-
-G_GNUC_UNUSED static gboolean
-_pygi_marshal_from_py_filename_win32 (PyObject          *py_arg,
-                                      GIArgument        *arg,
-                                      gpointer          *cleanup_data)
-{
-    gchar *filename;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-#if PY_VERSION_HEX < 0x03000000
-    if (PYGLIB_PyBytes_Check (py_arg)) {
-        char *buffer;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (py_arg, &buffer, NULL) == -1)
-            return FALSE;
-
-        filename = g_strdup (buffer);
-    } else if (PyUnicode_Check (py_arg)) {
-        PyObject *bytes;
-        char *buffer;
-
-        bytes = PyUnicode_AsUTF8String (py_arg);
-        if (!bytes)
-            return FALSE;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (bytes, &buffer, NULL) == -1) {
-            Py_DECREF (bytes);
-            return FALSE;
-        }
-
-        filename = g_strdup (buffer);
-        Py_DECREF (bytes);
-    } else {
-        PyErr_Format (PyExc_TypeError, "Must be unicode, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-#else
-    if (PYGLIB_PyBytes_Check (py_arg)) {
-        PyObject *uni_arg;
-        gboolean result;
-        char *buffer;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (py_arg, &buffer, NULL) == -1)
-            return FALSE;
-
-        uni_arg = PyUnicode_DecodeFSDefault (buffer);
-        if (!uni_arg)
-            return FALSE;
-        result = _pygi_marshal_from_py_filename_win32 (uni_arg, arg, cleanup_data);
-        Py_DECREF (uni_arg);
-        return result;
-    } else if (PyUnicode_Check (py_arg)) {
-        PyObject *bytes, *temp_uni;
-        char *buffer;
-
-        /* The roundtrip merges lone surrogates, so we get the same output as
-         * with Py 2. Requires 3.4+ because of https://bugs.python.org/issue27971
-         * Separated lone surrogates can occur when concatenating two paths.
-         */
-        bytes = PyUnicode_AsEncodedString (py_arg, "utf-16-le", "surrogatepass");
-        if (!bytes)
-            return FALSE;
-        temp_uni = PyUnicode_FromEncodedObject (bytes, "utf-16-le", "surrogatepass");
-        Py_DECREF (bytes);
-        if (!temp_uni)
-            return FALSE;
-        /* glib uses utf-8, so encode to that and allow surrogates so we can
-         * represent all possible path values
-         */
-        bytes = PyUnicode_AsEncodedString (temp_uni, "utf-8", "surrogatepass");
-        Py_DECREF (temp_uni);
-        if (!bytes)
-            return FALSE;
-
-        if (PYGLIB_PyBytes_AsStringAndSize (bytes, &buffer, NULL) == -1) {
-            Py_DECREF (bytes);
-            return FALSE;
-        }
-
-        filename = g_strdup (buffer);
-        Py_DECREF (bytes);
-    } else {
-        PyErr_Format (PyExc_TypeError, "Must be str, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-#endif
-
-    arg->v_string = filename;
-    *cleanup_data = filename;
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_filename (PyObject          *py_arg,
-                                GIArgument        *arg,
-                                gpointer          *cleanup_data)
-{
-#ifdef G_OS_WIN32
-    return _pygi_marshal_from_py_filename_win32 (py_arg, arg, cleanup_data);
-#else
-    return _pygi_marshal_from_py_filename_unix (py_arg, arg, cleanup_data);
-#endif
-}
-
-static gboolean
-_pygi_marshal_from_py_long (PyObject   *object,   /* in */
-                            GIArgument *arg,      /* out */
-                            GITypeTag   type_tag,
-                            GITransfer  transfer)
-{
-    PyObject *number;
-
-    if (!PyNumber_Check (object)) {
-        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
-                      object->ob_type->tp_name);
-        return FALSE;
-    }
-
-#if PY_MAJOR_VERSION < 3
-    {
-        PyObject *tmp = PyNumber_Int (object);
-        if (tmp) {
-            number = PyNumber_Long (tmp);
-            Py_DECREF (tmp);
-        } else {
-            number = PyNumber_Long (object);
-        }
-    }
-#else
-    number = PyNumber_Long (object);
-#endif
-
-    if (number == NULL) {
-        PyErr_SetString (PyExc_TypeError, "expected int argument");
-        return FALSE;
-    }
-
-    switch (type_tag) {
-        case GI_TYPE_TAG_INT8:
-        {
-            long long_value = PyLong_AsLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < G_MININT8 || long_value > G_MAXINT8) {
-                PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
-                              long_value, (long)G_MININT8, (long)G_MAXINT8);
-            } else {
-                arg->v_int8 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_UINT8:
-        {
-            long long_value = PyLong_AsLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < 0 || long_value > G_MAXUINT8) {
-                PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
-                              long_value, (long)0, (long)G_MAXUINT8);
-            } else {
-                arg->v_uint8 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_INT16:
-        {
-            long long_value = PyLong_AsLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < G_MININT16 || long_value > G_MAXINT16) {
-                PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
-                              long_value, (long)G_MININT16, (long)G_MAXINT16);
-            } else {
-                arg->v_int16 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_UINT16:
-        {
-            long long_value = PyLong_AsLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < 0 || long_value > G_MAXUINT16) {
-                PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
-                              long_value, (long)0, (long)G_MAXUINT16);
-            } else {
-                arg->v_uint16 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_INT32:
-        {
-            long long_value = PyLong_AsLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < G_MININT32 || long_value > G_MAXINT32) {
-                PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
-                              long_value, (long)G_MININT32, (long)G_MAXINT32);
-            } else {
-                arg->v_int32 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_UINT32:
-        {
-            PY_LONG_LONG long_value = PyLong_AsLongLong (number);
-            if (PyErr_Occurred()) {
-                break;
-            } else if (long_value < 0 || long_value > G_MAXUINT32) {
-                PyErr_Format (PyExc_OverflowError, "%lld not in range %ld to %lu",
-                              long_value, (long)0, (unsigned long)G_MAXUINT32);
-            } else {
-                arg->v_uint32 = long_value;
-            }
-            break;
-        }
-
-        case GI_TYPE_TAG_INT64:
-        {
-            /* Rely on Python overflow error and convert to ValueError for 64 bit values */
-            arg->v_int64 = PyLong_AsLongLong (number);
-            break;
-        }
-
-        case GI_TYPE_TAG_UINT64:
-        {
-            /* Rely on Python overflow error and convert to ValueError for 64 bit values */
-            arg->v_uint64 = PyLong_AsUnsignedLongLong (number);
-            break;
-        }
-
-        default:
-            g_assert_not_reached ();
-    }
-
-    Py_DECREF (number);
-
-    if (PyErr_Occurred())
-        return FALSE;
-    return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_basic_type (PyObject   *object,   /* in */
-                                  GIArgument *arg,      /* out */
-                                  GITypeTag   type_tag,
-                                  GITransfer  transfer,
-                                  gpointer   *cleanup_data /* out */)
-{
-    switch (type_tag) {
-        case GI_TYPE_TAG_VOID:
-            g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
-            if (object == Py_None) {
-                arg->v_pointer = NULL;
-            } else if (!PYGLIB_PyLong_Check(object)  && !PyLong_Check(object)) {
-                PyErr_SetString(PyExc_TypeError,
-                    "Pointer assignment is restricted to integer values. "
-                    "See: https://bugzilla.gnome.org/show_bug.cgi?id=683599");
-            } else {
-                arg->v_pointer = PyLong_AsVoidPtr (object);
-                *cleanup_data = arg->v_pointer;
-            }
-            break;
-        case GI_TYPE_TAG_INT8:
-        case GI_TYPE_TAG_UINT8:
-            if (PYGLIB_PyBytes_Check (object)) {
-                if (PYGLIB_PyBytes_Size (object) != 1) {
-                    PyErr_Format (PyExc_TypeError, "Must be a single character");
-                    return FALSE;
-                }
-                if (type_tag == GI_TYPE_TAG_INT8) {
-                    arg->v_int8 = (gint8)(PYGLIB_PyBytes_AsString (object)[0]);
-                } else {
-                    arg->v_uint8 = (guint8)(PYGLIB_PyBytes_AsString (object)[0]);
-                }
-            } else {
-                return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
-            }
-            break;
-        case GI_TYPE_TAG_INT16:
-        case GI_TYPE_TAG_UINT16:
-        case GI_TYPE_TAG_INT32:
-        case GI_TYPE_TAG_UINT32:
-        case GI_TYPE_TAG_INT64:
-        case GI_TYPE_TAG_UINT64:
-            return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
-
-        case GI_TYPE_TAG_BOOLEAN:
-            arg->v_boolean = PyObject_IsTrue (object);
-            break;
-
-        case GI_TYPE_TAG_FLOAT:
-            return _pygi_marshal_from_py_float (object, arg);
-
-        case GI_TYPE_TAG_DOUBLE:
-            return _pygi_marshal_from_py_double (object, arg);
-
-        case GI_TYPE_TAG_GTYPE:
-            return _pygi_marshal_from_py_gtype (object, arg);
-
-        case GI_TYPE_TAG_UNICHAR:
-            return _pygi_marshal_from_py_unichar (object, arg);
-
-        case GI_TYPE_TAG_UTF8:
-            return _pygi_marshal_from_py_utf8 (object, arg, cleanup_data);
-
-        case GI_TYPE_TAG_FILENAME:
-            return _pygi_marshal_from_py_filename (object, arg, cleanup_data);
-
-        default:
-            return FALSE;
-    }
-
-    if (PyErr_Occurred())
-        return FALSE;
-
-    return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_basic_type_cache_adapter (PyGIInvokeState   *state,
-                                                PyGICallableCache *callable_cache,
-                                                PyGIArgCache      *arg_cache,
-                                                PyObject          *py_arg,
-                                                GIArgument        *arg,
-                                                gpointer          *cleanup_data)
-{
-    return _pygi_marshal_from_py_basic_type (py_arg,
-                                             arg,
-                                             arg_cache->type_tag,
-                                             arg_cache->transfer,
-                                             cleanup_data);
-}
-
-static void
-_pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
-                                    PyGIArgCache    *arg_cache,
-                                    PyObject        *py_arg,
-                                    gpointer         data,
-                                    gboolean         was_processed)
-{
-    /* We strdup strings so free unless ownership is transferred to C. */
-    if (was_processed && arg_cache->transfer == GI_TRANSFER_NOTHING)
-        g_free (data);
-}
-
-static void
-_arg_cache_from_py_void_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_void;
-}
-
-
-static void
-_arg_cache_from_py_basic_type_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
-}
-
-static void
-_arg_cache_from_py_utf8_setup (PyGIArgCache *arg_cache,
-                               GITransfer transfer)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
-    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
-}
-
-
-/*
- * To Python Marshaling
- */
-
-
-static PyObject *
-_pygi_marshal_to_py_void (PyGIInvokeState   *state,
-                          PyGICallableCache *callable_cache,
-                          PyGIArgCache      *arg_cache,
-                          GIArgument        *arg)
-{
-    if (arg_cache->is_pointer) {
-        return PyLong_FromVoidPtr (arg->v_pointer);
-    }
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-_pygi_marshal_to_py_unichar (GIArgument *arg)
-{
-    PyObject *py_obj = NULL;
-
-    /* Preserve the bidirectional mapping between 0 and "" */
-    if (arg->v_uint32 == 0) {
-        py_obj = PYGLIB_PyUnicode_FromString ("");
-    } else if (g_unichar_validate (arg->v_uint32)) {
-        gchar utf8[6];
-        gint bytes;
-
-        bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
-        py_obj = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
-    } else {
-        /* TODO: Convert the error to an exception. */
-        PyErr_Format (PyExc_TypeError,
-                      "Invalid unicode codepoint %" G_GUINT32_FORMAT,
-                      arg->v_uint32);
-    }
-
-    return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_utf8 (GIArgument *arg)
-{
-    PyObject *py_obj = NULL;
-    if (arg->v_string == NULL) {
-        Py_RETURN_NONE;
-     }
-
-    py_obj = PYGLIB_PyUnicode_FromString (arg->v_string);
-    return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_filename (GIArgument *arg)
-{
-    PyObject *py_obj;
-
-    if (arg->v_string == NULL) {
-        Py_RETURN_NONE;
-    }
-
-#if PY_VERSION_HEX < 0x03000000
-    /* On PY2 we return str as is */
-    py_obj = PyString_FromString (arg->v_string);
-#else
-#ifdef G_OS_WIN32
-    py_obj = PyUnicode_DecodeUTF8 (arg->v_string, strlen(arg->v_string),
-                                   "surrogatepass");
-#else
-    py_obj = PyUnicode_DecodeFSDefault (arg->v_string);
-#endif
-#endif
-
-    return py_obj;
-}
-
-
-/**
- * _pygi_marshal_to_py_basic_type:
- * @arg: The argument to convert to an object.
- * @type_tag: Type tag for @arg
- * @transfer: Transfer annotation
- *
- * Convert the given argument to a Python object. This function
- * is restricted to simple types that only require the GITypeTag
- * and GITransfer. For a more complete conversion routine, use:
- * _pygi_argument_to_object.
- *
- * Returns: A PyObject representing @arg or NULL if it cannot convert
- *          the argument.
- */
-PyObject *
-_pygi_marshal_to_py_basic_type (GIArgument  *arg,
-                                GITypeTag type_tag,
-                                GITransfer transfer)
-{
-    switch (type_tag) {
-        case GI_TYPE_TAG_BOOLEAN:
-            return PyBool_FromLong (arg->v_boolean);
-
-        case GI_TYPE_TAG_INT8:
-            return PYGLIB_PyLong_FromLong (arg->v_int8);
-
-        case GI_TYPE_TAG_UINT8:
-            return PYGLIB_PyLong_FromLong (arg->v_uint8);
-
-        case GI_TYPE_TAG_INT16:
-            return PYGLIB_PyLong_FromLong (arg->v_int16);
-
-        case GI_TYPE_TAG_UINT16:
-            return PYGLIB_PyLong_FromLong (arg->v_uint16);
-
-        case GI_TYPE_TAG_INT32:
-            return PYGLIB_PyLong_FromLong (arg->v_int32);
-
-        case GI_TYPE_TAG_UINT32:
-            return PyLong_FromLongLong (arg->v_uint32);
-
-        case GI_TYPE_TAG_INT64:
-            return PyLong_FromLongLong (arg->v_int64);
-
-        case GI_TYPE_TAG_UINT64:
-            return PyLong_FromUnsignedLongLong (arg->v_uint64);
-
-        case GI_TYPE_TAG_FLOAT:
-            return PyFloat_FromDouble (arg->v_float);
-
-        case GI_TYPE_TAG_DOUBLE:
-            return PyFloat_FromDouble (arg->v_double);
-
-        case GI_TYPE_TAG_GTYPE:
-            return pyg_type_wrapper_new ( (GType) arg->v_long);
-
-        case GI_TYPE_TAG_UNICHAR:
-            return _pygi_marshal_to_py_unichar (arg);
-
-        case GI_TYPE_TAG_UTF8:
-            return _pygi_marshal_to_py_utf8 (arg);
-
-        case GI_TYPE_TAG_FILENAME:
-            return _pygi_marshal_to_py_filename (arg);
-
-        default:
-            return NULL;
-    }
-    return NULL;
-}
-
-PyObject *
-_pygi_marshal_to_py_basic_type_cache_adapter (PyGIInvokeState   *state,
-                                              PyGICallableCache *callable_cache,
-                                              PyGIArgCache      *arg_cache,
-                                              GIArgument        *arg)
-{
-    return _pygi_marshal_to_py_basic_type (arg,
-                                            arg_cache->type_tag,
-                                            arg_cache->transfer);
-}
-
-static void
-_pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
-                                  PyGIArgCache    *arg_cache,
-                                  PyObject        *dummy,
-                                  gpointer         data,
-                                  gboolean         was_processed)
-{
-    /* Python copies the string so we need to free it
-       if the interface is transfering ownership, 
-       whether or not it has been processed yet */
-    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
-        g_free (data);
-}
-
-
-
-static void
-_arg_cache_to_py_basic_type_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
-}
-
-static void
-_arg_cache_to_py_void_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_void;
-}
-
-static void
-_arg_cache_to_py_utf8_setup (PyGIArgCache *arg_cache,
-                               GITransfer transfer)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
-    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
-}
-
-/*
- * Basic Type Interface
- */
-
-static gboolean
-pygi_arg_basic_type_setup_from_info (PyGIArgCache  *arg_cache,
-                                     GITypeInfo    *type_info,
-                                     GIArgInfo     *arg_info,
-                                     GITransfer     transfer,
-                                     PyGIDirection  direction)
-{
-    GITypeTag type_tag = g_type_info_get_tag (type_info);
-
-    if (!pygi_arg_base_setup (arg_cache, type_info, arg_info, transfer, direction))
-        return FALSE;
-
-    switch (type_tag) {
-       case GI_TYPE_TAG_VOID:
-           if (direction & PYGI_DIRECTION_FROM_PYTHON)
-               _arg_cache_from_py_void_setup (arg_cache);
-
-           if (direction & PYGI_DIRECTION_TO_PYTHON)
-               _arg_cache_to_py_void_setup (arg_cache);
-
-           break;
-       case GI_TYPE_TAG_BOOLEAN:
-       case GI_TYPE_TAG_INT8:
-       case GI_TYPE_TAG_UINT8:
-       case GI_TYPE_TAG_INT16:
-       case GI_TYPE_TAG_UINT16:
-       case GI_TYPE_TAG_INT32:
-       case GI_TYPE_TAG_UINT32:
-       case GI_TYPE_TAG_INT64:
-       case GI_TYPE_TAG_UINT64:
-       case GI_TYPE_TAG_FLOAT:
-       case GI_TYPE_TAG_DOUBLE:
-       case GI_TYPE_TAG_UNICHAR:
-       case GI_TYPE_TAG_GTYPE:
-           if (direction & PYGI_DIRECTION_FROM_PYTHON)
-               _arg_cache_from_py_basic_type_setup (arg_cache);
-
-           if (direction & PYGI_DIRECTION_TO_PYTHON)
-               _arg_cache_to_py_basic_type_setup (arg_cache);
-
-           break;
-       case GI_TYPE_TAG_UTF8:
-       case GI_TYPE_TAG_FILENAME:
-           if (direction & PYGI_DIRECTION_FROM_PYTHON)
-               _arg_cache_from_py_utf8_setup (arg_cache, transfer);
-
-           if (direction & PYGI_DIRECTION_TO_PYTHON)
-               _arg_cache_to_py_utf8_setup (arg_cache, transfer);
-
-           break;
-       default:
-           g_assert_not_reached ();
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_basic_type_new_from_info (GITypeInfo   *type_info,
-                                   GIArgInfo    *arg_info,
-                                   GITransfer    transfer,
-                                   PyGIDirection direction)
-{
-    gboolean res = FALSE;
-    PyGIArgCache *arg_cache = pygi_arg_cache_alloc ();
-    if (arg_cache == NULL)
-        return NULL;
-
-    res = pygi_arg_basic_type_setup_from_info (arg_cache,
-                                               type_info,
-                                               arg_info,
-                                               transfer,
-                                               direction);
-    if (res) {
-        return arg_cache;
-    } else {
-        pygi_arg_cache_free (arg_cache);
-        return NULL;
-    }
-}
diff --git a/gi/pygi-basictype.h b/gi/pygi-basictype.h
deleted file mode 100644 (file)
index 466c7d4..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_ARG_BASICTYPE_H__
-#define __PYGI_ARG_BASICTYPE_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-gboolean _pygi_marshal_from_py_basic_type               (PyObject      *object,     /* in */
-                                                         GIArgument    *arg,        /* out */
-                                                         GITypeTag      type_tag,
-                                                         GITransfer     transfer,
-                                                         gpointer      *cleanup_data);
-gboolean _pygi_marshal_from_py_basic_type_cache_adapter (PyGIInvokeState   *state,
-                                                         PyGICallableCache *callable_cache,
-                                                         PyGIArgCache      *arg_cache,
-                                                         PyObject          *py_arg,
-                                                         GIArgument        *arg,
-                                                         gpointer          *cleanup_data);
-
-PyObject *_pygi_marshal_to_py_basic_type               (GIArgument    *arg,        /* in */
-                                                        GITypeTag      type_tag,
-                                                        GITransfer     transfer);
-PyObject *_pygi_marshal_to_py_basic_type_cache_adapter (PyGIInvokeState   *state,
-                                                        PyGICallableCache *callable_cache,
-                                                        PyGIArgCache      *arg_cache,
-                                                        GIArgument        *arg);
-
-PyGIArgCache *pygi_arg_basic_type_new_from_info        (GITypeInfo    *type_info,
-                                                        GIArgInfo     *arg_info,   /* may be null */
-                                                        GITransfer     transfer,
-                                                        PyGIDirection  direction);
-G_END_DECLS
-
-#endif /*__PYGI_ARG_BASICTYPE_H__*/
index e9014f2..2fd446c 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-boxed.h"
-#include "pygi-info.h"
-#include "pygboxed.h"
-#include "pygtype.h"
+#include "pygi-private.h"
 
+#include <pygobject.h>
 #include <girepository.h>
 #include <pyglib-python-compat.h>
 
 static void
 _boxed_dealloc (PyGIBoxed *self)
 {
-    Py_TYPE (self)->tp_free ((PyObject *)self);
-}
-
-static PyObject *
-boxed_del (PyGIBoxed *self)
-{
     GType g_type;
-    gpointer boxed = pyg_boxed_get_ptr (self);
 
-    if ( ( (PyGBoxed *) self)->free_on_dealloc && boxed != NULL) {
+    PyObject_GC_UnTrack ( (PyObject *) self);
+
+    PyObject_ClearWeakRefs ( (PyObject *) self);
+
+    if ( ( (PyGBoxed *) self)->free_on_dealloc) {
         if (self->slice_allocated) {
-            g_slice_free1 (self->size, boxed);
+            g_slice_free1 (self->size, ( (PyGBoxed *) self)->boxed);
         } else {
             g_type = pyg_type_from_object ( (PyObject *) self);
-            g_boxed_free (g_type, boxed);
+            g_boxed_free (g_type, ( (PyGBoxed *) self)->boxed);
         }
     }
-    pyg_boxed_set_ptr (self, NULL);
 
-    Py_RETURN_NONE;
+    Py_TYPE( (PyGObject *) self)->tp_free ( (PyObject *) self);
 }
 
 void *
 _pygi_boxed_alloc (GIBaseInfo *info, gsize *size_out)
 {
-    gpointer boxed = NULL;
-    gsize size = 0;
-
-    switch (g_base_info_get_type (info)) {
-        case GI_INFO_TYPE_UNION:
-            size = g_union_info_get_size ( (GIUnionInfo *) info);
-            break;
-        case GI_INFO_TYPE_BOXED:
-        case GI_INFO_TYPE_STRUCT:
-            size = g_struct_info_get_size ( (GIStructInfo *) info);
-            break;
-        default:
-            PyErr_Format (PyExc_TypeError,
-                          "info should be Boxed or Union, not '%d'",
-                          g_base_info_get_type (info));
-            return NULL;
-    }
+    gsize size;
 
-    if (size == 0) {
-        PyErr_Format (PyExc_TypeError,
-            "boxed cannot be created directly; try using a constructor, see: help(%s.%s)",
-            g_base_info_get_namespace (info),
-            g_base_info_get_name (info));
-        return NULL;
+    /* FIXME: Remove when bgo#622711 is fixed */
+    if (g_registered_type_info_get_g_type (info) == G_TYPE_VALUE) {
+        size = sizeof (GValue);
+    } else {
+        switch (g_base_info_get_type (info)) {
+            case GI_INFO_TYPE_UNION:
+                size = g_union_info_get_size ( (GIUnionInfo *) info);
+                break;
+            case GI_INFO_TYPE_BOXED:
+            case GI_INFO_TYPE_STRUCT:
+                size = g_struct_info_get_size ( (GIStructInfo *) info);
+                break;
+            default:
+                PyErr_Format (PyExc_TypeError,
+                              "info should be Boxed or Union, not '%d'",
+                              g_base_info_get_type (info));
+                return NULL;
+        }
     }
 
     if( size_out != NULL)
         *size_out = size;
 
-    boxed = g_slice_alloc0 (size);
-    if (boxed == NULL)
-        PyErr_NoMemory();
-    return boxed;
+    return g_slice_alloc0 (size);
 }
 
 static PyObject *
@@ -95,11 +84,17 @@ _boxed_new (PyTypeObject *type,
             PyObject     *args,
             PyObject     *kwargs)
 {
+    static char *kwlist[] = { NULL };
+
     GIBaseInfo *info;
     gsize size = 0;
     gpointer boxed;
     PyGIBoxed *self = NULL;
 
+    if (!PyArg_ParseTupleAndKeywords (args, kwargs, "", kwlist)) {
+        return NULL;
+    }
+
     info = _pygi_object_get_gi_info ( (PyObject *) type, &PyGIBaseInfo_Type);
     if (info == NULL) {
         if (PyErr_ExceptionMatches (PyExc_AttributeError)) {
@@ -110,10 +105,11 @@ _boxed_new (PyTypeObject *type,
 
     boxed = _pygi_boxed_alloc (info, &size);
     if (boxed == NULL) {
+        PyErr_NoMemory();
         goto out;
     }
 
-    self = (PyGIBoxed *) _pygi_boxed_new (type, boxed, FALSE, size);
+    self = (PyGIBoxed *) _pygi_boxed_new (type, boxed, TRUE);
     if (self == NULL) {
         g_slice_free1 (size, boxed);
         goto out;
@@ -133,15 +129,6 @@ _boxed_init (PyObject *self,
              PyObject *args,
              PyObject *kwargs)
 {
-    static char *kwlist[] = { NULL };
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs, "", kwlist)) {
-        PyErr_Clear ();
-        PyErr_Warn (PyExc_TypeError,
-                "Passing arguments to gi.types.Boxed.__init__() is deprecated. "
-                "All arguments passed will be ignored.");
-    }
-
     /* Don't call PyGBoxed's init, which raises an exception. */
     return 0;
 }
@@ -149,95 +136,35 @@ _boxed_init (PyObject *self,
 PYGLIB_DEFINE_TYPE("gi.Boxed", PyGIBoxed_Type, PyGIBoxed);
 
 PyObject *
-_pygi_boxed_new (PyTypeObject *pytype,
+_pygi_boxed_new (PyTypeObject *type,
                  gpointer      boxed,
-                 gboolean      copy_boxed,
-                 gsize         allocated_slice)
+                 gboolean      free_on_dealloc)
 {
     PyGIBoxed *self;
-    GType gtype;
 
     if (!boxed) {
         Py_RETURN_NONE;
     }
 
-    if (!PyType_IsSubtype (pytype, &PyGIBoxed_Type)) {
+    if (!PyType_IsSubtype (type, &PyGIBoxed_Type)) {
         PyErr_SetString (PyExc_TypeError, "must be a subtype of gi.Boxed");
         return NULL;
     }
 
-    gtype = pyg_type_from_object ((PyObject *)pytype);
-
-    /* Boxed objects with slice allocation means they come from caller allocated
-     * out arguments. In this case copy_boxed does not make sense because we
-     * already own the slice allocated memory and we should be receiving full
-     * ownership transfer. */
-    if (copy_boxed) {
-        g_assert (allocated_slice == 0);
-        boxed = g_boxed_copy (gtype, boxed);
-    }
-
-    self = (PyGIBoxed *) pytype->tp_alloc (pytype, 0);
+    self = (PyGIBoxed *) type->tp_alloc (type, 0);
     if (self == NULL) {
         return NULL;
     }
 
-    /* We always free on dealloc because we always own the memory due to:
-     *   1) copy_boxed == TRUE
-     *   2) allocated_slice > 0
-     *   3) otherwise the mode is assumed "transfer everything".
-     */
-    ((PyGBoxed *)self)->free_on_dealloc = TRUE;
-    ((PyGBoxed *)self)->gtype = gtype;
-    pyg_boxed_set_ptr (self, boxed);
-
-    if (allocated_slice > 0) {
-        self->size = allocated_slice;
-        self->slice_allocated = TRUE;
-    } else {
-        self->size = 0;
-        self->slice_allocated = FALSE;
-    }
+    ( (PyGBoxed *) self)->gtype = pyg_type_from_object ( (PyObject *) type);
+    ( (PyGBoxed *) self)->boxed = boxed;
+    ( (PyGBoxed *) self)->free_on_dealloc = free_on_dealloc;
+    self->size = 0;
+    self->slice_allocated = FALSE;
 
     return (PyObject *) self;
 }
 
-static PyObject *
-_pygi_boxed_get_free_on_dealloc(PyGIBoxed *self, void *closure)
-{
-  return PyBool_FromLong( ((PyGBoxed *)self)->free_on_dealloc );
-}
-
-/**
- * _pygi_boxed_copy_in_place:
- *
- * Replace the boxed pointer held by this wrapper with a boxed copy
- * freeing the previously held pointer (when free_on_dealloc is TRUE).
- * This can be used in cases where Python is passed a reference which
- * it does not own and the wrapper is held by the Python program
- * longer than the duration of a callback it was passed to.
- */
-void
-_pygi_boxed_copy_in_place (PyGIBoxed *self)
-{
-    PyGBoxed *pygboxed = (PyGBoxed *)self;
-    gpointer copy = g_boxed_copy (pygboxed->gtype, pyg_boxed_get_ptr (self));
-
-    boxed_del (self);
-    pyg_boxed_set_ptr (pygboxed, copy);
-    pygboxed->free_on_dealloc = TRUE;
-}
-
-static PyGetSetDef pygi_boxed_getsets[] = {
-    { "_free_on_dealloc", (getter)_pygi_boxed_get_free_on_dealloc, (setter)0 },
-    { NULL, 0, 0 }
-};
-
-static PyMethodDef boxed_methods[] = {
-    { "__del__", (PyCFunction)boxed_del, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
-
 void
 _pygi_boxed_register_types (PyObject *m)
 {
@@ -247,8 +174,6 @@ _pygi_boxed_register_types (PyObject *m)
     PyGIBoxed_Type.tp_init = (initproc) _boxed_init;
     PyGIBoxed_Type.tp_dealloc = (destructor) _boxed_dealloc;
     PyGIBoxed_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
-    PyGIBoxed_Type.tp_getset = pygi_boxed_getsets;
-    PyGIBoxed_Type.tp_methods = boxed_methods;
 
     if (PyType_Ready (&PyGIBoxed_Type))
         return;
index 8679322..a84ec4e 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_BOXED_H__
 #define __PYGI_BOXED_H__
 
 #include <Python.h>
-#include <girepository.h>
-#include "pygobject-internal.h"
 
 G_BEGIN_DECLS
 
-typedef struct {
-    PyGBoxed base;
-    gboolean slice_allocated;
-    gsize size;
-} PyGIBoxed;
-
 extern PyTypeObject PyGIBoxed_Type;
 
-PyObject * _pygi_boxed_new (PyTypeObject *pytype,
+PyObject * _pygi_boxed_new (PyTypeObject *type,
                             gpointer      boxed,
-                            gboolean      copy_boxed,
-                            gsize         allocated_slice);
+                            gboolean      free_on_dealloc);
 
 void * _pygi_boxed_alloc (GIBaseInfo *info,
                           gsize *size);
 
-void _pygi_boxed_copy_in_place  (PyGIBoxed *self);
-
 void _pygi_boxed_register_types (PyObject *m);
 
 G_END_DECLS
index 82a6182..610e35b 100644 (file)
@@ -2,7 +2,6 @@
  * vim: tabstop=4 shiftwidth=4 expandtab
  *
  * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include <Python.h>
-#include <girepository.h>
-
-#include "pyglib.h"
-#include "pygtype.h"
 #include "pygi-info.h"
 #include "pygi-cache.h"
+#include "pygi-marshal-to-py.h"
+#include "pygi-marshal-from-py.h"
 #include "pygi-marshal-cleanup.h"
 #include "pygi-type.h"
-#include "pygi-hashtable.h"
-#include "pygi-basictype.h"
-#include "pygi-list.h"
-#include "pygi-array.h"
-#include "pygi-closure.h"
-#include "pygi-error.h"
-#include "pygi-object.h"
-#include "pygi-struct-marshal.h"
-#include "pygi-enum-marshal.h"
-#include "pygi-resulttuple.h"
-#include "pygi-invoke.h"
-
-
-/* _arg_info_default_value
- * info:
- * arg: (out): GIArgument to fill in with default value.
- *
- * This is currently a place holder API which only supports "allow-none" pointer args.
- * Once defaults are part of the GI API, we can replace this with: g_arg_info_default_value
- * https://bugzilla.gnome.org/show_bug.cgi?id=558620
- *
- * Returns: TRUE if the given argument supports a default value and was filled in.
- */
-static gboolean
-_arg_info_default_value (GIArgInfo *info, GIArgument *arg)
-{
-    if (g_arg_info_may_be_null (info)) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-    return FALSE;
-}
-
-/* pygi_arg_base_setup:
- * arg_cache: argument cache to initialize
- * type_info: source for type related attributes to cache
- * arg_info: (allow-none): source for argument related attributes to cache
- * transfer: transfer mode to store in the argument cache
- * direction: marshaling direction to store in the cache
- *
- * Initializer for PyGIArgCache
- *
- * Returns: TRUE on success and FALSE on failure
- */
-gboolean
-pygi_arg_base_setup (PyGIArgCache *arg_cache,
-                     GITypeInfo   *type_info,
-                     GIArgInfo    *arg_info,  /* may be NULL for return arguments */
-                     GITransfer    transfer,
-                     PyGIDirection direction)
-{
-    arg_cache->direction = direction;
-    arg_cache->transfer = transfer;
-    arg_cache->py_arg_index = -1;
-    arg_cache->c_arg_index = -1;
-
-    if (type_info != NULL) {
-        arg_cache->is_pointer = g_type_info_is_pointer (type_info);
-        arg_cache->type_tag = g_type_info_get_tag (type_info);
-        g_base_info_ref ( (GIBaseInfo *) type_info);
-        arg_cache->type_info = type_info;
-    }
-
-    if (arg_info != NULL) {
-        if (!arg_cache->has_default) {
-            /* It is possible has_default was set somewhere else */
-            arg_cache->has_default = _arg_info_default_value (arg_info,
-                                                              &arg_cache->default_value);
-        }
-        arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
-        arg_cache->allow_none = g_arg_info_may_be_null (arg_info);
-
-        if (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE || arg_cache->type_tag == GI_TYPE_TAG_ARRAY)
-            arg_cache->is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
-        else
-            arg_cache->is_caller_allocates = FALSE;
-    }
-    return TRUE;
-}
+#include <girepository.h>
 
+PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,
+                               PyGICallableCache *callable_cache,
+                               GIArgInfo *arg_info,
+                               GITransfer transfer,
+                               PyGIDirection direction,
+                               gssize c_arg_index,
+                               gssize py_arg_index);
+
+PyGIArgCache * _arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
+                                             PyGICallableCache *callable_cache,
+                                             GIArgInfo *arg_info,
+                                             GITransfer transfer,
+                                             PyGIDirection direction,
+                                             gssize c_arg_index,
+                                             gssize py_arg_index);
+/* cleanup */
 void
-pygi_arg_cache_free (PyGIArgCache *cache)
+_pygi_arg_cache_free (PyGIArgCache *cache)
 {
     if (cache == NULL)
         return;
@@ -121,8 +57,6 @@ pygi_arg_cache_free (PyGIArgCache *cache)
         g_slice_free (PyGIArgCache, cache);
 }
 
-/* PyGIInterfaceCache */
-
 static void
 _interface_cache_free_func (PyGIInterfaceCache *cache)
 {
@@ -136,1050 +70,1432 @@ _interface_cache_free_func (PyGIInterfaceCache *cache)
     }
 }
 
-/* pygi_arg_interface_setup:
- * arg_cache: argument cache to initialize
- * type_info: source for type related attributes to cache
- * arg_info: (allow-none): source for argument related attributes to cache
- * transfer: transfer mode to store in the argument cache
- * direction: marshaling direction to store in the cache
- * iface_info: interface info to cache
- *
- * Initializer for PyGIInterfaceCache
- *
- * Returns: TRUE on success and FALSE on failure
- */
-gboolean
-pygi_arg_interface_setup (PyGIInterfaceCache *iface_cache,
-                          GITypeInfo         *type_info,
-                          GIArgInfo          *arg_info,    /* may be NULL for return arguments */
-                          GITransfer          transfer,
-                          PyGIDirection       direction,
-                          GIInterfaceInfo    *iface_info)
-{
-    if (!pygi_arg_base_setup ((PyGIArgCache *)iface_cache,
-                              type_info,
-                              arg_info,
-                              transfer,
-                              direction)) {
-        return FALSE;
+static void
+_hash_cache_free_func (PyGIHashCache *cache)
+{
+    if (cache != NULL) {
+        _pygi_arg_cache_free (cache->key_cache);
+        _pygi_arg_cache_free (cache->value_cache);
+        g_slice_free (PyGIHashCache, cache);
     }
+}
 
-    ( (PyGIArgCache *)iface_cache)->destroy_notify = (GDestroyNotify)_interface_cache_free_func;
+static void
+_sequence_cache_free_func (PyGISequenceCache *cache)
+{
+    if (cache != NULL) {
+        _pygi_arg_cache_free (cache->item_cache);
+        g_slice_free (PyGISequenceCache, cache);
+    }
+}
 
-    g_base_info_ref ( (GIBaseInfo *)iface_info);
-    iface_cache->interface_info = iface_info;
-    iface_cache->arg_cache.type_tag = GI_TYPE_TAG_INTERFACE;
-    iface_cache->type_name = _pygi_g_base_info_get_fullname (iface_info);
-    iface_cache->g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *)iface_info);
-    iface_cache->py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) iface_info);
+static void
+_callback_cache_free_func (PyGICallbackCache *cache)
+{
+    if (cache != NULL) {
+        if (cache->interface_info != NULL)
+            g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
 
-    if (iface_cache->py_type == NULL) {
-        return FALSE;
+        g_slice_free (PyGICallbackCache, cache);
     }
-
-    return TRUE;
 }
 
-PyGIArgCache *
-pygi_arg_interface_new_from_info (GITypeInfo         *type_info,
-                                  GIArgInfo          *arg_info,    /* may be NULL for return arguments */
-                                  GITransfer          transfer,
-                                  PyGIDirection       direction,
-                                  GIInterfaceInfo    *iface_info)
+void
+_pygi_callable_cache_free (PyGICallableCache *cache)
 {
-    PyGIInterfaceCache *ic;
+    gssize i;
 
-    ic = g_slice_new0 (PyGIInterfaceCache);
-    if (!pygi_arg_interface_setup (ic,
-                                   type_info,
-                                   arg_info,
-                                   transfer,
-                                   direction,
-                                   iface_info)) {
-        pygi_arg_cache_free ((PyGIArgCache *)ic);
-        return NULL;
+    if (cache == NULL)
+        return;
+
+    g_slist_free (cache->to_py_args);
+    g_slist_free (cache->arg_name_list);
+    g_hash_table_destroy (cache->arg_name_hash);
+
+    for (i = 0; i < cache->n_args; i++) {
+        PyGIArgCache *tmp = cache->args_cache[i];
+        _pygi_arg_cache_free (tmp);
     }
+    if (cache->return_cache != NULL)
+        _pygi_arg_cache_free (cache->return_cache);
 
-    return (PyGIArgCache *)ic;
+    g_slice_free1 (cache->n_args * sizeof (PyGIArgCache *), cache->args_cache);
+    g_slice_free (PyGICallableCache, cache);
 }
 
-/* PyGISequenceCache */
+/* cache generation */
 
-static void
-_sequence_cache_free_func (PyGISequenceCache *cache)
+static PyGIInterfaceCache *
+_interface_cache_new (GIInterfaceInfo *iface_info)
 {
-    if (cache != NULL) {
-        pygi_arg_cache_free (cache->item_cache);
-        g_slice_free (PyGISequenceCache, cache);
-    }
+    PyGIInterfaceCache *ic;
+
+    ic = g_slice_new0 (PyGIInterfaceCache);
+    ( (PyGIArgCache *)ic)->destroy_notify = (GDestroyNotify)_interface_cache_free_func;
+    ic->g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *)iface_info);
+    ic->py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) iface_info);
+
+    if (ic->py_type == NULL)
+        return NULL;
+
+    ic->type_name = _pygi_g_base_info_get_fullname (iface_info);
+    return ic;
 }
 
-/* pygi_arg_sequence_setup:
- * sc: sequence cache to initialize
- * type_info: source for type related attributes to cache
- * arg_info: (allow-none): source for argument related attributes to cache
- * transfer: transfer mode to store in the argument cache
- * direction: marshaling direction to store in the cache
- * iface_info: interface info to cache
- *
- * Initializer for PyGISequenceCache used for holding list and array argument
- * caches.
- *
- * Returns: TRUE on success and FALSE on failure
- */
-gboolean
-pygi_arg_sequence_setup (PyGISequenceCache  *sc,
-                         GITypeInfo         *type_info,
-                         GIArgInfo          *arg_info,    /* may be NULL for return arguments */
-                         GITransfer          transfer,
-                         PyGIDirection       direction,
-                         PyGICallableCache  *callable_cache)
+static PyGISequenceCache *
+_sequence_cache_new (GITypeInfo *type_info,
+                     GIDirection direction,
+                     GITransfer transfer,
+                     gssize child_offset)
 {
+    PyGISequenceCache *sc;
     GITypeInfo *item_type_info;
     GITransfer item_transfer;
 
-    if (!pygi_arg_base_setup ((PyGIArgCache *)sc,
-                              type_info,
-                              arg_info,
-                              transfer,
-                              direction)) {
-        return FALSE;
+    sc = g_slice_new0 (PyGISequenceCache);
+    ( (PyGIArgCache *)sc)->destroy_notify = (GDestroyNotify)_sequence_cache_free_func;
+
+    sc->fixed_size = -1;
+    sc->len_arg_index = -1;
+    sc->is_zero_terminated = g_type_info_is_zero_terminated (type_info);
+    if (!sc->is_zero_terminated) {
+        sc->fixed_size = g_type_info_get_array_fixed_size (type_info);
+        if (sc->fixed_size < 0)
+            sc->len_arg_index = g_type_info_get_array_length (type_info);
+            if (sc->len_arg_index >= 0)
+                sc->len_arg_index += child_offset;
     }
 
-    sc->arg_cache.destroy_notify = (GDestroyNotify)_sequence_cache_free_func;
     item_type_info = g_type_info_get_param_type (type_info, 0);
+
     item_transfer =
         transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
 
-    sc->item_cache = pygi_arg_cache_new (item_type_info,
-                                         NULL,
-                                         item_transfer,
-                                         direction,
-                                         callable_cache,
-                                         0, 0);
+    sc->item_cache = _arg_cache_new (item_type_info,
+                                     NULL,
+                                     NULL,
+                                     item_transfer,
+                                     direction,
+                                     0, 0);
+
+    if (sc->item_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)sc);
+        return NULL;
+    }
 
+    sc->item_size = _pygi_g_type_info_size (item_type_info);
     g_base_info_unref ( (GIBaseInfo *)item_type_info);
 
-    if (sc->item_cache == NULL) {
-        return FALSE;
+    return sc;
+}
+static PyGIHashCache *
+_hash_cache_new (GITypeInfo *type_info,
+                 GIDirection direction,
+                 GITransfer transfer)
+{
+    PyGIHashCache *hc;
+    GITypeInfo *key_type_info;
+    GITypeInfo *value_type_info;
+    GITransfer item_transfer;
+
+    hc = g_slice_new0 (PyGIHashCache);
+    ( (PyGIArgCache *)hc)->destroy_notify = (GDestroyNotify)_hash_cache_free_func;
+    key_type_info = g_type_info_get_param_type (type_info, 0);
+    value_type_info = g_type_info_get_param_type (type_info, 1);
+
+    item_transfer =
+        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
+
+    hc->key_cache = _arg_cache_new (key_type_info,
+                                    NULL,
+                                    NULL,
+                                    item_transfer,
+                                    direction,
+                                    0, 0);
+
+    if (hc->key_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)hc);
+        return NULL;
     }
 
-    return TRUE;
+    hc->value_cache = _arg_cache_new (value_type_info,
+                                      NULL,
+                                      NULL,
+                                      item_transfer,
+                                      direction,
+                                      0, 0);
+
+    if (hc->value_cache == NULL) {
+        _pygi_arg_cache_free ( (PyGIArgCache *)hc);
+        return NULL;
+    }
+
+    g_base_info_unref( (GIBaseInfo *)key_type_info);
+    g_base_info_unref( (GIBaseInfo *)value_type_info);
+
+    return hc;
 }
 
-PyGIArgCache *
-pygi_arg_cache_alloc (void)
+static PyGICallbackCache *
+_callback_cache_new (GIArgInfo *arg_info,
+                     GIInterfaceInfo *iface_info,
+                     gssize child_offset)
 {
-    return g_slice_new0 (PyGIArgCache);
+   PyGICallbackCache *cc;
+
+   cc = g_slice_new0 (PyGICallbackCache);
+   ( (PyGIArgCache *)cc)->destroy_notify = (GDestroyNotify)_callback_cache_free_func;
+
+   cc->user_data_index = g_arg_info_get_closure (arg_info);
+   if (cc->user_data_index != -1)
+       cc->user_data_index += child_offset;
+   cc->destroy_notify_index = g_arg_info_get_destroy (arg_info);
+   if (cc->destroy_notify_index != -1)
+       cc->destroy_notify_index += child_offset;
+   cc->scope = g_arg_info_get_scope (arg_info);
+   g_base_info_ref( (GIBaseInfo *)iface_info);
+   cc->interface_info = iface_info;
+   return cc;
 }
 
 static PyGIArgCache *
-_arg_cache_new_for_interface (GIInterfaceInfo   *iface_info,
-                              GITypeInfo        *type_info,
-                              GIArgInfo         *arg_info,
-                              GITransfer         transfer,
-                              PyGIDirection      direction,
-                              PyGICallableCache *callable_cache)
+_arg_cache_alloc (void)
 {
-    GIInfoType info_type;
+    return g_slice_new0 (PyGIArgCache);
+}
 
-    info_type = g_base_info_get_type ( (GIBaseInfo *)iface_info);
+static void
+_arg_cache_from_py_void_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_void;
+}
 
-    switch (info_type) {
-        case GI_INFO_TYPE_CALLBACK:
-            return pygi_arg_callback_new_from_info (type_info,
-                                                    arg_info,
-                                                    transfer,
-                                                    direction,
-                                                    iface_info,
-                                                    callable_cache);
-        case GI_INFO_TYPE_OBJECT:
-        case GI_INFO_TYPE_INTERFACE:
-            return pygi_arg_gobject_new_from_info (type_info,
-                                                   arg_info,
-                                                   transfer,
-                                                   direction,
-                                                   iface_info,
-                                                   callable_cache);
-        case GI_INFO_TYPE_BOXED:
-        case GI_INFO_TYPE_STRUCT:
-        case GI_INFO_TYPE_UNION:
-            return pygi_arg_struct_new_from_info (type_info,
-                                                  arg_info,
-                                                  transfer,
-                                                  direction,
-                                                  iface_info);
-        case GI_INFO_TYPE_ENUM:
-            return pygi_arg_enum_new_from_info (type_info,
-                                                arg_info,
-                                                transfer,
-                                                direction,
-                                                iface_info);
-        case GI_INFO_TYPE_FLAGS:
-            return pygi_arg_flags_new_from_info (type_info,
-                                                 arg_info,
-                                                 transfer,
-                                                 direction,
-                                                 iface_info);
-        default:
-            g_assert_not_reached ();
-    }
+static void
+_arg_cache_to_py_void_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_void;
+}
 
-    return NULL;
+static void
+_arg_cache_from_py_boolean_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_boolean;
 }
 
-PyGIArgCache *
-pygi_arg_cache_new (GITypeInfo *type_info,
-                    GIArgInfo *arg_info,     /* may be null */
-                    GITransfer transfer,
-                    PyGIDirection direction,
-                    PyGICallableCache *callable_cache,
-                    gssize c_arg_index,
-                    gssize py_arg_index)
+static void
+_arg_cache_to_py_boolean_setup (PyGIArgCache *arg_cache)
 {
-    PyGIArgCache *arg_cache = NULL;
-    GITypeTag type_tag;
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_boolean;
+}
 
-    type_tag = g_type_info_get_tag (type_info);
+static void
+_arg_cache_from_py_int8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int8;
+}
 
-    switch (type_tag) {
-       case GI_TYPE_TAG_VOID:
-       case GI_TYPE_TAG_BOOLEAN:
-       case GI_TYPE_TAG_INT8:
-       case GI_TYPE_TAG_UINT8:
-       case GI_TYPE_TAG_INT16:
-       case GI_TYPE_TAG_UINT16:
-       case GI_TYPE_TAG_INT32:
-       case GI_TYPE_TAG_UINT32:
-       case GI_TYPE_TAG_INT64:
-       case GI_TYPE_TAG_UINT64:
-       case GI_TYPE_TAG_FLOAT:
-       case GI_TYPE_TAG_DOUBLE:
-       case GI_TYPE_TAG_UNICHAR:
-       case GI_TYPE_TAG_GTYPE:
-       case GI_TYPE_TAG_UTF8:
-       case GI_TYPE_TAG_FILENAME:
-           arg_cache = pygi_arg_basic_type_new_from_info (type_info,
-                                                          arg_info,
-                                                          transfer,
-                                                          direction);
-           break;
+static void
+_arg_cache_to_py_int8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int8;
+}
 
-       case GI_TYPE_TAG_ARRAY:
-           {
-               arg_cache = pygi_arg_garray_new_from_info (type_info,
-                                                          arg_info,
-                                                          transfer,
-                                                          direction,
-                                                          callable_cache);
-               if (arg_cache == NULL)
-                   return NULL;
-
-               pygi_arg_garray_len_arg_setup (arg_cache,
-                                              type_info,
-                                              callable_cache,
-                                              direction,
-                                              c_arg_index,
-                                              &py_arg_index);
-           }
-           break;
+static void
+_arg_cache_from_py_uint8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint8;
+}
 
-       case GI_TYPE_TAG_GLIST:
-           arg_cache = pygi_arg_glist_new_from_info (type_info,
-                                                     arg_info,
-                                                     transfer,
-                                                     direction,
-                                                     callable_cache);
-           break;
+static void
+_arg_cache_to_py_uint8_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint8;
+}
 
-       case GI_TYPE_TAG_GSLIST:
-           arg_cache = pygi_arg_gslist_new_from_info (type_info,
-                                                      arg_info,
-                                                      transfer,
-                                                      direction,
-                                                      callable_cache);
-           break;
+static void
+_arg_cache_from_py_int16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int16;
+}
 
-       case GI_TYPE_TAG_GHASH:
-           arg_cache = pygi_arg_hash_table_new_from_info (type_info,
-                                                          arg_info,
-                                                          transfer,
-                                                          direction,
-                                                          callable_cache);
-           break;
+static void
+_arg_cache_to_py_int16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int16;
+}
 
-       case GI_TYPE_TAG_INTERFACE:
-           {
-               GIInterfaceInfo *interface_info = g_type_info_get_interface (type_info);
-               arg_cache = _arg_cache_new_for_interface (interface_info,
-                                                         type_info,
-                                                         arg_info,
-                                                         transfer,
-                                                         direction,
-                                                         callable_cache);
+static void
+_arg_cache_from_py_uint16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint16;
+}
 
-               g_base_info_unref ( (GIBaseInfo *)interface_info);
-           }
-           break;
+static void
+_arg_cache_to_py_uint16_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint16;
+}
 
-       case GI_TYPE_TAG_ERROR:
-           arg_cache = pygi_arg_gerror_new_from_info (type_info,
-                                                      arg_info,
-                                                      transfer,
-                                                      direction);
-           break;
-       default:
-           break;
+static void
+_arg_cache_from_py_int32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int32;
+}
+
+static void
+_arg_cache_to_py_int32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int32;
+}
+
+static void
+_arg_cache_from_py_uint32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint32;
+}
+
+static void
+_arg_cache_to_py_uint32_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint32;
+}
+
+static void
+_arg_cache_from_py_int64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_int64;
+}
+
+static void
+_arg_cache_to_py_int64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_int64;
+}
+
+static void
+_arg_cache_from_py_uint64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_uint64;
+}
+
+static void
+_arg_cache_to_py_uint64_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_uint64;
+}
+
+static void
+_arg_cache_from_py_float_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_float;
+}
+
+static void
+_arg_cache_to_py_float_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_float;
+}
+
+static void
+_arg_cache_from_py_double_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_double;
+}
+
+static void
+_arg_cache_to_py_double_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_double;
+}
+
+static void
+_arg_cache_from_py_unichar_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_unichar;
+}
+
+static void
+_arg_cache_to_py_unichar_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_unichar;
+}
+
+static void
+_arg_cache_from_py_gtype_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gtype;
+}
+
+static void
+_arg_cache_to_py_gtype_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gtype;
+}
+
+static void
+_arg_cache_from_py_utf8_setup (PyGIArgCache *arg_cache,
+                               GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_utf8;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
+}
+
+static void
+_arg_cache_to_py_utf8_setup (PyGIArgCache *arg_cache,
+                               GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_utf8;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
+}
+
+static void
+_arg_cache_from_py_filename_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_filename;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
+}
+
+static void
+_arg_cache_to_py_filename_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_filename;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
+}
+
+static gboolean
+_arg_cache_from_py_array_setup (PyGIArgCache *arg_cache,
+                                PyGICallableCache *callable_cache,
+                                GITypeInfo *type_info,
+                                GITransfer transfer,
+                                PyGIDirection direction,
+                                gssize arg_index)
+{
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    seq_cache->array_type = g_type_info_get_array_type (type_info);
+
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_array;
+
+    if (seq_cache->len_arg_index >= 0) {
+        PyGIArgCache *child_cache = 
+            callable_cache->args_cache[seq_cache->len_arg_index];
+
+        if (child_cache == NULL) {
+            child_cache = _arg_cache_alloc ();
+        } else if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD ||
+                   child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE) {
+            return TRUE;
+        }
+
+        if (seq_cache->len_arg_index < arg_index)
+            child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE;
+        else
+            child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+
+        child_cache->direction = direction;
+        child_cache->to_py_marshaller = NULL;
+        child_cache->from_py_marshaller = NULL;
+
+        callable_cache->args_cache[seq_cache->len_arg_index] = child_cache;
     }
 
-    if (arg_cache != NULL) {
-        arg_cache->py_arg_index = py_arg_index;
-        arg_cache->c_arg_index = c_arg_index;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_array;
+
+    return TRUE;
+}
+
+static gboolean
+_arg_cache_to_py_array_setup (PyGIArgCache *arg_cache,
+                              PyGICallableCache *callable_cache,
+                              GITypeInfo *type_info,
+                              GITransfer transfer,
+                              PyGIDirection direction,
+                              gssize arg_index)
+{
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_array;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_array;
+
+    seq_cache->array_type = g_type_info_get_array_type (type_info);
+
+    if (seq_cache->len_arg_index >= 0) {
+        PyGIArgCache *child_cache = callable_cache->args_cache[seq_cache->len_arg_index];
+        if (seq_cache->len_arg_index < arg_index)
+             callable_cache->n_to_py_child_args++;
+
+        if (child_cache != NULL) {
+            callable_cache->to_py_args =
+                g_slist_remove (callable_cache->to_py_args, child_cache);
+
+            if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD ||
+                child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE)
+                return TRUE;
+        } else {
+            child_cache = _arg_cache_alloc ();
+        }
+
+        child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+        child_cache->direction = direction;
+        child_cache->to_py_marshaller = NULL;
+        child_cache->from_py_marshaller = NULL;
+
+        callable_cache->args_cache[seq_cache->len_arg_index] = child_cache;
     }
 
-    return arg_cache;
+    return TRUE;
 }
 
-/* PyGICallableCache */
+static void
+_arg_cache_from_py_glist_setup (PyGIArgCache *arg_cache,
+                                GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_glist;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
 
-static PyGIDirection
-_pygi_get_direction (PyGICallableCache *callable_cache, GIDirection gi_direction)
+static void
+_arg_cache_to_py_glist_setup (PyGIArgCache *arg_cache,
+                              GITransfer transfer)
 {
-    /* For vfuncs and callbacks our marshalling directions are reversed */
-    if (gi_direction == GI_DIRECTION_INOUT) {
-        return PYGI_DIRECTION_BIDIRECTIONAL;
-    } else if (gi_direction == GI_DIRECTION_IN) {
-        if (callable_cache->calling_context != PYGI_CALLING_CONTEXT_IS_FROM_PY)
-            return PYGI_DIRECTION_TO_PYTHON;
-        return PYGI_DIRECTION_FROM_PYTHON;
-    } else {
-        if (callable_cache->calling_context != PYGI_CALLING_CONTEXT_IS_FROM_PY)
-            return PYGI_DIRECTION_FROM_PYTHON;
-        return PYGI_DIRECTION_TO_PYTHON;
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_glist;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+static void
+_arg_cache_from_py_gslist_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gslist;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
+
+static void
+_arg_cache_to_py_gslist_setup (PyGIArgCache *arg_cache,
+                                 GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gslist;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+static void
+_arg_cache_from_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_ghash;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_ghash;
+}
+
+static void
+_arg_cache_to_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_ghash;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_ghash;
+}
+
+static void
+_arg_cache_from_py_gerror_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gerror;
+    arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+}
+
+static void
+_arg_cache_to_py_gerror_setup (PyGIArgCache *arg_cache)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gerror;
+    arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+}
+
+static void
+_arg_cache_from_py_interface_union_setup (PyGIArgCache *arg_cache,
+                                          GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct;
+}
+
+static void
+_arg_cache_to_py_interface_union_setup (PyGIArgCache *arg_cache,
+                                        GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct;
+}
+
+static void
+_arg_cache_from_py_interface_struct_setup (PyGIArgCache *arg_cache,
+                                           GIInterfaceInfo *iface_info,
+                                           GITransfer transfer)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct;
+
+    if (iface_cache->g_type == G_TYPE_VALUE)
+        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_gvalue;
+    else if (iface_cache->is_foreign)
+        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_foreign;
+}
+
+static void
+_arg_cache_to_py_interface_struct_setup (PyGIArgCache *arg_cache,
+                                         GIInterfaceInfo *iface_info,
+                                         GITransfer transfer)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct;
+
+    if (iface_cache->is_foreign)
+        arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_struct_foreign;
+}
+
+static void
+_arg_cache_from_py_interface_object_setup (PyGIArgCache *arg_cache,
+                                           GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_object;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_object;
+}
+
+static void
+_arg_cache_to_py_interface_object_setup (PyGIArgCache *arg_cache,
+                                         GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_object;
+    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_object;
+}
+
+static void
+_arg_cache_from_py_interface_callback_setup (PyGIArgCache *arg_cache,
+                                             PyGICallableCache *callable_cache)
+{
+    PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
+    if (callback_cache->user_data_index >= 0) {
+        PyGIArgCache *user_data_arg_cache = _arg_cache_alloc ();
+        user_data_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_WITH_PYARG;
+        user_data_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+        callable_cache->args_cache[callback_cache->user_data_index] = user_data_arg_cache;
+    }
+
+    if (callback_cache->destroy_notify_index >= 0) {
+        PyGIArgCache *destroy_arg_cache = _arg_cache_alloc ();
+        destroy_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+        destroy_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+        callable_cache->args_cache[callback_cache->destroy_notify_index] = destroy_arg_cache;
     }
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_callback;
 }
 
-/* Generate the cache for the callable's arguments */
-static gboolean
-_callable_cache_generate_args_cache_real (PyGICallableCache *callable_cache,
-                                          GICallableInfo *callable_info)
+static void
+_arg_cache_to_py_interface_callback_setup (void)
 {
-    gssize i;
-    gssize arg_index;
-    GITypeInfo *return_info;
-    GITransfer return_transfer;
-    PyGIArgCache *return_cache;
-    PyGIDirection return_direction;
-       gssize last_explicit_arg_index;
-    PyObject *tuple_names;
-    GSList *arg_cache_item;
-    PyTypeObject* resulttuple_type;
+    PyErr_Format(PyExc_NotImplementedError,
+                 "Callback returns are not supported");
+}
 
-    /* Return arguments are always considered out */
-    return_direction = _pygi_get_direction (callable_cache, GI_DIRECTION_OUT);
+static void
+_arg_cache_from_py_interface_enum_setup (PyGIArgCache *arg_cache,
+                                         GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_enum;
+}
 
-    /* cache the return arg */
-    return_info =
-        g_callable_info_get_return_type (callable_info);
-    return_transfer =
-        g_callable_info_get_caller_owns (callable_info);
-    return_cache =
-        pygi_arg_cache_new (return_info,
-                            NULL,
-                            return_transfer,
-                            return_direction,
-                            callable_cache,
-                            -1,
-                            -1);
-    if (return_cache == NULL)
-        return FALSE;
+static void
+_arg_cache_to_py_interface_enum_setup (PyGIArgCache *arg_cache,
+                                       GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_enum;
+}
 
-    return_cache->is_skipped = g_callable_info_skip_return (callable_info);
-    callable_cache->return_cache = return_cache;
-    g_base_info_unref (return_info);
+static void
+_arg_cache_from_py_interface_flags_setup (PyGIArgCache *arg_cache,
+                                          GITransfer transfer)
+{
+    arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_flags;
+}
 
-    callable_cache->user_data_index = -1;
+static void
+_arg_cache_to_py_interface_flags_setup (PyGIArgCache *arg_cache,
+                                        GITransfer transfer)
+{
+    arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_flags;
+}
 
-    for (i = 0, arg_index = callable_cache->args_offset;
-         (gsize)arg_index < _pygi_callable_cache_args_len (callable_cache);
-         i++, arg_index++) {
-        PyGIArgCache *arg_cache = NULL;
-        GIArgInfo *arg_info;
-        PyGIDirection direction;
+PyGIArgCache *
+_arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
+                              PyGICallableCache *callable_cache,
+                              GIArgInfo *arg_info,
+                              GITransfer transfer,
+                              PyGIDirection direction,
+                              gssize c_arg_index,
+                              gssize py_arg_index)
+{
+    PyGIInterfaceCache *iface_cache = NULL;
+    PyGIArgCache *arg_cache = NULL;
+    gssize child_offset = 0;
+    GIInfoType info_type;
 
-        arg_info = g_callable_info_get_arg (callable_info, i);
+    if (callable_cache != NULL)
+        child_offset =
+            (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+                 callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
 
-        /* This only happens when dealing with callbacks */
-        if (g_arg_info_get_closure (arg_info) == i) {
-            callable_cache->user_data_index = i;
+    info_type = g_base_info_get_type ( (GIBaseInfo *)iface_info);
 
-            arg_cache = pygi_arg_cache_alloc ();
-            _pygi_callable_cache_set_arg (callable_cache, arg_index, arg_cache);
+    /* Callbacks are special cased */
+    if (info_type != GI_INFO_TYPE_CALLBACK) {
+        iface_cache = _interface_cache_new (iface_info);
 
-            direction = _pygi_get_direction (callable_cache, GI_DIRECTION_IN);
-            arg_cache->direction = direction;
-            arg_cache->meta_type = PYGI_META_ARG_TYPE_CLOSURE;
-            arg_cache->c_arg_index = i;
-            arg_cache->is_pointer = TRUE;
+        arg_cache = (PyGIArgCache *)iface_cache;
+        if (arg_cache == NULL)
+            return NULL;
+    }
 
-        } else {
-            GITypeInfo *type_info;
-
-            direction = _pygi_get_direction (callable_cache,
-                                             g_arg_info_get_direction (arg_info));
-            type_info = g_arg_info_get_type (arg_info);
-
-            /* must be an child arg filled in by its owner
-             * and continue
-             * fill in it's c_arg_index, add to the in count
-             */
-            arg_cache = _pygi_callable_cache_get_arg (callable_cache, arg_index);
-            if (arg_cache != NULL) {
-                /* ensure c_arg_index always aligns with callable_cache->args_cache
-                 * and all of the various PyGIInvokeState arrays. */
-                arg_cache->c_arg_index = arg_index;
-
-                if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_WITH_PYARG) {
-                    arg_cache->py_arg_index = callable_cache->n_py_args;
-                    callable_cache->n_py_args++;
+    switch (info_type) {
+        case GI_INFO_TYPE_UNION:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_union_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_union_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_STRUCT:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_struct_setup (arg_cache,
+                                                          iface_info,
+                                                          transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_struct_setup (arg_cache,
+                                                        iface_info,
+                                                        transfer);
+            break;
+        case GI_INFO_TYPE_OBJECT:
+        case GI_INFO_TYPE_INTERFACE:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_object_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_object_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_BOXED:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                _arg_cache_from_py_interface_struct_setup (arg_cache,
+                                                       iface_info,
+                                                       transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                _arg_cache_to_py_interface_struct_setup (arg_cache,
+                                                      iface_info,
+                                                      transfer);
+            break;
+        case GI_INFO_TYPE_CALLBACK:
+            {
+                PyGICallbackCache *callback_cache;
+
+                if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                    _arg_cache_to_py_interface_callback_setup ();
+                    return NULL;
                 }
 
-                if (direction & PYGI_DIRECTION_TO_PYTHON) {
-                    callable_cache->n_to_py_args++;
-                }
+                callback_cache =
+                    _callback_cache_new (arg_info,
+                                         iface_info,
+                                         child_offset);
+
+                arg_cache = (PyGIArgCache *)callback_cache;
+                if (arg_cache == NULL)
+                    return NULL;
+
+                if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                    _arg_cache_from_py_interface_callback_setup (arg_cache, callable_cache);
+
+                break;
+            }
+        case GI_INFO_TYPE_ENUM:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_enum_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_enum_setup (arg_cache, transfer);
+
+            break;
+        case GI_INFO_TYPE_FLAGS:
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_interface_flags_setup (arg_cache, transfer);
+
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_interface_flags_setup (arg_cache, transfer);
+
+            break;
+        default:
+            g_assert_not_reached ();
+    }
+
+    if (arg_cache != NULL) {
+        arg_cache->direction = direction;
+        arg_cache->transfer = transfer;
+        arg_cache->type_tag = GI_TYPE_TAG_INTERFACE;
+        arg_cache->py_arg_index = py_arg_index;
+        arg_cache->c_arg_index = c_arg_index;
+
+        if (iface_cache != NULL) {
+            g_base_info_ref ( (GIBaseInfo *)iface_info);
+            iface_cache->interface_info = iface_info;
+        }
+    }
+
+    return arg_cache;
+}
+
+PyGIArgCache *
+_arg_cache_new (GITypeInfo *type_info,
+                PyGICallableCache *callable_cache,
+                GIArgInfo *arg_info,
+                GITransfer transfer,
+                PyGIDirection direction,
+                gssize c_arg_index,
+                gssize py_arg_index)
+{
+    PyGIArgCache *arg_cache = NULL;
+    gssize child_offset = 0;
+    GITypeTag type_tag;
+
+    type_tag = g_type_info_get_tag (type_info);
+
+    if (callable_cache != NULL)
+        child_offset =
+            (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+                callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
+
+    switch (type_tag) {
+       case GI_TYPE_TAG_VOID:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_void_setup (arg_cache);
+
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_void_setup (arg_cache);
+
+           break;
+       case GI_TYPE_TAG_BOOLEAN:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
+
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_boolean_setup (arg_cache);
 
-                arg_cache->type_tag = g_type_info_get_tag (type_info);
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_boolean_setup (arg_cache);
 
-            } else {
-                GITransfer transfer;
-                gssize py_arg_index = -1;
+           break;
+       case GI_TYPE_TAG_INT8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-                transfer = g_arg_info_get_ownership_transfer (arg_info);
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int8_setup (arg_cache);
 
-                if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-                    py_arg_index = callable_cache->n_py_args;
-                    callable_cache->n_py_args++;
-                }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int8_setup (arg_cache);
 
-                arg_cache =
-                    pygi_arg_cache_new (type_info,
-                                        arg_info,
-                                        transfer,
-                                        direction,
-                                        callable_cache,
-                                        arg_index,
-                                        py_arg_index);
-
-                if (arg_cache == NULL) {
-                    g_base_info_unref( (GIBaseInfo *)type_info);
-                    g_base_info_unref( (GIBaseInfo *)arg_info);
-                    return FALSE;
-                }
+           break;
+       case GI_TYPE_TAG_UINT8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint8_setup (arg_cache);
 
-                if (direction & PYGI_DIRECTION_TO_PYTHON) {
-                    callable_cache->n_to_py_args++;
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint8_setup (arg_cache);
 
-                    callable_cache->to_py_args =
-                        g_slist_append (callable_cache->to_py_args, arg_cache);
-                }
+           break;
+       case GI_TYPE_TAG_INT16:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-                _pygi_callable_cache_set_arg (callable_cache, arg_index, arg_cache);
-            }
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int16_setup (arg_cache);
 
-            g_base_info_unref (type_info);
-        }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int16_setup (arg_cache);
 
-        /* Ensure arguments always have a name when available */
-        arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+           break;
+       case GI_TYPE_TAG_UINT16:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-        g_base_info_unref ( (GIBaseInfo *)arg_info);
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint16_setup (arg_cache);
 
-    }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint16_setup (arg_cache);
+           break;
+       case GI_TYPE_TAG_INT32:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    if (callable_cache->arg_name_hash == NULL) {
-        callable_cache->arg_name_hash = g_hash_table_new (g_str_hash, g_str_equal);
-    } else {
-        g_hash_table_remove_all (callable_cache->arg_name_hash);
-    }
-    callable_cache->n_py_required_args = 0;
-    callable_cache->user_data_varargs_index = -1;
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int32_setup (arg_cache);
 
-    last_explicit_arg_index = -1;
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int32_setup (arg_cache);
 
-    /* Reverse loop through all the arguments to setup arg_name_list/hash
-     * and find the number of required arguments */
-    for (i=((gssize)_pygi_callable_cache_args_len (callable_cache))-1; i >= 0; i--) {
-        PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (callable_cache, i);
+           break;
+       case GI_TYPE_TAG_UINT32:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-        if (arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD &&
-                arg_cache->meta_type != PYGI_META_ARG_TYPE_CLOSURE &&
-                arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint32_setup (arg_cache);
 
-            /* Setup arg_name_list and arg_name_hash */
-            gpointer arg_name = (gpointer)arg_cache->arg_name;
-            callable_cache->arg_name_list = g_slist_prepend (callable_cache->arg_name_list,
-                                                             arg_name);
-            if (arg_name != NULL) {
-                g_hash_table_insert (callable_cache->arg_name_hash,
-                                     arg_name,
-                                     GINT_TO_POINTER(i));
-            }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint32_setup (arg_cache);
 
-            /* The first tail argument without a default will force all the preceding
-             * argument defaults off. This limits support of default args to the
-             * tail of an args list.
-             */
-            if (callable_cache->n_py_required_args > 0) {
-                arg_cache->has_default = FALSE;
-                callable_cache->n_py_required_args += 1;
-            } else if (!arg_cache->has_default) {
-                callable_cache->n_py_required_args += 1;
-            }
+           break;
+       case GI_TYPE_TAG_INT64:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-            if (last_explicit_arg_index == -1) {
-                last_explicit_arg_index = i;
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_int64_setup (arg_cache);
 
-                /* If the last "from python" argument in the args list is a child
-                 * with pyarg (currently only callback user_data). Set it to eat
-                 * variable args in the callable cache.
-                 */
-                if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_WITH_PYARG)
-                    callable_cache->user_data_varargs_index = i;
-            }
-        }
-    }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_int64_setup (arg_cache);
 
-    if (!return_cache->is_skipped && return_cache->type_tag != GI_TYPE_TAG_VOID) {
-        callable_cache->has_return = TRUE;
-    }
+           break;
+       case GI_TYPE_TAG_UINT64:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    tuple_names = PyList_New (0);
-    if (callable_cache->has_return) {
-        PyList_Append (tuple_names, Py_None);
-    }
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_uint64_setup (arg_cache);
 
-    arg_cache_item = callable_cache->to_py_args;
-    while (arg_cache_item) {
-        const gchar *arg_name = ((PyGIArgCache *)arg_cache_item->data)->arg_name;
-        PyObject *arg_string = PYGLIB_PyUnicode_FromString (arg_name);
-        PyList_Append (tuple_names, arg_string);
-        Py_DECREF (arg_string);
-        arg_cache_item = arg_cache_item->next;
-    }
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_uint64_setup (arg_cache);
 
-    /* No need to create a tuple type if there aren't multiple values */
-    if (PyList_Size (tuple_names) > 1) {
-        resulttuple_type = pygi_resulttuple_new_type (tuple_names);
-        if (resulttuple_type == NULL) {
-            Py_DECREF (tuple_names);
-            return FALSE;
-        } else {
-            callable_cache->resulttuple_type = resulttuple_type;
-        }
-    }
-    Py_DECREF (tuple_names);
+           break;
+       case GI_TYPE_TAG_FLOAT:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    return TRUE;
-}
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_float_setup (arg_cache);
 
-static void
-_callable_cache_deinit_real (PyGICallableCache *cache)
-{
-    g_clear_pointer (&cache->to_py_args, g_slist_free);
-    g_clear_pointer (&cache->arg_name_list, g_slist_free);
-    g_clear_pointer (&cache->arg_name_hash, g_hash_table_unref);
-    g_clear_pointer (&cache->args_cache, g_ptr_array_unref);
-    Py_CLEAR (cache->resulttuple_type);
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_float_setup (arg_cache);
 
-    g_clear_pointer (&cache->return_cache, pygi_arg_cache_free);
-}
+           break;
+       case GI_TYPE_TAG_DOUBLE:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-static gboolean
-_callable_cache_init (PyGICallableCache *cache,
-                      GICallableInfo *callable_info)
-{
-    gint n_args;
-    GIBaseInfo *container;
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_double_setup (arg_cache);
 
-    if (cache->deinit == NULL)
-        cache->deinit = _callable_cache_deinit_real;
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_double_setup (arg_cache);
 
-    if (cache->generate_args_cache == NULL)
-        cache->generate_args_cache = _callable_cache_generate_args_cache_real;
+           break;
+       case GI_TYPE_TAG_UNICHAR:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    cache->name = g_base_info_get_name ((GIBaseInfo *) callable_info);
-    cache->namespace = g_base_info_get_namespace ((GIBaseInfo *) callable_info);
-    container = g_base_info_get_container ((GIBaseInfo *) callable_info);
-    cache->container_name = NULL;
-    /* https://bugzilla.gnome.org/show_bug.cgi?id=709456 */
-    if (container != NULL && g_base_info_get_type (container) != GI_INFO_TYPE_TYPE) {
-        cache->container_name = g_base_info_get_name (container);
-    }
-    cache->throws = g_callable_info_can_throw_gerror ((GIBaseInfo *) callable_info);
-
-    if (g_base_info_is_deprecated (callable_info)) {
-        const gchar *deprecated = g_base_info_get_attribute (callable_info, "deprecated");
-        gchar *warning;
-        gchar *full_name = pygi_callable_cache_get_full_name (cache);
-        if (deprecated != NULL)
-            warning = g_strdup_printf ("%s is deprecated: %s",
-                                       full_name,
-                                       deprecated);
-        else
-            warning = g_strdup_printf ("%s is deprecated",
-                                       full_name);
-        g_free (full_name);
-        PyErr_WarnEx (PyExc_DeprecationWarning, warning, 0);
-        g_free (warning);
-    }
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_unichar_setup (arg_cache);
 
-    n_args = cache->args_offset + g_callable_info_get_n_args (callable_info);
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_unichar_setup (arg_cache);
 
-    if (n_args >= 0) {
-        cache->args_cache = g_ptr_array_new_full (n_args, (GDestroyNotify) pygi_arg_cache_free);
-        g_ptr_array_set_size (cache->args_cache, n_args);
-    }
+           break;
+       case GI_TYPE_TAG_GTYPE:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    if (!cache->generate_args_cache (cache, callable_info)) {
-        _callable_cache_deinit_real (cache);
-        return FALSE;
-    }
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_gtype_setup (arg_cache);
 
-    return TRUE;
-}
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_gtype_setup (arg_cache);
 
-gchar *
-pygi_callable_cache_get_full_name (PyGICallableCache *cache)
-{
-    if (cache->container_name != NULL) {
-        return g_strjoin (".",
-                          cache->namespace,
-                          cache->container_name,
-                          cache->name,
-                          NULL);
-    } else {
-        return g_strjoin (".",
-                          cache->namespace,
-                          cache->name,
-                          NULL);
-    }
-}
+           break;
+       case GI_TYPE_TAG_UTF8:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-void
-pygi_callable_cache_free (PyGICallableCache *cache)
-{
-    cache->deinit (cache);
-    g_free (cache);
-}
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_utf8_setup (arg_cache, transfer);
 
-/* PyGIFunctionCache */
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_utf8_setup (arg_cache, transfer);
 
-static PyObject *
-_function_cache_invoke_real (PyGIFunctionCache *function_cache,
-                             PyGIInvokeState *state,
-                             PyObject *py_args,
-                             PyObject *py_kwargs)
-{
-    return pygi_invoke_c_callable (function_cache, state,
-                                   py_args, py_kwargs);
-}
+           break;
+       case GI_TYPE_TAG_FILENAME:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-static void
-_function_cache_deinit_real (PyGICallableCache *callable_cache)
-{
-    g_function_invoker_destroy (&((PyGIFunctionCache *) callable_cache)->invoker);
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_filename_setup (arg_cache, transfer);
 
-    _callable_cache_deinit_real (callable_cache);
-}
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_filename_setup (arg_cache, transfer);
 
-static gboolean
-_function_cache_init (PyGIFunctionCache *function_cache,
-                      GICallableInfo *callable_info)
-{
-    PyGICallableCache *callable_cache = (PyGICallableCache *) function_cache;
-    GIFunctionInvoker *invoker = &function_cache->invoker;
-    GError *error = NULL;
+           break;
+       case GI_TYPE_TAG_ARRAY:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
 
-    callable_cache->calling_context = PYGI_CALLING_CONTEXT_IS_FROM_PY;
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
 
-    if (callable_cache->deinit == NULL)
-        callable_cache->deinit = _function_cache_deinit_real;
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_array_setup (arg_cache,
+                                                   callable_cache,
+                                                   type_info,
+                                                   transfer,
+                                                   direction,
+                                                   c_arg_index);
 
-    if (function_cache->invoke == NULL)
-        function_cache->invoke = _function_cache_invoke_real;
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_array_setup (arg_cache,
+                                                 callable_cache,
+                                                 type_info,
+                                                 transfer,
+                                                 direction,
+                                                 c_arg_index);
+
+               /* ugly edge case code:
+                *  
+                * length can come before the array parameter which means we
+                * need to update indexes if this happens
+                */ 
+               if (seq_cache->len_arg_index > -1 &&
+                   callable_cache->args_cache[seq_cache->len_arg_index]->meta_type == PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE) {
+                   gssize i;
+                   PyGIArgCache *child_cache =
+                       callable_cache->args_cache[seq_cache->len_arg_index];
+
+                   child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+                   py_arg_index -= 1;
+                   callable_cache->n_py_args -= 1;
+
+                   for (i = seq_cache->len_arg_index + 1; 
+                          i < callable_cache->n_args; 
+                            i++) {
+                       PyGIArgCache *update_cache = callable_cache->args_cache[i];
+                       if (update_cache == NULL)
+                           break;
+
+                       update_cache->py_arg_index -= 1;
+                   }
+               }
+
+               break;
+           }
+       case GI_TYPE_TAG_GLIST:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
 
-    if (!_callable_cache_init (callable_cache, callable_info))
-        return FALSE;
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
 
-    /* Set by PyGICCallbackCache and PyGIVFuncCache */
-    if (invoker->native_address == NULL) {
-        if (g_function_info_prep_invoker ((GIFunctionInfo *) callable_info,
-                                          invoker,
-                                          &error)) {
-            return TRUE;
-        }
-    } else {
-        if (g_function_invoker_new_for_address (invoker->native_address,
-                                                (GIFunctionInfo *) callable_info,
-                                                invoker,
-                                                &error)) {
-            return TRUE;
-        }
-    }
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_glist_setup (arg_cache, transfer);
 
-    if (!pygi_error_check (&error)) {
-        PyErr_Format (PyExc_RuntimeError,
-                      "unknown error creating invoker for %s",
-                      g_base_info_get_name ((GIBaseInfo *) callable_info));
-    }
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_glist_setup (arg_cache, transfer);
 
-    _callable_cache_deinit_real (callable_cache);
-    return FALSE;
-}
 
-PyGIFunctionCache *
-pygi_function_cache_new (GICallableInfo *info)
-{
-    PyGIFunctionCache *function_cache;
+               break;
+           }
+       case GI_TYPE_TAG_GSLIST:
+           {
+               PyGISequenceCache *seq_cache =
+                   _sequence_cache_new (type_info,
+                                        direction,
+                                        transfer,
+                                        child_offset);
 
-    function_cache = g_new0 (PyGIFunctionCache, 1);
+               arg_cache = (PyGIArgCache *)seq_cache;
+               if (arg_cache == NULL)
+                   break;
 
-    if (!_function_cache_init (function_cache, info)) {
-        g_free (function_cache);
-        return NULL;
-    }
+               if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_from_py_gslist_setup (arg_cache, transfer);
 
-    return function_cache;
-}
+               if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+                   _arg_cache_to_py_gslist_setup (arg_cache, transfer);
 
-PyObject *
-pygi_function_cache_invoke (PyGIFunctionCache *function_cache,
-                            PyObject *py_args,
-                            PyObject *py_kwargs)
-{
-    PyGIInvokeState state = { 0, };
+               break;
+            }
+       case GI_TYPE_TAG_GHASH:
+           arg_cache =
+               (PyGIArgCache *)_hash_cache_new (type_info,
+                                                direction,
+                                                transfer);
 
-    return function_cache->invoke (function_cache, &state,
-                                   py_args, py_kwargs);
-}
+           if (arg_cache == NULL)
+                   break;
 
-/* PyGICCallbackCache */
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_ghash_setup (arg_cache);
 
-PyGIFunctionCache *
-pygi_ccallback_cache_new (GICallableInfo *info,
-                          GCallback function_ptr)
-{
-    PyGICCallbackCache *ccallback_cache;
-    PyGIFunctionCache *function_cache;
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+               _arg_cache_to_py_ghash_setup (arg_cache);
+           }
 
-    ccallback_cache = g_new0 (PyGICCallbackCache, 1);
-    function_cache = (PyGIFunctionCache *) ccallback_cache;
+           break;
+       case GI_TYPE_TAG_INTERFACE:
+           {
+               GIInterfaceInfo *interface_info = g_type_info_get_interface (type_info);
+               arg_cache = _arg_cache_new_for_interface (interface_info,
+                                                         callable_cache,
+                                                         arg_info,
+                                                         transfer,
+                                                         direction,
+                                                         c_arg_index,
+                                                         py_arg_index);
 
-    function_cache->invoker.native_address = function_ptr;
+               g_base_info_unref ( (GIBaseInfo *)interface_info);
+               break;
+           }
+       case GI_TYPE_TAG_ERROR:
+           arg_cache = _arg_cache_alloc ();
+           if (arg_cache == NULL)
+               break;
 
-    if (!_function_cache_init (function_cache, info)) {
-        g_free (ccallback_cache);
-        return NULL;
-     }
+           if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_from_py_gerror_setup (arg_cache);
 
-    return function_cache;
-}
+           if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL)
+               _arg_cache_to_py_gerror_setup (arg_cache);
 
-PyObject *
-pygi_ccallback_cache_invoke (PyGICCallbackCache *ccallback_cache,
-                             PyObject *py_args,
-                             PyObject *py_kwargs,
-                             gpointer user_data)
-{
-    PyGIFunctionCache *function_cache = (PyGIFunctionCache *) ccallback_cache;
-    PyGIInvokeState state = { 0, };
+           break;
+    }
 
-    state.user_data = user_data;
+    if (arg_cache != NULL) {
+        arg_cache->direction = direction;
+        arg_cache->transfer = transfer;
+        arg_cache->type_tag = type_tag;
+        arg_cache->py_arg_index = py_arg_index;
+        arg_cache->c_arg_index = c_arg_index;
+        arg_cache->is_pointer = g_type_info_is_pointer (type_info);
+        g_base_info_ref ( (GIBaseInfo *) type_info);
+        arg_cache->type_info = type_info;
+    }
 
-    return function_cache->invoke (function_cache, &state,
-                                   py_args, py_kwargs);
+    return arg_cache;
 }
 
-/* PyGIConstructorCache */
-
-static PyObject *
-_constructor_cache_invoke_real (PyGIFunctionCache *function_cache,
-                                PyGIInvokeState *state,
-                                PyObject *py_args,
-                                PyObject *py_kwargs)
+static void
+_arg_name_list_generate (PyGICallableCache *callable_cache)
 {
-    PyGICallableCache *cache = (PyGICallableCache *) function_cache;
-    PyObject *constructor_class;
-    PyObject *ret;
+    GSList * arg_name_list = NULL;
+    int i;
 
-    constructor_class = PyTuple_GetItem (py_args, 0);
-    if (constructor_class == NULL) {
-        gchar *full_name = pygi_callable_cache_get_full_name (cache);
-        PyErr_Clear ();
-        PyErr_Format (PyExc_TypeError,
-                      "Constructors require the class to be passed in as an argument, "
-                      "No arguments passed to the %s constructor.",
-                      full_name);
-        g_free (full_name);
-
-        return FALSE;
+    if (callable_cache->arg_name_hash == NULL) {
+        callable_cache->arg_name_hash = g_hash_table_new (g_str_hash, g_str_equal);
+    } else {
+        g_hash_table_remove_all (callable_cache->arg_name_hash);
     }
 
-    py_args = PyTuple_GetSlice (py_args, 1, PyTuple_Size (py_args));
-    ret = _function_cache_invoke_real (function_cache, state,
-                                       py_args, py_kwargs);
-    Py_DECREF (py_args);
+    for (i=0; i < callable_cache->n_args; i++) {
+        PyGIArgCache *arg_cache = NULL;
 
-    if (ret == NULL || cache->return_cache->is_skipped)
-        return ret;
+        arg_cache = callable_cache->args_cache[i];
 
-    if (ret != Py_None) {
-        if (!PyTuple_Check (ret))
-            return ret;
+        if (arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD &&
+            arg_cache->meta_type != PYGI_META_ARG_TYPE_CLOSURE &&
+                (arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON ||
+                 arg_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL)) {
 
-        if (PyTuple_GET_ITEM (ret, 0) != Py_None)
-            return ret;
-    }
+            gpointer arg_name = (gpointer)arg_cache->arg_name;
 
-    PyErr_SetString (PyExc_TypeError, "constructor returned NULL");
+            arg_name_list = g_slist_prepend (arg_name_list, arg_name);
+            if (arg_name != NULL) {
+                g_hash_table_insert (callable_cache->arg_name_hash, arg_name, arg_name);
+            }
+        }
+    }
 
-    Py_DECREF (ret);
-    return NULL;
+    callable_cache->arg_name_list = g_slist_reverse (arg_name_list);
 }
 
-PyGIFunctionCache *
-pygi_constructor_cache_new (GICallableInfo *info)
+/* Generate the cache for the callable's arguments */
+static gboolean
+_args_cache_generate (GICallableInfo *callable_info,
+                      PyGICallableCache *callable_cache)
 {
-    PyGIConstructorCache *constructor_cache;
-    PyGIFunctionCache *function_cache;
-
-    constructor_cache = g_new0 (PyGIConstructorCache, 1);
-    function_cache = (PyGIFunctionCache *) constructor_cache;
+    gssize arg_index = 0;
+    gssize i;
+    GITypeInfo *return_info;
+    GITransfer return_transfer;
+    PyGIArgCache *return_cache;
+    PyGIDirection return_direction;
 
-    function_cache->invoke = _constructor_cache_invoke_real;
+    /* determine if we are marshalling the return to or from python */
+    if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+        return_direction = PYGI_DIRECTION_FROM_PYTHON;
+    else
+        return_direction = PYGI_DIRECTION_TO_PYTHON;
 
-    if (!_function_cache_init (function_cache, info)) {
-        g_free (constructor_cache);
-        return NULL;
-    }
+    /* cache the return arg */
+    return_info =
+        g_callable_info_get_return_type (callable_info);
+    return_transfer =
+        g_callable_info_get_caller_owns (callable_info);
+    return_cache =
+        _arg_cache_new (return_info,
+                        callable_cache,
+                        NULL,
+                        return_transfer,
+                        return_direction,
+                        -1,
+                        -1);
 
-    return function_cache;
-}
+    return_cache->is_skipped = g_callable_info_skip_return (callable_info);
+    callable_cache->return_cache = return_cache;
+    g_base_info_unref (return_info);
 
-/* PyGIFunctionWithInstanceCache */
+    /* first arg is the instance */
+    if (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+            callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
+        GIInterfaceInfo *interface_info;
+        PyGIArgCache *instance_cache;
+        PyGIDirection instance_direction;
 
-static gboolean
-_function_with_instance_cache_generate_args_cache_real (PyGICallableCache *callable_cache,
-                                                        GICallableInfo *callable_info)
-{
-    GIInterfaceInfo *interface_info;
-    PyGIArgCache *instance_cache;
-    GITransfer transfer;
+        instance_direction = PYGI_DIRECTION_FROM_PYTHON;
 
-    interface_info = g_base_info_get_container ((GIBaseInfo *) callable_info);
-    transfer = g_callable_info_get_instance_ownership_transfer (callable_info);
 
-    instance_cache =
-        _arg_cache_new_for_interface (interface_info,
-                                      NULL,
-                                      NULL,
-                                      transfer,
-                                      PYGI_DIRECTION_FROM_PYTHON,
-                                      callable_cache);
+        interface_info = g_base_info_get_container ( (GIBaseInfo *)callable_info);
 
-    if (instance_cache == NULL)
-        return FALSE;
+        instance_cache =
+            _arg_cache_new_for_interface (interface_info,
+                                          callable_cache,
+                                          NULL,
+                                          GI_TRANSFER_NOTHING,
+                                          instance_direction,
+                                          arg_index,
+                                          0);
 
-    /* Because we are not supplied a GITypeInfo for instance arguments,
-     * assume some defaults. */
-    instance_cache->is_pointer = TRUE;
-    instance_cache->py_arg_index = 0;
-    instance_cache->c_arg_index = 0;
+        /* FIXME: marshal interfaces from_py */
+        instance_cache->from_py_marshaller = _pygi_marshal_from_py_interface_instance;
+        g_base_info_unref ( (GIBaseInfo *)interface_info);
 
-    _pygi_callable_cache_set_arg (callable_cache, 0, instance_cache);
+        if (instance_cache == NULL)
+            return FALSE;
 
-    callable_cache->n_py_args++;
+        callable_cache->args_cache[arg_index] = instance_cache;
 
-    return _callable_cache_generate_args_cache_real (callable_cache,
-                                                     callable_info);
-}
+        arg_index++;
+        callable_cache->n_from_py_args++;
+        callable_cache->n_py_args++;
+    }
 
-static gboolean
-_function_with_instance_cache_init (PyGIFunctionWithInstanceCache *fwi_cache,
-                                    GICallableInfo *info)
-{
-    PyGICallableCache *callable_cache = (PyGICallableCache *) fwi_cache;
 
-    callable_cache->args_offset += 1;
-    callable_cache->generate_args_cache = _function_with_instance_cache_generate_args_cache_real;
+    for (i=0; arg_index < callable_cache->n_args; arg_index++, i++) {
+        PyGIArgCache *arg_cache = NULL;
+        GIArgInfo *arg_info;
+        GITypeInfo *type_info;
+        GIDirection gi_direction;
+        PyGIDirection direction;
+        GITransfer transfer;
+        GITypeTag type_tag;
+        gboolean is_caller_allocates = FALSE;
+        gssize py_arg_index = -1;
 
-    return _function_cache_init ((PyGIFunctionCache *) fwi_cache, info);
-}
+        arg_info = g_callable_info_get_arg (callable_info, i);
 
-/* PyGIMethodCache */
+        if (g_arg_info_get_closure (arg_info) == i) {
 
-PyGIFunctionCache *
-pygi_method_cache_new (GICallableInfo *info)
-{
-    PyGIMethodCache *method_cache;
-    PyGIFunctionWithInstanceCache *fwi_cache;
+            arg_cache = _arg_cache_alloc ();
+            callable_cache->args_cache[arg_index] = arg_cache;
 
-    method_cache = g_new0 (PyGIMethodCache, 1);
-    fwi_cache = (PyGIFunctionWithInstanceCache *) method_cache;
+            arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+            arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+            arg_cache->meta_type = PYGI_META_ARG_TYPE_CLOSURE;
+            arg_cache->c_arg_index = i;
 
-    if (!_function_with_instance_cache_init (fwi_cache, info)) {
-        g_free (method_cache);
-        return NULL;
-    }
+            callable_cache->n_from_py_args++;
 
-    return (PyGIFunctionCache *) method_cache;
-}
+            g_base_info_unref ( (GIBaseInfo *)arg_info);
 
-/* PyGIVFuncCache */
+            continue;
+        }
 
-static PyObject *
-_vfunc_cache_invoke_real (PyGIFunctionCache *function_cache,
-                          PyGIInvokeState *state,
-                          PyObject *py_args,
-                          PyObject *py_kwargs)
-{
-    PyGIVFuncCache *vfunc_cache = (PyGIVFuncCache *) function_cache;
-    PyObject *py_gtype;
-    GType implementor_gtype;
-    GError *error = NULL;
-    PyObject *ret;
+        /* For vfuncs and callbacks our marshalling directions
+           are reversed */
+        gi_direction = g_arg_info_get_direction (arg_info);
+        if (gi_direction == GI_DIRECTION_INOUT) {
+            direction = PYGI_DIRECTION_BIDIRECTIONAL;
+        } else if (gi_direction == GI_DIRECTION_IN) {
+            direction = PYGI_DIRECTION_FROM_PYTHON;
+            if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+                direction = PYGI_DIRECTION_TO_PYTHON;
+        } else {
+            direction = PYGI_DIRECTION_TO_PYTHON;
+            if (callable_cache->function_type == PYGI_FUNCTION_TYPE_CALLBACK)
+                direction = PYGI_DIRECTION_FROM_PYTHON;
+        }
 
-    py_gtype = PyTuple_GetItem (py_args, 0);
-    if (py_gtype == NULL) {
-        PyErr_SetString (PyExc_TypeError,
-                         "need the GType of the implementor class");
-        return FALSE;
-    }
+        transfer = g_arg_info_get_ownership_transfer (arg_info);
+        type_info = g_arg_info_get_type (arg_info);
+        type_tag = g_type_info_get_tag (type_info);
+
+        if (type_tag == GI_TYPE_TAG_INTERFACE)
+            is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
+
+        /* must be an child arg filled in by its owner
+         * and continue
+         * fill in it's c_arg_index, add to the in count
+         */
+        if (callable_cache->args_cache[arg_index] != NULL) {
+            arg_cache = callable_cache->args_cache[arg_index];
+            if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CHILD_WITH_PYARG) {
+                arg_cache->py_arg_index = callable_cache->n_py_args;
+                callable_cache->n_py_args++;
+            }
 
-    implementor_gtype = pyg_type_from_object (py_gtype);
-    if (implementor_gtype == G_TYPE_INVALID)
-        return FALSE;
+            if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                arg_cache->c_arg_index = callable_cache->n_from_py_args;
+                callable_cache->n_from_py_args++;
+            }
 
-    /* vfunc addresses are pulled into the state at call time and cannot be
-     * cached because the call site can specify a different portion of the
-     * class hierarchy. e.g. Object.do_func vs. SubObject.do_func might
-     * retrieve a different vfunc address but GI gives us the same vfunc info.
-     */
-    state->function_ptr = g_vfunc_info_get_address ((GIVFuncInfo *) vfunc_cache->info,
-                                                    implementor_gtype,
-                                                    &error);
-    if (pygi_error_check (&error)) {
-        return FALSE;
-    }
+            if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+                callable_cache->n_to_py_args++;
+                callable_cache->n_to_py_child_args++;
+            }
 
-    py_args = PyTuple_GetSlice (py_args, 1, PyTuple_Size (py_args));
-    ret = _function_cache_invoke_real (function_cache, state,
-                                       py_args, py_kwargs);
-    Py_DECREF (py_args);
+            g_base_info_unref ( (GIBaseInfo *)arg_info);
+            continue;
+        }
 
-    return ret;
-}
+        if (direction == PYGI_DIRECTION_FROM_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            py_arg_index = callable_cache->n_py_args;
+            callable_cache->n_from_py_args++;
+            callable_cache->n_py_args++;
+        }
 
-static void
-_vfunc_cache_deinit_real (PyGICallableCache *callable_cache)
-{
-    g_base_info_unref (((PyGIVFuncCache *) callable_cache)->info);
+        arg_cache =
+            _arg_cache_new (type_info,
+                            callable_cache,
+                            arg_info,
+                            transfer,
+                            direction,
+                            arg_index,
+                            py_arg_index);
 
-    _function_cache_deinit_real (callable_cache);
-}
+        if (arg_cache == NULL)
+            goto arg_err;
 
-PyGIFunctionCache *
-pygi_vfunc_cache_new (GICallableInfo *info)
-{
-    PyGIVFuncCache *vfunc_cache;
-    PyGIFunctionCache *function_cache;
-    PyGIFunctionWithInstanceCache *fwi_cache;
+        arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+        arg_cache->allow_none = g_arg_info_may_be_null(arg_info);
+        arg_cache->is_caller_allocates = is_caller_allocates;
 
-    vfunc_cache = g_new0 (PyGIVFuncCache, 1);
-    function_cache = (PyGIFunctionCache *) vfunc_cache;
-    fwi_cache = (PyGIFunctionWithInstanceCache *) vfunc_cache;
+        if (direction == PYGI_DIRECTION_TO_PYTHON || direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            callable_cache->n_to_py_args++;
 
-    ((PyGICallableCache *) vfunc_cache)->deinit = _vfunc_cache_deinit_real;
+            if (arg_cache == NULL)
+                goto arg_err;
 
-    /* This must be non-NULL for _function_cache_init() to create the
-     * invoker, the real address will be set in _vfunc_cache_invoke_real().
-     */
-    function_cache->invoker.native_address = (gpointer) 0xdeadbeef;
+            callable_cache->to_py_args =
+                g_slist_append (callable_cache->to_py_args, arg_cache);
+        }
 
-    function_cache->invoke = _vfunc_cache_invoke_real;
+        callable_cache->args_cache[arg_index] = arg_cache;
+        g_base_info_unref( (GIBaseInfo *)type_info);
+        g_base_info_unref( (GIBaseInfo *)arg_info);
 
-    if (!_function_with_instance_cache_init (fwi_cache, info)) {
-        g_free (vfunc_cache);
-        return NULL;
+        continue;
+arg_err:
+        g_base_info_unref( (GIBaseInfo *)type_info);
+        g_base_info_unref( (GIBaseInfo *)arg_info);
+        return FALSE;
     }
 
-    /* Required by _vfunc_cache_invoke_real() */
-    vfunc_cache->info = g_base_info_ref ((GIBaseInfo *) info);
+    _arg_name_list_generate (callable_cache);
 
-    return function_cache;
+    return TRUE;
 }
 
-/* PyGIClosureCache */
-
-PyGIClosureCache *
-pygi_closure_cache_new (GICallableInfo *info)
+PyGICallableCache *
+_pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
 {
-    gssize i;
-    PyGIClosureCache *closure_cache;
-    PyGICallableCache *callable_cache;
-
-    closure_cache = g_new0 (PyGIClosureCache, 1);
-    callable_cache = (PyGICallableCache *) closure_cache;
+    PyGICallableCache *cache;
+    GIInfoType type = g_base_info_get_type ( (GIBaseInfo *)callable_info);
 
-    callable_cache->calling_context = PYGI_CALLING_CONTEXT_IS_FROM_C;
+    cache = g_slice_new0 (PyGICallableCache);
 
-    if (!_callable_cache_init (callable_cache, info)) {
-        g_free (closure_cache);
+    if (cache == NULL)
         return NULL;
-    }
 
-    /* For backwards compatibility closures include the array's length.
-     *
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=652115
-     */
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (callable_cache); i++) {
-        PyGIArgCache *arg_cache;
-        PyGIArgGArray *garray_cache;
-        PyGIArgCache *len_arg_cache;
-
-        arg_cache = g_ptr_array_index (callable_cache->args_cache, i);
-        if (arg_cache->type_tag != GI_TYPE_TAG_ARRAY)
-            continue;
+    cache->name = g_base_info_get_name ((GIBaseInfo *)callable_info);
 
-        garray_cache = (PyGIArgGArray *) arg_cache;
-        if (garray_cache->len_arg_index == -1)
-            continue;
+    if (type == GI_INFO_TYPE_FUNCTION) {
+        GIFunctionInfoFlags flags;
 
-        len_arg_cache = g_ptr_array_index (callable_cache->args_cache,
-                                           garray_cache->len_arg_index);
-        len_arg_cache->meta_type = PYGI_META_ARG_TYPE_PARENT;
+        flags = g_function_info_get_flags ( (GIFunctionInfo *)callable_info);
+
+        if (flags & GI_FUNCTION_IS_CONSTRUCTOR)
+            cache->function_type = PYGI_FUNCTION_TYPE_CONSTRUCTOR;
+        else if (flags & GI_FUNCTION_IS_METHOD)
+            cache->function_type = PYGI_FUNCTION_TYPE_METHOD;
+    } else if (type == GI_INFO_TYPE_VFUNC) {
+        cache->function_type = PYGI_FUNCTION_TYPE_VFUNC;
+    } else if (type == GI_INFO_TYPE_CALLBACK) {
+        if (is_ccallback)
+            cache->function_type = PYGI_FUNCTION_TYPE_CCALLBACK;
+        else
+            cache->function_type = PYGI_FUNCTION_TYPE_CALLBACK;
+    } else {
+        cache->function_type = PYGI_FUNCTION_TYPE_METHOD;
     }
 
-    /* Prevent guessing multiple user data arguments.
-     * This is required because some versions of GI
-     * do not recognize user_data/data arguments correctly.
-     */
-    if (callable_cache->user_data_index == -1) {
-        for (i = 0; (gsize)i < _pygi_callable_cache_args_len (callable_cache); i++) {
-            PyGIArgCache *arg_cache;
+    cache->n_args = g_callable_info_get_n_args (callable_info);
 
-            arg_cache = g_ptr_array_index (callable_cache->args_cache, i);
+    /* if we are a method or vfunc make sure the instance parameter is counted */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+            cache->function_type == PYGI_FUNCTION_TYPE_VFUNC)
+        cache->n_args++;
 
-            if (arg_cache->direction == PYGI_DIRECTION_TO_PYTHON &&
-                arg_cache->type_tag == GI_TYPE_TAG_VOID &&
-                arg_cache->is_pointer) {
+    if (cache->n_args > 0)
+        cache->args_cache = g_slice_alloc0 (cache->n_args * sizeof (PyGIArgCache *));
 
-                callable_cache->user_data_index = i;
-                break;
-            }
-        }
-    }
+    if (!_args_cache_generate (callable_info, cache))
+        goto err;
 
-    return closure_cache;
+    return cache;
+err:
+    _pygi_callable_cache_free (cache);
+    return NULL;
 }
index 4dfabd8..6e5e0ab 100644 (file)
@@ -2,7 +2,6 @@
  * vim: tabstop=4 shiftwidth=4 expandtab
  *
  * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -15,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_CACHE_H__
 
 #include <Python.h>
 #include <girepository.h>
-#include <girffi.h>
 
 #include "pygi-invoke-state-struct.h"
 
 G_BEGIN_DECLS
 
-typedef struct _PyGIArgCache PyGIArgCache;
 typedef struct _PyGICallableCache PyGICallableCache;
-typedef struct _PyGIFunctionCache PyGIFunctionCache;
-typedef struct _PyGIVFuncCache PyGIVFuncCache;
-
-typedef PyGIFunctionCache PyGICCallbackCache;
-typedef PyGIFunctionCache PyGIConstructorCache;
-typedef PyGIFunctionCache PyGIFunctionWithInstanceCache;
-typedef PyGIFunctionCache PyGIMethodCache;
-typedef PyGICallableCache PyGIClosureCache;
+typedef struct _PyGIArgCache PyGIArgCache;
 
 typedef gboolean (*PyGIMarshalFromPyFunc) (PyGIInvokeState   *state,
                                            PyGICallableCache *callable_cache,
                                            PyGIArgCache      *arg_cache,
                                            PyObject          *py_arg,
-                                           GIArgument        *arg,
-                                           gpointer          *cleanup_data);
+                                           GIArgument        *arg);
 
 typedef PyObject *(*PyGIMarshalToPyFunc) (PyGIInvokeState   *state,
                                           PyGICallableCache *callable_cache,
@@ -54,7 +45,6 @@ typedef PyObject *(*PyGIMarshalToPyFunc) (PyGIInvokeState   *state,
 
 typedef void (*PyGIMarshalCleanupFunc) (PyGIInvokeState *state,
                                         PyGIArgCache    *arg_cache,
-                                        PyObject        *py_arg, /* always NULL for to_py cleanup */
                                         gpointer         data,
                                         gboolean         was_processed);
 
@@ -66,6 +56,10 @@ typedef void (*PyGIMarshalCleanupFunc) (PyGIInvokeState *state,
  *  - PYGI_META_ARG_TYPE_CHILD - Children without python argument are
  *    ignored by the marshallers and handled directly by their parents
  *    marshaller.
+ *  - PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE -Sometimes children arguments
+ *    come before the parent.  In these cases they need to be flagged
+ *    so that the argument list counts must be updated for the cache to
+ *    be valid
  *  - Children with pyargs (PYGI_META_ARG_TYPE_CHILD_WITH_PYARG) are processed
  *    the same as other child args but also have an index into the 
  *    python parameters passed to the invoker
@@ -73,29 +67,38 @@ typedef void (*PyGIMarshalCleanupFunc) (PyGIInvokeState *state,
 typedef enum {
     PYGI_META_ARG_TYPE_PARENT,
     PYGI_META_ARG_TYPE_CHILD,
+    PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE,
     PYGI_META_ARG_TYPE_CHILD_WITH_PYARG,
     PYGI_META_ARG_TYPE_CLOSURE,
 } PyGIMetaArgType;
 
 /*
- * Argument direction types denotes how we marshal,
- * e.g. to Python or from Python or both.
+ * GI determines function types via a combination of flags and info classes.
+ * Since for branching purposes they are mutually exclusive, the 
+ * PyGIFunctionType enum consolidates them into one enumeration for ease of 
+ * branching and debugging.
  */
 typedef enum {
-    PYGI_DIRECTION_TO_PYTHON     = 1 << 0,
-    PYGI_DIRECTION_FROM_PYTHON   = 1 << 1,
-    PYGI_DIRECTION_BIDIRECTIONAL = PYGI_DIRECTION_TO_PYTHON | PYGI_DIRECTION_FROM_PYTHON
- } PyGIDirection;
+    PYGI_FUNCTION_TYPE_FUNCTION,
+    PYGI_FUNCTION_TYPE_METHOD,
+    PYGI_FUNCTION_TYPE_CONSTRUCTOR,
+    PYGI_FUNCTION_TYPE_VFUNC,
+    PYGI_FUNCTION_TYPE_CALLBACK,
+    PYGI_FUNCTION_TYPE_CCALLBACK,
+ } PyGIFunctionType;
 
 /*
  * In PyGI IN and OUT arguments mean different things depending on the context
- * of the callable, e.g. is it a callback that is being called from C or a
- * function that is being called from Python.
+ * of the callable (e.g. is it a callback that is being called from C or a
+ * function that is being called from python).  We don't as much care if the
+ * parameter is an IN or OUT C parameter, than we do if the parameter is being
+ * marshalled into Python or from Python.
  */
 typedef enum {
-    PYGI_CALLING_CONTEXT_IS_FROM_C,
-    PYGI_CALLING_CONTEXT_IS_FROM_PY
-} PyGICallingContext;
+    PYGI_DIRECTION_TO_PYTHON,
+    PYGI_DIRECTION_FROM_PYTHON,
+    PYGI_DIRECTION_BIDIRECTIONAL
+ } PyGIDirection;
 
 
 struct _PyGIArgCache
@@ -107,7 +110,6 @@ struct _PyGIArgCache
     gboolean is_caller_allocates;
     gboolean is_skipped;
     gboolean allow_none;
-    gboolean has_default;
 
     PyGIDirection direction;
     GITransfer transfer;
@@ -124,26 +126,18 @@ struct _PyGIArgCache
 
     gssize c_arg_index;
     gssize py_arg_index;
-
-    /* Set when has_default is true. */
-    GIArgument default_value;
 };
 
 typedef struct _PyGISequenceCache
 {
     PyGIArgCache arg_cache;
-    PyGIArgCache *item_cache;
-} PyGISequenceCache;
-
-typedef struct _PyGIArgGArray
-{
-    PyGISequenceCache seq_cache;
     gssize fixed_size;
     gssize len_arg_index;
     gboolean is_zero_terminated;
     gsize item_size;
     GIArrayType array_type;
-} PyGIArgGArray;
+    PyGIArgCache *item_cache;
+} PyGISequenceCache;
 
 typedef struct _PyGIInterfaceCache
 {
@@ -155,171 +149,48 @@ typedef struct _PyGIInterfaceCache
     gchar *type_name;
 } PyGIInterfaceCache;
 
+typedef struct _PyGIHashCache
+{
+    PyGIArgCache arg_cache;
+    PyGIArgCache *key_cache;
+    PyGIArgCache *value_cache;
+} PyGIHashCache;
+
+typedef struct _PyGICallbackCache
+{
+    PyGIArgCache arg_cache;
+    gssize user_data_index;
+    gssize destroy_notify_index;
+    GIScopeType scope;
+    GIInterfaceInfo *interface_info;
+} PyGICallbackCache;
+
 struct _PyGICallableCache
 {
     const gchar *name;
-    const gchar *container_name;
-    const gchar *namespace;
 
-    PyGICallingContext calling_context;
+    PyGIFunctionType function_type;
 
     PyGIArgCache *return_cache;
-    GPtrArray *args_cache;
+    PyGIArgCache **args_cache;
     GSList *to_py_args;
     GSList *arg_name_list; /* for keyword arg matching */
     GHashTable *arg_name_hash;
-    gboolean throws;
-
-    /* Index of user_data arg passed to a callable. */
-    gssize user_data_index;
-
-    /* Index of user_data arg that can eat variable args passed to a callable. */
-    gssize user_data_varargs_index;
 
-    /* Number of args already added */
-    gssize args_offset;
-
-    /* Number of out args passed to g_function_info_invoke.
-     * This is used for the length of PyGIInvokeState.out_values */
+    /* counts */
+    gssize n_from_py_args;
     gssize n_to_py_args;
-
-    /* If the callable return value gets used */
-    gboolean has_return;
-
-    /* The type used for returning multiple values or NULL */
-    PyTypeObject* resulttuple_type;
-
-    /* Number of out args for g_function_info_invoke that will be skipped
-     * when marshaling to Python due to them being implicitly available
-     * (list/array length).
-     */
     gssize n_to_py_child_args;
 
-    /* Number of Python arguments expected for invoking the gi function. */
+    gssize n_args;
     gssize n_py_args;
-
-    /* Minimum number of args required to call the callable from Python.
-     * This count does not include args with defaults. */
-    gssize n_py_required_args;
-
-    void     (*deinit)              (PyGICallableCache *callable_cache);
-
-    gboolean (*generate_args_cache) (PyGICallableCache *callable_cache,
-                                     GICallableInfo *callable_info);
-};
-
-struct _PyGIFunctionCache {
-    PyGICallableCache callable_cache;
-
-    /* An invoker with ffi_cif already setup */
-    GIFunctionInvoker invoker;
-
-    PyObject *(*invoke) (PyGIFunctionCache *function_cache,
-                         PyGIInvokeState *state,
-                         PyObject *py_args,
-                         PyObject *py_kwargs);
-} ;
-
-struct _PyGIVFuncCache {
-    PyGIFunctionWithInstanceCache fwi_cache;
-
-    GIBaseInfo *info;
 };
 
+void _pygi_arg_cache_clear     (PyGIArgCache *cache);
+void _pygi_callable_cache_free (PyGICallableCache *cache);
 
-gboolean
-pygi_arg_base_setup      (PyGIArgCache *arg_cache,
-                          GITypeInfo   *type_info,
-                          GIArgInfo    *arg_info,  /* may be NULL for return arguments */
-                          GITransfer    transfer,
-                          PyGIDirection direction);
-
-gboolean
-pygi_arg_interface_setup (PyGIInterfaceCache *iface_cache,
-                          GITypeInfo         *type_info,
-                          GIArgInfo          *arg_info,  /* may be NULL for return arguments */
-                          GITransfer          transfer,
-                          PyGIDirection       direction,
-                          GIInterfaceInfo    *iface_info);
-
-gboolean
-pygi_arg_sequence_setup  (PyGISequenceCache  *sc,
-                          GITypeInfo         *type_info,
-                          GIArgInfo          *arg_info,    /* may be NULL for return arguments */
-                          GITransfer          transfer,
-                          PyGIDirection       direction,
-                          PyGICallableCache  *callable_cache);
-
-PyGIArgCache *
-pygi_arg_interface_new_from_info (GITypeInfo         *type_info,
-                                  GIArgInfo          *arg_info,     /* may be NULL for return arguments */
-                                  GITransfer          transfer,
-                                  PyGIDirection       direction,
-                                  GIInterfaceInfo    *iface_info);
-
-PyGIArgCache *
-pygi_arg_cache_alloc     (void);
-
-PyGIArgCache *
-pygi_arg_cache_new       (GITypeInfo *type_info,
-                          GIArgInfo *arg_info,
-                          GITransfer transfer,
-                          PyGIDirection direction,
-                          PyGICallableCache *callable_cache,
-                          /* will be removed */
-                          gssize c_arg_index,
-                          gssize py_arg_index);
-
-void
-pygi_arg_cache_free      (PyGIArgCache *cache);
-
-void
-pygi_callable_cache_free    (PyGICallableCache *cache);
-
-gchar *
-pygi_callable_cache_get_full_name (PyGICallableCache *cache);
-
-PyGIFunctionCache *
-pygi_function_cache_new     (GICallableInfo *info);
-
-PyObject *
-pygi_function_cache_invoke  (PyGIFunctionCache *function_cache,
-                             PyObject *py_args,
-                             PyObject *py_kwargs);
-
-PyGIFunctionCache *
-pygi_ccallback_cache_new    (GICallableInfo *info,
-                             GCallback function_ptr);
-
-PyObject *
-pygi_ccallback_cache_invoke (PyGIFunctionCache *function_cache,
-                             PyObject *py_args,
-                             PyObject *py_kwargs,
-                             gpointer user_data);
-
-PyGIFunctionCache *
-pygi_constructor_cache_new  (GICallableInfo *info);
-
-PyGIFunctionCache *
-pygi_method_cache_new       (GICallableInfo *info);
-
-PyGIFunctionCache *
-pygi_vfunc_cache_new        (GICallableInfo *info);
-
-PyGIClosureCache *
-pygi_closure_cache_new      (GICallableInfo *info);
-
-#define _pygi_callable_cache_args_len(cache) ((cache)->args_cache)->len
-
-inline static PyGIArgCache *
-_pygi_callable_cache_get_arg (PyGICallableCache *cache, guint index) {
-    return (PyGIArgCache *) g_ptr_array_index (cache->args_cache, index);
-}
-
-inline static void
-_pygi_callable_cache_set_arg (PyGICallableCache *cache, guint index, PyGIArgCache *arg_cache) {
-    cache->args_cache->pdata[index] = arg_cache;
-}
+PyGICallableCache *_pygi_callable_cache_new (GICallableInfo *callable_info,
+                                             gboolean is_ccallback);
 
 G_END_DECLS
 
diff --git a/gi/pygi-callbacks.c b/gi/pygi-callbacks.c
new file mode 100644 (file)
index 0000000..bae4001
--- /dev/null
@@ -0,0 +1,221 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ *   pygi-callbacks.c: PyGI C Callback Functions and Helpers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+static PyGICClosure *global_destroy_notify;
+
+static void
+_pygi_destroy_notify_callback_closure (ffi_cif *cif,
+                                       void *result,
+                                       void **args,
+                                       void *data)
+{
+    PyGICClosure *info = * (void**) (args[0]);
+
+    g_assert (info);
+
+    _pygi_invoke_closure_free (info);
+}
+
+
+PyGICClosure*
+_pygi_destroy_notify_create (void)
+{
+    if (!global_destroy_notify) {
+
+        PyGICClosure *destroy_notify = g_slice_new0 (PyGICClosure);
+
+        g_assert (destroy_notify);
+
+        GIBaseInfo* glib_destroy_notify = g_irepository_find_by_name (NULL, "GLib", "DestroyNotify");
+        g_assert (glib_destroy_notify != NULL);
+        g_assert (g_base_info_get_type (glib_destroy_notify) == GI_INFO_TYPE_CALLBACK);
+
+        destroy_notify->closure = g_callable_info_prepare_closure ( (GICallableInfo*) glib_destroy_notify,
+                                                                    &destroy_notify->cif,
+                                                                    _pygi_destroy_notify_callback_closure,
+                                                                    NULL);
+
+        global_destroy_notify = destroy_notify;
+    }
+
+    return global_destroy_notify;
+}
+
+
+gboolean
+_pygi_scan_for_callbacks (GIFunctionInfo *function_info,
+                          gboolean       is_method,
+                          guint8        *callback_index,
+                          guint8        *user_data_index,
+                          guint8        *destroy_notify_index)
+{
+    guint i, n_args;
+
+    *callback_index = G_MAXUINT8;
+    *user_data_index = G_MAXUINT8;
+    *destroy_notify_index = G_MAXUINT8;
+
+    n_args = g_callable_info_get_n_args ( (GICallableInfo *) function_info);
+    for (i = 0; i < n_args; i++) {
+        GIDirection direction;
+        GIArgInfo *arg_info;
+        GITypeInfo *type_info;
+        guint8 destroy, closure;
+        GITypeTag type_tag;
+
+        arg_info = g_callable_info_get_arg ( (GICallableInfo*) function_info, i);
+        type_info = g_arg_info_get_type (arg_info);
+        type_tag = g_type_info_get_tag (type_info);
+
+        if (type_tag == GI_TYPE_TAG_INTERFACE) {
+            GIBaseInfo* interface_info;
+            GIInfoType interface_type;
+
+            interface_info = g_type_info_get_interface (type_info);
+            interface_type = g_base_info_get_type (interface_info);
+            if (interface_type == GI_INFO_TYPE_CALLBACK &&
+                    ! (strcmp (g_base_info_get_namespace ( (GIBaseInfo*) interface_info), "GLib") == 0 &&
+                       (strcmp (g_base_info_get_name ( (GIBaseInfo*) interface_info), "DestroyNotify") == 0 ||
+                       (strcmp (g_base_info_get_name ( (GIBaseInfo*) interface_info), "FreeFunc") == 0)))) {
+                if (*callback_index != G_MAXUINT8) {
+                    PyErr_Format (PyExc_TypeError, "Function %s.%s has multiple callbacks, not supported",
+                                  g_base_info_get_namespace ( (GIBaseInfo*) function_info),
+                                  g_base_info_get_name ( (GIBaseInfo*) function_info));
+                    g_base_info_unref (interface_info);
+                    return FALSE;
+                }
+                *callback_index = i;
+            }
+            g_base_info_unref (interface_info);
+        }
+        destroy = g_arg_info_get_destroy (arg_info);
+        
+        closure = g_arg_info_get_closure (arg_info);
+        direction = g_arg_info_get_direction (arg_info);
+
+        if (destroy > 0 && destroy < n_args) {
+            if (*destroy_notify_index != G_MAXUINT8) {
+                PyErr_Format (PyExc_TypeError, "Function %s has multiple GDestroyNotify, not supported",
+                              g_base_info_get_name ( (GIBaseInfo*) function_info));
+                return FALSE;
+            }
+            *destroy_notify_index = destroy;
+        }
+
+        if (closure > 0 && closure < n_args) {
+            if (*user_data_index != G_MAXUINT8) {
+                PyErr_Format (PyExc_TypeError, "Function %s has multiple user_data arguments, not supported",
+                              g_base_info_get_name ( (GIBaseInfo*) function_info));
+                return FALSE;
+            }
+            *user_data_index = closure;
+        }
+
+        g_base_info_unref ( (GIBaseInfo*) arg_info);
+        g_base_info_unref ( (GIBaseInfo*) type_info);
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_create_callback (GIBaseInfo  *function_info,
+                       gboolean       is_method,
+                       gboolean       is_constructor,
+                       int            n_args,
+                       Py_ssize_t     py_argc,
+                       PyObject      *py_argv,
+                       guint8         callback_index,
+                       guint8         user_data_index,
+                       guint8         destroy_notify_index,
+                       PyGICClosure **closure_out)
+{
+    GIArgInfo *callback_arg;
+    GITypeInfo *callback_type;
+    GICallbackInfo *callback_info;
+    GIScopeType scope;
+    gboolean found_py_function;
+    PyObject *py_function;
+    guint8 i, py_argv_pos;
+    PyObject *py_user_data;
+    gboolean allow_none;
+
+    callback_arg = g_callable_info_get_arg ( (GICallableInfo*) function_info, callback_index);
+    scope = g_arg_info_get_scope (callback_arg);
+    allow_none = g_arg_info_may_be_null (callback_arg);
+
+    callback_type = g_arg_info_get_type (callback_arg);
+    g_assert (g_type_info_get_tag (callback_type) == GI_TYPE_TAG_INTERFACE);
+
+    callback_info = (GICallbackInfo*) g_type_info_get_interface (callback_type);
+    g_assert (g_base_info_get_type ( (GIBaseInfo*) callback_info) == GI_INFO_TYPE_CALLBACK);
+
+    /* Find the Python function passed for the callback */
+    found_py_function = FALSE;
+    py_function = Py_None;
+    py_user_data = NULL;
+
+    /* if its a method then we need to skip over 'self' */
+    if (is_method || is_constructor)
+        py_argv_pos = 1;
+    else
+        py_argv_pos = 0;
+
+    for (i = 0; i < n_args && i < py_argc; i++) {
+        if (i == callback_index) {
+            py_function = PyTuple_GetItem (py_argv, py_argv_pos);
+            /* if we allow none then set the closure to NULL and return */
+            if (allow_none && py_function == Py_None) {
+                *closure_out = NULL;
+                goto out;
+            }
+            found_py_function = TRUE;
+        } else if (i == user_data_index) {
+            py_user_data = PyTuple_GetItem (py_argv, py_argv_pos);
+        }
+        py_argv_pos++;
+    }
+
+    if (!found_py_function
+            || (py_function == Py_None || !PyCallable_Check (py_function))) {
+        PyErr_Format (PyExc_TypeError, "Error invoking %s.%s: Unexpected value "
+                      "for argument '%s'",
+                      g_base_info_get_namespace ( (GIBaseInfo*) function_info),
+                      g_base_info_get_name ( (GIBaseInfo*) function_info),
+                      g_base_info_get_name ( (GIBaseInfo*) callback_arg));
+        g_base_info_unref ( (GIBaseInfo*) callback_info);
+        g_base_info_unref ( (GIBaseInfo*) callback_type);
+        return FALSE;
+    }
+
+    /** Now actually build the closure **/
+    *closure_out = _pygi_make_native_closure ( (GICallableInfo *) callback_info,
+                                               g_arg_info_get_scope (callback_arg),
+                                               py_function,
+                                               py_user_data);
+out:
+    g_base_info_unref ( (GIBaseInfo*) callback_info);
+    g_base_info_unref ( (GIBaseInfo*) callback_type);
+
+    return TRUE;
+}
diff --git a/gi/pygi-callbacks.h b/gi/pygi-callbacks.h
new file mode 100644 (file)
index 0000000..7535bba
--- /dev/null
@@ -0,0 +1,48 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_CALLBACKS_H__
+#define __PYGI_CALLBACKS_H__
+
+G_BEGIN_DECLS
+
+void _pygi_callback_notify_info_free (gpointer user_data);
+
+PyGICClosure*_pygi_destroy_notify_create (void);
+
+gboolean _pygi_scan_for_callbacks (GIFunctionInfo *self,
+                                   gboolean       is_method,
+                                   guint8        *callback_index,
+                                   guint8        *user_data_index,
+                                   guint8        *destroy_notify_index);
+
+gboolean _pygi_create_callback (GIFunctionInfo *self,
+                                gboolean       is_method,
+                                gboolean       is_constructor,
+                                int            n_args,
+                                Py_ssize_t     py_argc,
+                                PyObject      *py_argv,
+                                guint8         callback_index,
+                                guint8         user_data_index,
+                                guint8         destroy_notify_index,
+                                PyGICClosure **closure_out);
+
+G_END_DECLS
+
+#endif
index 3fe5366..bf3ec8a 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-ccallback.h"
+#include "pygi-private.h"
 
+#include <pygobject.h>
 #include <girepository.h>
 #include <pyglib-python-compat.h>
 
@@ -29,18 +32,20 @@ static PyObject *
 _ccallback_call(PyGICCallback *self, PyObject *args, PyObject *kwargs)
 {
     PyObject *result;
+    GCallback *func;
 
     if (self->cache == NULL) {
-        self->cache = (PyGICCallbackCache *)pygi_ccallback_cache_new (self->info,
-                                                                      self->callback);
+        self->cache = _pygi_callable_cache_new (self->info, TRUE);
         if (self->cache == NULL)
             return NULL;
     }
 
-    result = pygi_ccallback_cache_invoke (self->cache,
-                                          args,
-                                          kwargs,
-                                          self->user_data);
+    result = pygi_callable_info_invoke( (GIBaseInfo *) self->info,
+                                         args,
+                                         kwargs,
+                                         self->cache,
+                                         self->callback,
+                                         self->user_data);
     return result;
 }
 
@@ -77,12 +82,6 @@ static void
 _ccallback_dealloc (PyGICCallback *self)
 {
     g_base_info_unref ( (GIBaseInfo *)self->info);
-
-    if (self->cache != NULL) {
-        pygi_callable_cache_free ( (PyGICallableCache *)self->cache);
-    }
-
-    Py_TYPE (self)->tp_free ((PyObject *)self);
 }
 
 void
index dcd9e6b..c796092 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_CCLOSURE_H__
 #define __PYGI_CCLOSURE_H__
 
 #include <Python.h>
-#include "pygi-cache.h"
 
 G_BEGIN_DECLS
 
-typedef struct {
-    PyObject_HEAD
-    GCallback callback;
-    GIFunctionInfo *info;
-    gpointer user_data;
-    GIScopeType scope;
-    GDestroyNotify destroy_notify_func;
-    PyGICCallbackCache *cache;
-} PyGICCallback;
-
 extern PyTypeObject PyGICCallback_Type;
 
 PyObject * _pygi_ccallback_new (GCallback       callback,
index 17b283f..c89be64 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-closure.h"
-#include "pygi-error.h"
-#include "pygi-marshal-cleanup.h"
-#include "pygi-invoke.h"
-#include "pygi-ccallback.h"
-#include "pygi-info.h"
-
-extern PyObject *_PyGIDefaultArgPlaceholder;
-
-typedef struct _PyGICallbackCache
-{
-    PyGIArgCache arg_cache;
-    gssize user_data_index;
-    gssize destroy_notify_index;
-    GIScopeType scope;
-    GIInterfaceInfo *interface_info;
-} PyGICallbackCache;
+#include "pygi-private.h"
 
 /* This maintains a list of closures which can be free'd whenever
    as they have been called.  We will free them on the next
@@ -42,499 +28,348 @@ typedef struct _PyGICallbackCache
 static GSList* async_free_list;
 
 static void
-_pygi_closure_assign_pyobj_to_retval (gpointer retval,
-                                      GIArgument *arg,
-                                      PyGIArgCache *arg_cache)
+_pygi_closure_assign_pyobj_to_out_argument (gpointer out_arg, PyObject *object,
+                                            GITypeInfo *type_info,
+                                            GITransfer transfer)
 {
-    if (retval == NULL)
-        return;
-
-    switch (arg_cache->type_tag) {
-        case GI_TYPE_TAG_BOOLEAN:
-           *((ffi_sarg *) retval) = arg->v_boolean;
-           break;
-        case GI_TYPE_TAG_INT8:
-           *((ffi_sarg *) retval) = arg->v_int8;
-           break;
-        case GI_TYPE_TAG_UINT8:
-           *((ffi_arg *) retval) = arg->v_uint8;
-           break;
-        case GI_TYPE_TAG_INT16:
-           *((ffi_sarg *) retval) = arg->v_int16;
-           break;
-        case GI_TYPE_TAG_UINT16:
-           *((ffi_arg *) retval) = arg->v_uint16;
-           break;
-        case GI_TYPE_TAG_INT32:
-           *((ffi_sarg *) retval) = arg->v_int32;
-           break;
-        case GI_TYPE_TAG_UINT32:
-           *((ffi_arg *) retval) = arg->v_uint32;
-           break;
-        case GI_TYPE_TAG_INT64:
-           *((ffi_sarg *) retval) = arg->v_int64;
-           break;
-        case GI_TYPE_TAG_UINT64:
-           *((ffi_arg *) retval) = arg->v_uint64;
-           break;
-        case GI_TYPE_TAG_FLOAT:
-           *((gfloat *) retval) = arg->v_float;
-           break;
-        case GI_TYPE_TAG_DOUBLE:
-           *((gdouble *) retval) = arg->v_double;
-           break;
-        case GI_TYPE_TAG_GTYPE:
-           *((ffi_arg *) retval) = arg->v_ulong;
-           break;
-        case GI_TYPE_TAG_UNICHAR:
-            *((ffi_arg *) retval) = arg->v_uint32;
-            break;
-        case GI_TYPE_TAG_INTERFACE:
-            {
-                GIBaseInfo *interface_info;
-
-                interface_info = ((PyGIInterfaceCache *) arg_cache)->interface_info;
+    GIArgument arg = _pygi_argument_from_object (object, type_info, transfer);
+    GITypeTag type_tag = g_type_info_get_tag (type_info);
 
-                switch (g_base_info_get_type (interface_info)) {
-                case GI_INFO_TYPE_ENUM:
-                    *(ffi_sarg *) retval = arg->v_int;
-                    break;
-                case GI_INFO_TYPE_FLAGS:
-                    *(ffi_arg *) retval = arg->v_uint;
-                    break;
-                default:
-                    *(ffi_arg *) retval = (ffi_arg) arg->v_pointer;
-                    break;
-                }
-
-                break;
-            }
-        default:
-            *(ffi_arg *) retval = (ffi_arg) arg->v_pointer;
-            break;
-      }
-}
-
-static void
-_pygi_closure_assign_pyobj_to_out_argument (gpointer out_arg,
-                                            GIArgument *arg,
-                                            PyGIArgCache *arg_cache)
-{
     if (out_arg == NULL)
         return;
 
-    switch (arg_cache->type_tag) {
+    switch (type_tag) {
         case GI_TYPE_TAG_BOOLEAN:
-           *((gboolean *) out_arg) = arg->v_boolean;
+           *((gboolean *) out_arg) = arg.v_boolean;
            break;
         case GI_TYPE_TAG_INT8:
-           *((gint8 *) out_arg) = arg->v_int8;
+           *((gint8 *) out_arg) = arg.v_int8;
            break;
         case GI_TYPE_TAG_UINT8:
-           *((guint8 *) out_arg) = arg->v_uint8;
+           *((guint8 *) out_arg) = arg.v_uint8;
            break;
         case GI_TYPE_TAG_INT16:
-           *((gint16 *) out_arg) = arg->v_int16;
+           *((gint16 *) out_arg) = arg.v_int16;
            break;
         case GI_TYPE_TAG_UINT16:
-           *((guint16 *) out_arg) = arg->v_uint16;
+           *((guint16 *) out_arg) = arg.v_uint16;
            break;
         case GI_TYPE_TAG_INT32:
-           *((gint32 *) out_arg) = arg->v_int32;
+           *((gint32 *) out_arg) = arg.v_int32;
            break;
         case GI_TYPE_TAG_UINT32:
-           *((guint32 *) out_arg) = arg->v_uint32;
+           *((guint32 *) out_arg) = arg.v_uint32;
            break;
         case GI_TYPE_TAG_INT64:
-           *((gint64 *) out_arg) = arg->v_int64;
+           *((gint64 *) out_arg) = arg.v_int64;
            break;
         case GI_TYPE_TAG_UINT64:
-           *((glong *) out_arg) = arg->v_uint64;
+           *((glong *) out_arg) = arg.v_uint64;
            break;
         case GI_TYPE_TAG_FLOAT:
-           *((gfloat *) out_arg) = arg->v_float;
+           *((gfloat *) out_arg) = arg.v_float;
            break;
         case GI_TYPE_TAG_DOUBLE:
-           *((gdouble *) out_arg) = arg->v_double;
-           break;
-        case GI_TYPE_TAG_GTYPE:
-           *((gulong *) out_arg) = arg->v_ulong;
+           *((gdouble *) out_arg) = arg.v_double;
            break;
-        case GI_TYPE_TAG_UNICHAR:
-            *((guint32 *) out_arg) = arg->v_uint32;
-            break;
-        case GI_TYPE_TAG_INTERFACE:
-        {
-           GIBaseInfo *interface_info;
-
-           interface_info = ((PyGIInterfaceCache *) arg_cache)->interface_info;
-
-           switch (g_base_info_get_type (interface_info)) {
-           case GI_INFO_TYPE_ENUM:
-               *(gint *) out_arg = arg->v_int;
-               break;
-           case GI_INFO_TYPE_FLAGS:
-               *(guint *) out_arg = arg->v_uint;
-               break;
-           case GI_INFO_TYPE_STRUCT:
-               if (!arg_cache->is_pointer) {
-                   if (arg->v_pointer != NULL) {
-                       gsize item_size = _pygi_g_type_info_size (arg_cache->type_info);
-                       memcpy (out_arg, arg->v_pointer, item_size);
-                   }
-                   break;
-               }
-
-           /* Fall through if pointer */
-           default:
-               *((gpointer *) out_arg) = arg->v_pointer;
-               break;
-           }
-           break;
-        }
-
         default:
-           *((gpointer *) out_arg) = arg->v_pointer;
+           *((GIArgument *) out_arg) = arg;
            break;
       }
 }
 
-static void
-_pygi_closure_convert_ffi_arguments (PyGIInvokeArgState *state,
-                                     PyGICallableCache *cache,
-                                     void **args)
+static GIArgument *
+_pygi_closure_convert_ffi_arguments (GICallableInfo *callable_info, void **args)
 {
-    guint i;
-
-    for (i = 0; i < _pygi_callable_cache_args_len (cache); i++) {
-        PyGIArgCache *arg_cache = g_ptr_array_index (cache->args_cache, i);
-
-        if (arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
-            state[i].arg_value.v_pointer = * (gpointer *) args[i];
-
-            if (state[i].arg_value.v_pointer == NULL)
-                continue;
-
-            state[i].arg_pointer.v_pointer = state[i].arg_value.v_pointer;
-            state[i].arg_value = *(GIArgument *) state[i].arg_value.v_pointer;
-            continue;
-        }
+    gint num_args, i;
+    GIArgInfo *arg_info;
+    GITypeInfo *arg_type;
+    GITypeTag tag;
+    GIDirection direction;
+    GIArgument *g_args;
+
+    num_args = g_callable_info_get_n_args (callable_info);
+    g_args = g_new0 (GIArgument, num_args);
+
+    for (i = 0; i < num_args; i++) {
+        arg_info = g_callable_info_get_arg (callable_info, i);
+        arg_type = g_arg_info_get_type (arg_info);
+        tag = g_type_info_get_tag (arg_type);
+        direction = g_arg_info_get_direction (arg_info);
+
+        if (direction == GI_DIRECTION_OUT || direction == GI_DIRECTION_INOUT) {
+            g_args[i].v_pointer = * (gpointer *) args[i];
+        } else {
+            switch (tag) {
+                case GI_TYPE_TAG_BOOLEAN:
+                    g_args[i].v_boolean = * (gboolean *) args[i];
+                    break;
+                case GI_TYPE_TAG_INT8:
+                    g_args[i].v_int8 = * (gint8 *) args[i];
+                    break;
+                case GI_TYPE_TAG_UINT8:
+                    g_args[i].v_uint8 = * (guint8 *) args[i];
+                    break;
+                case GI_TYPE_TAG_INT16:
+                    g_args[i].v_int16 = * (gint16 *) args[i];
+                    break;
+                case GI_TYPE_TAG_UINT16:
+                    g_args[i].v_uint16 = * (guint16 *) args[i];
+                    break;
+                case GI_TYPE_TAG_INT32:
+                    g_args[i].v_int32 = * (gint32 *) args[i];
+                    break;
+                case GI_TYPE_TAG_UINT32:
+                    g_args[i].v_uint32 = * (guint32 *) args[i];
+                    break;
+                case GI_TYPE_TAG_INT64:
+                    g_args[i].v_int64 = * (glong *) args[i];
+                    break;
+                case GI_TYPE_TAG_UINT64:
+                    g_args[i].v_uint64 = * (glong *) args[i];
+                    break;
+                case GI_TYPE_TAG_FLOAT:
+                    g_args[i].v_float = * (gfloat *) args[i];
+                    break;
+                case GI_TYPE_TAG_DOUBLE:
+                    g_args[i].v_double = * (gdouble *) args[i];
+                    break;
+                case GI_TYPE_TAG_UTF8:
+                    g_args[i].v_string = * (gchar **) args[i];
+                    break;
+                case GI_TYPE_TAG_INTERFACE:
+                {
+                    GIBaseInfo *interface;
+                    GIInfoType interface_type;
+
+                    interface = g_type_info_get_interface (arg_type);
+                    interface_type = g_base_info_get_type (interface);
+
+                    if (interface_type == GI_INFO_TYPE_OBJECT ||
+                            interface_type == GI_INFO_TYPE_INTERFACE) {
+                        g_args[i].v_pointer = * (gpointer *) args[i];
+                        g_base_info_unref (interface);
+                        break;
+                    } else if (interface_type == GI_INFO_TYPE_ENUM ||
+                               interface_type == GI_INFO_TYPE_FLAGS) {
+                        g_args[i].v_double = * (double *) args[i];
+                        g_base_info_unref (interface);
+                        break;
+                    } else if (interface_type == GI_INFO_TYPE_STRUCT ||
+                               interface_type == GI_INFO_TYPE_CALLBACK) {
+                        g_args[i].v_pointer = * (gpointer *) args[i];
+                        g_base_info_unref (interface);
+                        break;
+                    }
 
-        switch (arg_cache->type_tag) {
-            case GI_TYPE_TAG_BOOLEAN:
-                state[i].arg_value.v_boolean = * (gboolean *) args[i];
-                break;
-            case GI_TYPE_TAG_INT8:
-                state[i].arg_value.v_int8 = * (gint8 *) args[i];
-                break;
-            case GI_TYPE_TAG_UINT8:
-                state[i].arg_value.v_uint8 = * (guint8 *) args[i];
-                break;
-            case GI_TYPE_TAG_INT16:
-                state[i].arg_value.v_int16 = * (gint16 *) args[i];
-                break;
-            case GI_TYPE_TAG_UINT16:
-                state[i].arg_value.v_uint16 = * (guint16 *) args[i];
-                break;
-            case GI_TYPE_TAG_INT32:
-                state[i].arg_value.v_int32 = * (gint32 *) args[i];
-                break;
-            case GI_TYPE_TAG_UINT32:
-                state[i].arg_value.v_uint32 = * (guint32 *) args[i];
-                break;
-            case GI_TYPE_TAG_INT64:
-                state[i].arg_value.v_int64 = * (glong *) args[i];
-                break;
-            case GI_TYPE_TAG_UINT64:
-                state[i].arg_value.v_uint64 = * (glong *) args[i];
-                break;
-            case GI_TYPE_TAG_FLOAT:
-                state[i].arg_value.v_float = * (gfloat *) args[i];
-                break;
-            case GI_TYPE_TAG_DOUBLE:
-                state[i].arg_value.v_double = * (gdouble *) args[i];
-                break;
-            case GI_TYPE_TAG_UTF8:
-                state[i].arg_value.v_string = * (gchar **) args[i];
-                break;
-            case GI_TYPE_TAG_INTERFACE:
-            {
-                GIBaseInfo *interface;
-                GIInfoType interface_type;
-
-                interface = ((PyGIInterfaceCache *) arg_cache)->interface_info;
-                interface_type = g_base_info_get_type (interface);
-
-                if (interface_type == GI_INFO_TYPE_ENUM) {
-                    state[i].arg_value.v_int = * (gint *) args[i];
-                } else if (interface_type == GI_INFO_TYPE_FLAGS) {
-                    state[i].arg_value.v_uint = * (guint *) args[i];
-                } else {
-                    state[i].arg_value.v_pointer = * (gpointer *) args[i];
+                    g_base_info_unref (interface);
                 }
-                break;
+                case GI_TYPE_TAG_ERROR:
+                case GI_TYPE_TAG_GHASH:
+                case GI_TYPE_TAG_GLIST:
+                case GI_TYPE_TAG_GSLIST:
+                case GI_TYPE_TAG_VOID:
+                    g_args[i].v_pointer = * (gpointer *) args[i];
+                    break;
+                default:
+                    g_args[i].v_pointer = 0;
             }
-            case GI_TYPE_TAG_UNICHAR:
-                state[i].arg_value.v_uint32 = * (guint32 *) args[i];
-                break;
-            case GI_TYPE_TAG_ERROR:
-            case GI_TYPE_TAG_GHASH:
-            case GI_TYPE_TAG_GLIST:
-            case GI_TYPE_TAG_GSLIST:
-            case GI_TYPE_TAG_ARRAY:
-            case GI_TYPE_TAG_VOID:
-                state[i].arg_value.v_pointer = * (gpointer *) args[i];
-                break;
-            default:
-                g_warning ("Unhandled type tag %s",
-                           g_type_tag_to_string (arg_cache->type_tag));
-                state[i].arg_value.v_pointer = 0;
         }
+        g_base_info_unref ( (GIBaseInfo *) arg_info);
+        g_base_info_unref ( (GIBaseInfo *) arg_type);
     }
-
-    if (cache->throws) {
-        gssize error_index = _pygi_callable_cache_args_len (cache);
-
-        state[error_index].arg_value.v_pointer = * (gpointer *) args[error_index];
-    }
+    return g_args;
 }
 
 static gboolean
-_invoke_state_init_from_cache (PyGIInvokeState *state,
-                               PyGIClosureCache *closure_cache,
-                               void **args)
+_pygi_closure_convert_arguments (GICallableInfo *callable_info, void **args,
+                                 void *user_data, PyObject **py_args,
+                                 GIArgument **out_args)
 {
-    PyGICallableCache *cache = (PyGICallableCache *) closure_cache;
-
-    state->n_args = _pygi_callable_cache_args_len (cache);
-    state->n_py_in_args = state->n_args;
-
-    /* Increment after setting the number of Python input args */
-    if (cache->throws) {
-        state->n_args++;
-    }
-
-    state->py_in_args = PyTuple_New (state->n_py_in_args);
-    if (state->py_in_args == NULL) {
-        PyErr_NoMemory ();
-        return FALSE;
-    }
-
-    state->args = NULL;
-    state->error = NULL;
+    int n_args = g_callable_info_get_n_args (callable_info);
+    int n_in_args = 0;
+    int n_out_args = 0;
+    int i;
+    int user_data_arg = -1;
+    int destroy_notify_arg = -1;
+
+    GIArgument *g_args = NULL;
+
+    *py_args = NULL;
+    *py_args = PyTuple_New (n_args);
+    if (*py_args == NULL)
+        goto error;
+
+    *out_args = NULL;
+    *out_args = g_new0 (GIArgument, n_args);
+    g_args = _pygi_closure_convert_ffi_arguments (callable_info, args);
+
+    for (i = 0; i < n_args; i++) {
+        /* Special case callbacks and skip over userdata and Destroy Notify */
+        if (i == user_data_arg || i == destroy_notify_arg)
+            continue;
 
-    if (!_pygi_invoke_arg_state_init (state)) {
-        return FALSE;
-    }
+        GIArgInfo *arg_info = g_callable_info_get_arg (callable_info, i);
+        GIDirection direction = g_arg_info_get_direction (arg_info);
 
-    state->ffi_args = NULL;
+        if (direction == GI_DIRECTION_IN || direction == GI_DIRECTION_INOUT) {
+            GITypeInfo *arg_type = g_arg_info_get_type (arg_info);
+            GITypeTag arg_tag = g_type_info_get_tag (arg_type);
+            GITransfer transfer = g_arg_info_get_ownership_transfer (arg_info);
+            PyObject *value;
+            GIArgument *arg;
 
-    _pygi_closure_convert_ffi_arguments (state->args, cache, args);
-    return TRUE;
-}
+            if (direction == GI_DIRECTION_IN && arg_tag == GI_TYPE_TAG_VOID &&
+                    g_type_info_is_pointer (arg_type)) {
 
-static void
-_invoke_state_clear (PyGIInvokeState *state)
-{
-    _pygi_invoke_arg_state_free (state);
-    Py_XDECREF (state->py_in_args);
-}
+                if (user_data == NULL) {
+                    Py_INCREF (Py_None);
+                    value = Py_None;
+                } else {
+                    value = user_data;
+                    Py_INCREF (value);
+                }
+            } else if (direction == GI_DIRECTION_IN &&
+                       arg_tag == GI_TYPE_TAG_INTERFACE) {
+                /* Handle callbacks as a special case */
+                GIBaseInfo *info;
+                GIInfoType info_type;
 
-static gboolean
-_pygi_closure_convert_arguments (PyGIInvokeState *state,
-                                 PyGIClosureCache *closure_cache)
-{
-    PyGICallableCache *cache = (PyGICallableCache *) closure_cache;
-    gssize n_in_args = 0;
-    gssize i;
+                info = g_type_info_get_interface (arg_type);
+                info_type = g_base_info_get_type (info);
 
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (cache); i++) {
-        PyGIArgCache *arg_cache;
+                arg = (GIArgument*) &g_args[i];
 
-        arg_cache = g_ptr_array_index (cache->args_cache, i);
+                if (info_type == GI_INFO_TYPE_CALLBACK) {
+                    gpointer user_data = NULL;
+                    GDestroyNotify destroy_notify = NULL;
+                    GIScopeType scope = g_arg_info_get_scope(arg_info);
 
-        if (arg_cache->direction & PYGI_DIRECTION_TO_PYTHON) {
-            PyObject *value;
+                    user_data_arg = g_arg_info_get_closure(arg_info);
+                    destroy_notify_arg = g_arg_info_get_destroy(arg_info);
 
-            if (cache->user_data_index == i) {
-                if (state->user_data == NULL) {
-                    /* user_data can be NULL for connect functions which don't accept
-                     * user_data or as the default for user_data in the middle of function
-                     * arguments.
-                     */
-                    Py_INCREF (Py_None);
-                    value = Py_None;
-                } else {
-                    /* Extend the callbacks args with user_data as variable args. */
-                    gssize j, user_data_len;
-                    PyObject *py_user_data = state->user_data;
+                    if (user_data_arg != -1)
+                        user_data = g_args[user_data_arg].v_pointer;
 
-                    if (!PyTuple_Check (py_user_data)) {
-                        PyErr_SetString (PyExc_TypeError, "expected tuple for callback user_data");
-                        return FALSE;
-                    }
+                    if (destroy_notify_arg != -1)
+                        user_data = (GDestroyNotify) g_args[destroy_notify_arg].v_pointer;
 
-                    user_data_len = PyTuple_Size (py_user_data);
-                    _PyTuple_Resize (&state->py_in_args,
-                                     state->n_py_in_args + user_data_len - 1);
+                    value = _pygi_ccallback_new(arg->v_pointer,
+                                                user_data,
+                                                scope,
+                                                (GIFunctionInfo *) info,
+                                                destroy_notify);
+                } else
+                    value = _pygi_argument_to_object (arg, arg_type, transfer);
 
-                    for (j = 0; j < user_data_len; j++, n_in_args++) {
-                        value = PyTuple_GetItem (py_user_data, j);
-                        Py_INCREF (value);
-                        PyTuple_SET_ITEM (state->py_in_args, n_in_args, value);
-                    }
-                    /* We can assume user_data args are never going to be inout,
-                     * so just continue here.
-                     */
-                    continue;
+                g_base_info_unref (info);
+                if (value == NULL) {
+                    g_base_info_unref (arg_type);
+                    g_base_info_unref (arg_info);
+                    goto error;
                 }
-            } else if (arg_cache->meta_type != PYGI_META_ARG_TYPE_PARENT) {
-                continue;
             } else {
-                value = arg_cache->to_py_marshaller (state,
-                                                     cache,
-                                                     arg_cache,
-                                                     &state->args[i].arg_value);
+                if (direction == GI_DIRECTION_IN)
+                    arg = (GIArgument*) &g_args[i];
+                else
+                    arg = (GIArgument*) g_args[i].v_pointer;
 
+                value = _pygi_argument_to_object (arg, arg_type, transfer);
                 if (value == NULL) {
-                    pygi_marshal_cleanup_args_to_py_parameter_fail (state,
-                                                                    cache,
-                                                                    i);
-                    return FALSE;
+                    g_base_info_unref (arg_type);
+                    g_base_info_unref (arg_info);
+                    goto error;
                 }
             }
-
-            PyTuple_SET_ITEM (state->py_in_args, n_in_args, value);
+            PyTuple_SET_ITEM (*py_args, n_in_args, value);
             n_in_args++;
+
+            g_base_info_unref (arg_type);
+        }
+
+        if (direction == GI_DIRECTION_OUT || direction == GI_DIRECTION_INOUT) {
+            (*out_args) [n_out_args] = g_args[i];
+            n_out_args++;
         }
+
+        g_base_info_unref (arg_info);
     }
 
-    if (_PyTuple_Resize (&state->py_in_args, n_in_args) == -1)
-        return FALSE;
+    if (_PyTuple_Resize (py_args, n_in_args) == -1)
+        goto error;
 
+    g_free (g_args);
     return TRUE;
+
+error:
+    Py_CLEAR (*py_args);
+    g_free (*out_args);
+    *out_args = NULL;
+    g_free (g_args);
+
+    return FALSE;
 }
 
-static gboolean
-_pygi_closure_set_out_arguments (PyGIInvokeState *state,
-                                 PyGICallableCache *cache,
-                                 PyObject *py_retval,
+static void
+_pygi_closure_set_out_arguments (GICallableInfo *callable_info,
+                                 PyObject *py_retval, GIArgument *out_args,
                                  void *resp)
 {
-    gssize i;
-    gssize i_py_retval = 0;
-    gboolean success;
-
-    if (cache->return_cache->type_tag != GI_TYPE_TAG_VOID) {
-        PyObject *item = py_retval;
-
+    int n_args, i, i_py_retval, i_out_args;
+    GITypeInfo *return_type_info;
+    GITypeTag return_type_tag;
+
+    i_py_retval = 0;
+    return_type_info = g_callable_info_get_return_type (callable_info);
+    return_type_tag = g_type_info_get_tag (return_type_info);
+    if (return_type_tag != GI_TYPE_TAG_VOID) {
+        GITransfer transfer = g_callable_info_get_caller_owns (callable_info);
         if (PyTuple_Check (py_retval)) {
-            item = PyTuple_GET_ITEM (py_retval, 0);
-        }
-
-        success = cache->return_cache->from_py_marshaller (state,
-                                                           cache,
-                                                           cache->return_cache,
-                                                           item,
-                                                           &state->return_arg,
-                                                           &state->args[0].arg_cleanup_data);
-
-        if (!success) {
-            pygi_marshal_cleanup_args_return_fail (state,
-                                                   cache);
-            return FALSE;
+            PyObject *item = PyTuple_GET_ITEM (py_retval, 0);
+            _pygi_closure_assign_pyobj_to_out_argument (resp, item,
+                return_type_info, transfer);
+        } else {
+            _pygi_closure_assign_pyobj_to_out_argument (resp, py_retval,
+                return_type_info, transfer);
         }
-
-        _pygi_closure_assign_pyobj_to_retval (resp, &state->return_arg,
-                                              cache->return_cache);
         i_py_retval++;
     }
-
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (cache); i++) {
-        PyGIArgCache *arg_cache = g_ptr_array_index (cache->args_cache, i);
-
-        if (arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
-            PyObject *item = py_retval;
-
-            if (arg_cache->type_tag == GI_TYPE_TAG_ERROR) {
-                * (GError **) state->args[i].arg_pointer.v_pointer = NULL;
+    g_base_info_unref (return_type_info);
+
+    i_out_args = 0;
+    n_args = g_callable_info_get_n_args (callable_info);
+    for (i = 1; i < n_args; i++) {
+        GIArgInfo *arg_info = g_callable_info_get_arg (callable_info, i);
+        GITypeInfo *type_info = g_arg_info_get_type (arg_info);
+        GIDirection direction = g_arg_info_get_direction (arg_info);
+
+        if (direction == GI_DIRECTION_OUT || direction == GI_DIRECTION_INOUT) {
+            GITransfer transfer = g_arg_info_get_ownership_transfer (arg_info);
+
+            if (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ERROR) {
+                /* TODO: check if an exception has been set and convert it to a GError */
+                out_args[i_out_args].v_pointer = NULL;
+                i_out_args++;
                 continue;
             }
 
             if (PyTuple_Check (py_retval)) {
-                item = PyTuple_GET_ITEM (py_retval, i_py_retval);
-            } else if (i_py_retval != 0) {
-                pygi_marshal_cleanup_args_to_py_parameter_fail (state,
-                                                                cache,
-                                                                i_py_retval);
-                return FALSE;
-            }
-
-            success = arg_cache->from_py_marshaller (state,
-                                                     cache,
-                                                     arg_cache,
-                                                     item,
-                                                     &state->args[i].arg_value,
-                                                     &state->args[i_py_retval].arg_cleanup_data);
-
-            if (!success) {
-                pygi_marshal_cleanup_args_to_py_parameter_fail (state,
-                                                                cache,
-                                                                i_py_retval);
-                return FALSE;
-            }
-
-            _pygi_closure_assign_pyobj_to_out_argument (state->args[i].arg_pointer.v_pointer,
-                                                        &state->args[i].arg_value, arg_cache);
-
+                PyObject *item = PyTuple_GET_ITEM (py_retval, i_py_retval);
+                _pygi_closure_assign_pyobj_to_out_argument (
+                    out_args[i_out_args].v_pointer, item, type_info, transfer);
+            } else if (i_py_retval == 0) {
+                _pygi_closure_assign_pyobj_to_out_argument (
+                    out_args[i_out_args].v_pointer, py_retval, type_info,
+                    transfer);
+            } else
+                g_assert_not_reached();
+
+            i_out_args++;
             i_py_retval++;
         }
+        g_base_info_unref (type_info);
+        g_base_info_unref (arg_info);
     }
-
-    return TRUE;
-}
-
-static void
-_pygi_closure_clear_retvals (PyGIInvokeState *state,
-                             PyGICallableCache *cache,
-                             gpointer resp)
-{
-    gsize i;
-    GIArgument arg = { 0, };
-
-    if (cache->return_cache->type_tag != GI_TYPE_TAG_VOID) {
-        _pygi_closure_assign_pyobj_to_retval (resp, &arg,
-                                              cache->return_cache);
-    }
-
-    for (i = 0; i < _pygi_callable_cache_args_len (cache); i++) {
-        PyGIArgCache *arg_cache = g_ptr_array_index (cache->args_cache, i);
-
-        if (arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
-            _pygi_closure_assign_pyobj_to_out_argument (state->args[i].arg_pointer.v_pointer,
-                                                        &arg, arg_cache);
-        }
-    }
-
-    if (cache->throws) {
-        gssize error_index = state->n_args - 1;
-        GError **error = (GError **) state->args[error_index].arg_value.v_pointer;
-
-        if (error != NULL) {
-            pygi_gerror_exception_check (error);
-        }
-    }
-}
-
-static void
-_pygi_invoke_closure_clear_py_data(PyGICClosure *invoke_closure)
-{
-    PyGILState_STATE state = PyGILState_Ensure();
-
-    Py_CLEAR (invoke_closure->function);
-    Py_CLEAR (invoke_closure->user_data);
-
-    PyGILState_Release (state);
 }
 
 void
@@ -543,68 +378,52 @@ _pygi_closure_handle (ffi_cif *cif,
                       void   **args,
                       void    *data)
 {
-    PyGILState_STATE py_state;
+    PyGILState_STATE state;
     PyGICClosure *closure = data;
+    GITypeTag  return_tag;
+    GITransfer return_transfer;
+    GITypeInfo *return_type;
     PyObject *retval;
-    gboolean success;
-    PyGIInvokeState state = { 0, };
-
-    /* Ignore closures when Python is not initialized. This can happen in cases
-     * where calling Python implemented vfuncs can happen at shutdown time.
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=722562 */
-    if (!Py_IsInitialized()) {
-        return;
-    }
+    PyObject *py_args;
+    GIArgument *out_args = NULL;
 
     /* Lock the GIL as we are coming into this code without the lock and we
       may be executing python code */
-    py_state = PyGILState_Ensure ();
-
-    if (closure->cache == NULL) {
-        closure->cache = pygi_closure_cache_new ((GICallableInfo *) closure->info);
-
-        if (closure->cache == NULL)
-            goto end;
-    }
-
-    state.user_data = closure->user_data;
+    state = PyGILState_Ensure();
 
-    _invoke_state_init_from_cache (&state, closure->cache, args);
+    return_type = g_callable_info_get_return_type (closure->info);
+    return_tag = g_type_info_get_tag (return_type);
+    return_transfer = g_callable_info_get_caller_owns (closure->info);
 
-    if (!_pygi_closure_convert_arguments (&state, closure->cache)) {
-        _pygi_closure_clear_retvals (&state, closure->cache, result);
+    if (!_pygi_closure_convert_arguments ( (GICallableInfo *) closure->info, args,
+                                           closure->user_data,
+                                           &py_args, &out_args)) {
+        if (PyErr_Occurred ())
+            PyErr_Print();
         goto end;
     }
 
-    retval = PyObject_CallObject ( (PyObject *) closure->function, state.py_in_args);
+    retval = PyObject_CallObject ( (PyObject *) closure->function, py_args);
+    Py_DECREF (py_args);
 
     if (retval == NULL) {
-        _pygi_closure_clear_retvals (&state, closure->cache, result);
+        PyErr_Print();
         goto end;
     }
 
-    pygi_marshal_cleanup_args_to_py_marshal_success (&state, closure->cache);
-    success = _pygi_closure_set_out_arguments (&state, closure->cache, retval, result);
-
-    if (!success) {
-        pygi_marshal_cleanup_args_from_py_marshal_success (&state, closure->cache);
-        _pygi_closure_clear_retvals (&state, closure->cache, result);
-    }
-
-    Py_DECREF (retval);
+    _pygi_closure_set_out_arguments (closure->info, retval, out_args, result);
 
 end:
+    g_free (out_args);
+    g_base_info_unref ( (GIBaseInfo*) return_type);
 
-    if (PyErr_Occurred ())
-        PyErr_Print ();
+    PyGILState_Release (state);
 
     /* Now that the closure has finished we can make a decision about how
-       to free it.  Scope call gets free'd at the end of wrap_g_function_info_invoke.
-       Scope notified will be freed when the notify is called.
-       Scope async closures free only their python data now and the closure later
-       during the next creation of a closure. This minimizes potential ref leaks
-       at least in regards to the python objects.
-       (you can't free the closure you are currently using!)
+       to free it.  Scope call gets free'd at the end of wrap_g_function_info_invoke
+       scope notified will be freed,  when the notify is called and we can free async
+       anytime we want as long as its after we return from this function (you can't free the closure
+       you are currently using!)
     */
     switch (closure->scope) {
         case GI_SCOPE_TYPE_CALL:
@@ -613,32 +432,30 @@ end:
         case GI_SCOPE_TYPE_ASYNC:
             /* Append this PyGICClosure to a list of closure that we will free
                after we're done with this function invokation */
-            _pygi_invoke_closure_clear_py_data(closure);
             async_free_list = g_slist_prepend (async_free_list, closure);
             break;
         default:
             g_error ("Invalid scope reached inside %s.  Possibly a bad annotation?",
                      g_base_info_get_name (closure->info));
     }
-
-    _invoke_state_clear (&state);
-    PyGILState_Release (py_state);
 }
 
 void _pygi_invoke_closure_free (gpointer data)
 {
+    PyGILState_STATE state;
     PyGICClosure* invoke_closure = (PyGICClosure *) data;
 
+    state = PyGILState_Ensure();
+    Py_DECREF (invoke_closure->function);
+
     g_callable_info_free_closure (invoke_closure->info,
                                   invoke_closure->closure);
 
     if (invoke_closure->info)
         g_base_info_unref ( (GIBaseInfo*) invoke_closure->info);
 
-    if (invoke_closure->cache != NULL)
-        pygi_callable_cache_free ((PyGICallableCache *) invoke_closure->cache);
-
-    _pygi_invoke_closure_clear_py_data(invoke_closure);
+    Py_XDECREF (invoke_closure->user_data);
+    PyGILState_Release (state);
 
     g_slice_free (PyGICClosure, invoke_closure);
 }
@@ -664,7 +481,8 @@ _pygi_make_native_closure (GICallableInfo* info,
     closure->user_data = py_user_data;
 
     Py_INCREF (py_function);
-    Py_XINCREF (closure->user_data);
+    if (closure->user_data)
+        Py_INCREF (closure->user_data);
 
     fficlosure =
         g_callable_info_prepare_closure (info, &closure->cif, _pygi_closure_handle,
@@ -677,268 +495,3 @@ _pygi_make_native_closure (GICallableInfo* info,
 
     return closure;
 }
-
-/* _pygi_destroy_notify_dummy:
- *
- * Dummy method used in the occasion when a method has a GDestroyNotify
- * argument without user data.
- */
-static void
-_pygi_destroy_notify_dummy (gpointer data) {
-}
-
-static gboolean
-_pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
-                                          PyGICallableCache *callable_cache,
-                                          PyGIArgCache      *arg_cache,
-                                          PyObject          *py_arg,
-                                          GIArgument        *arg,
-                                          gpointer          *cleanup_data)
-{
-    GICallableInfo *callable_info;
-    PyGICClosure *closure;
-    PyGIArgCache *user_data_cache = NULL;
-    PyGIArgCache *destroy_cache = NULL;
-    PyGICallbackCache *callback_cache;
-    PyObject *py_user_data = NULL;
-
-    callback_cache = (PyGICallbackCache *)arg_cache;
-
-    if (callback_cache->user_data_index > 0) {
-        user_data_cache = _pygi_callable_cache_get_arg (callable_cache, callback_cache->user_data_index);
-        if (user_data_cache->py_arg_index < state->n_py_in_args) {
-            /* py_user_data is a borrowed reference. */
-            py_user_data = PyTuple_GetItem (state->py_in_args, user_data_cache->py_arg_index);
-            if (!py_user_data)
-                return FALSE;
-            /* NULL out user_data if it was not supplied and the default arg placeholder
-             * was used instead.
-             */
-            if (py_user_data == _PyGIDefaultArgPlaceholder) {
-                py_user_data = NULL;
-            } else if (callable_cache->user_data_varargs_index < 0) {
-                /* For non-variable length user data, place the user data in a
-                 * single item tuple which is concatenated to the callbacks arguments.
-                 * This allows callback input arg marshaling to always expect a
-                 * tuple for user data. Note the
-                 */
-                py_user_data = Py_BuildValue("(O)", py_user_data, NULL);
-            } else {
-                /* increment the ref borrowed from PyTuple_GetItem above */
-                Py_INCREF (py_user_data);
-            }
-        }
-    }
-
-    if (py_arg == Py_None) {
-        return TRUE;
-    }
-
-    if (!PyCallable_Check (py_arg)) {
-        PyErr_Format (PyExc_TypeError,
-                      "Callback needs to be a function or method not %s",
-                      py_arg->ob_type->tp_name);
-
-        return FALSE;
-    }
-
-    callable_info = (GICallableInfo *)callback_cache->interface_info;
-
-    closure = _pygi_make_native_closure (callable_info, callback_cache->scope, py_arg, py_user_data);
-    arg->v_pointer = closure->closure;
-
-    /* always decref the user data as _pygi_make_native_closure adds its own ref */
-    Py_XDECREF (py_user_data);
-
-    /* The PyGICClosure instance is used as user data passed into the C function.
-     * The return trip to python will marshal this back and pull the python user data out.
-     */
-    if (user_data_cache != NULL) {
-        state->args[user_data_cache->c_arg_index].arg_value.v_pointer = closure;
-    }
-
-    /* Setup a GDestroyNotify callback if this method supports it along with
-     * a user data field. The user data field is a requirement in order
-     * free resources and ref counts associated with this arguments closure.
-     * In case a user data field is not available, show a warning giving
-     * explicit information and setup a dummy notification to avoid a crash
-     * later on in _pygi_destroy_notify_callback_closure.
-     */
-    if (callback_cache->destroy_notify_index > 0) {
-        destroy_cache = _pygi_callable_cache_get_arg (callable_cache, callback_cache->destroy_notify_index);
-    }
-
-    if (destroy_cache) {
-        if (user_data_cache != NULL) {
-            state->args[destroy_cache->c_arg_index].arg_value.v_pointer = _pygi_invoke_closure_free;
-        } else {
-            char *full_name = pygi_callable_cache_get_full_name (callable_cache);
-            gchar *msg = g_strdup_printf("Callables passed to %s will leak references because "
-                                         "the method does not support a user_data argument. "
-                                         "See: https://bugzilla.gnome.org/show_bug.cgi?id=685598",
-                                         full_name);
-            g_free (full_name);
-            if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 2)) {
-                g_free(msg);
-                _pygi_invoke_closure_free(closure);
-                return FALSE;
-            }
-            g_free(msg);
-            state->args[destroy_cache->c_arg_index].arg_value.v_pointer = _pygi_destroy_notify_dummy;
-        }
-    }
-
-    /* Use the PyGIClosure as data passed to cleanup for GI_SCOPE_TYPE_CALL. */
-    *cleanup_data = closure;
-
-    return TRUE;
-}
-
-static PyObject *
-_pygi_marshal_to_py_interface_callback (PyGIInvokeState   *state,
-                                        PyGICallableCache *callable_cache,
-                                        PyGIArgCache      *arg_cache,
-                                        GIArgument        *arg)
-{
-    PyGICallbackCache *callback_cache = (PyGICallbackCache *) arg_cache;
-    gssize user_data_index;
-    gssize destroy_notify_index;
-    gpointer user_data = NULL;
-    GDestroyNotify destroy_notify = NULL;
-
-    user_data_index = callback_cache->user_data_index;
-    destroy_notify_index = callback_cache->destroy_notify_index;
-
-    if (user_data_index != -1)
-        user_data = state->args[user_data_index].arg_value.v_pointer;
-
-    if (destroy_notify_index != -1)
-        destroy_notify = state->args[destroy_notify_index].arg_value.v_pointer;
-
-    return _pygi_ccallback_new (arg->v_pointer,
-                                user_data,
-                                callback_cache->scope,
-                                (GIFunctionInfo *) callback_cache->interface_info,
-                                destroy_notify);
-}
-
-static void
-_callback_cache_free_func (PyGICallbackCache *cache)
-{
-    if (cache != NULL) {
-        if (cache->interface_info != NULL)
-            g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
-
-        g_slice_free (PyGICallbackCache, cache);
-    }
-}
-
-static void
-_pygi_marshal_cleanup_from_py_interface_callback (PyGIInvokeState *state,
-                                                  PyGIArgCache    *arg_cache,
-                                                  PyObject        *py_arg,
-                                                  gpointer         data,
-                                                  gboolean         was_processed)
-{
-    PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
-
-    if (was_processed && callback_cache->scope == GI_SCOPE_TYPE_CALL) {
-        _pygi_invoke_closure_free (data);
-    }
-}
-
-static gboolean
-pygi_arg_callback_setup_from_info (PyGICallbackCache  *arg_cache,
-                                   GITypeInfo         *type_info,
-                                   GIArgInfo          *arg_info,   /* may be null */
-                                   GITransfer          transfer,
-                                   PyGIDirection       direction,
-                                   GIInterfaceInfo    *iface_info,
-                                   PyGICallableCache  *callable_cache)
-{
-    PyGIArgCache *cache = (PyGIArgCache *)arg_cache;
-    gssize child_offset = 0;
-
-    if (!pygi_arg_base_setup ((PyGIArgCache *)arg_cache,
-                              type_info,
-                              arg_info,
-                              transfer,
-                              direction)) {
-        return FALSE;
-    }
-
-    if (callable_cache != NULL)
-        child_offset = callable_cache->args_offset;
-
-    ( (PyGIArgCache *)arg_cache)->destroy_notify = (GDestroyNotify)_callback_cache_free_func;
-
-    arg_cache->user_data_index = g_arg_info_get_closure (arg_info);
-    if (arg_cache->user_data_index != -1)
-        arg_cache->user_data_index += child_offset;
-
-    arg_cache->destroy_notify_index = g_arg_info_get_destroy (arg_info);
-    if (arg_cache->destroy_notify_index != -1)
-        arg_cache->destroy_notify_index += child_offset;
-
-    if (arg_cache->user_data_index >= 0) {
-        PyGIArgCache *user_data_arg_cache = pygi_arg_cache_alloc ();
-        user_data_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_WITH_PYARG;
-        user_data_arg_cache->direction = direction;
-        user_data_arg_cache->has_default = TRUE; /* always allow user data with a NULL default. */
-        _pygi_callable_cache_set_arg (callable_cache, arg_cache->user_data_index,
-                                      user_data_arg_cache);
-    }
-
-    if (arg_cache->destroy_notify_index >= 0) {
-        PyGIArgCache *destroy_arg_cache = pygi_arg_cache_alloc ();
-        destroy_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
-        destroy_arg_cache->direction = direction;
-        _pygi_callable_cache_set_arg (callable_cache, arg_cache->destroy_notify_index,
-                                      destroy_arg_cache);
-    }
-
-    arg_cache->scope = g_arg_info_get_scope (arg_info);
-    g_base_info_ref( (GIBaseInfo *)iface_info);
-    arg_cache->interface_info = iface_info;
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        cache->from_py_marshaller = _pygi_marshal_from_py_interface_callback;
-        cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_callback;
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        cache->to_py_marshaller = _pygi_marshal_to_py_interface_callback;
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_callback_new_from_info  (GITypeInfo        *type_info,
-                                  GIArgInfo         *arg_info,   /* may be null */
-                                  GITransfer         transfer,
-                                  PyGIDirection      direction,
-                                  GIInterfaceInfo   *iface_info,
-                                  PyGICallableCache *callable_cache)
-{
-    gboolean res = FALSE;
-    PyGICallbackCache *callback_cache;
-
-    callback_cache = g_slice_new0 (PyGICallbackCache);
-    if (callback_cache == NULL)
-        return NULL;
-
-    res = pygi_arg_callback_setup_from_info (callback_cache,
-                                             type_info,
-                                             arg_info,
-                                             transfer,
-                                             direction,
-                                             iface_info,
-                                             callable_cache);
-    if (res) {
-        return (PyGIArgCache *)callback_cache;
-    } else {
-        pygi_arg_cache_free ((PyGIArgCache *)callback_cache);
-        return NULL;
-    }
-}
index c0e8421..6f98339 100644 (file)
@@ -12,7 +12,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_CLOSURE_H__
@@ -22,8 +24,6 @@
 #include <girffi.h>
 #include <ffi.h>
 
-#include "pygi-cache.h"
-
 G_BEGIN_DECLS
 
 
@@ -40,8 +40,6 @@ typedef struct _PyGICClosure
     GIScopeType scope;
 
     PyObject* user_data;
-
-    PyGIClosureCache *cache;
 } PyGICClosure;
 
 void _pygi_closure_handle (ffi_cif *cif, void *result, void
@@ -54,13 +52,6 @@ PyGICClosure* _pygi_make_native_closure (GICallableInfo* info,
                                          PyObject *function,
                                          gpointer user_data);
 
-PyGIArgCache *pygi_arg_callback_new_from_info  (GITypeInfo        *type_info,
-                                                GIArgInfo         *arg_info,   /* may be null */
-                                                GITransfer         transfer,
-                                                PyGIDirection      direction,
-                                                GIInterfaceInfo   *iface_info,
-                                                PyGICallableCache *callable_cache);
-
 G_END_DECLS
 
 #endif /* __PYGI_CLOSURE_H__ */
diff --git a/gi/pygi-enum-marshal.c b/gi/pygi-enum-marshal.c
deleted file mode 100644 (file)
index 11c2049..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include <glib.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-enum-marshal.h"
-#include "pygi-type.h"
-#include "pygenum.h"
-#include "pygflags.h"
-
-static gboolean
-gi_argument_from_c_long (GIArgument *arg_out,
-                         long        c_long_in,
-                         GITypeTag   type_tag)
-{
-    switch (type_tag) {
-      case GI_TYPE_TAG_INT8:
-          arg_out->v_int8 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_UINT8:
-          arg_out->v_uint8 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_INT16:
-          arg_out->v_int16 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_UINT16:
-          arg_out->v_uint16 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_INT32:
-          arg_out->v_int32 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_UINT32:
-          arg_out->v_uint32 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_INT64:
-          arg_out->v_int64 = c_long_in;
-          return TRUE;
-      case GI_TYPE_TAG_UINT64:
-          arg_out->v_uint64 = c_long_in;
-          return TRUE;
-      default:
-          PyErr_Format (PyExc_TypeError,
-                        "Unable to marshal C long %ld to %s",
-                        c_long_in,
-                        g_type_tag_to_string (type_tag));
-          return FALSE;
-    }
-}
-
-static gboolean
-gi_argument_to_c_long (GIArgument *arg_in,
-                       long *c_long_out,
-                       GITypeTag type_tag)
-{
-    switch (type_tag) {
-      case GI_TYPE_TAG_INT8:
-          *c_long_out = arg_in->v_int8;
-          return TRUE;
-      case GI_TYPE_TAG_UINT8:
-          *c_long_out = arg_in->v_uint8;
-          return TRUE;
-      case GI_TYPE_TAG_INT16:
-          *c_long_out = arg_in->v_int16;
-          return TRUE;
-      case GI_TYPE_TAG_UINT16:
-          *c_long_out = arg_in->v_uint16;
-          return TRUE;
-      case GI_TYPE_TAG_INT32:
-          *c_long_out = arg_in->v_int32;
-          return TRUE;
-      case GI_TYPE_TAG_UINT32:
-          *c_long_out = arg_in->v_uint32;
-          return TRUE;
-      case GI_TYPE_TAG_INT64:
-          *c_long_out = arg_in->v_int64;
-          return TRUE;
-      case GI_TYPE_TAG_UINT64:
-          *c_long_out = arg_in->v_uint64;
-          return TRUE;
-      default:
-          PyErr_Format (PyExc_TypeError,
-                        "Unable to marshal %s to C long",
-                        g_type_tag_to_string (type_tag));
-          return FALSE;
-    }
-}
-
-static gboolean
-_pygi_marshal_from_py_interface_enum (PyGIInvokeState   *state,
-                                      PyGICallableCache *callable_cache,
-                                      PyGIArgCache      *arg_cache,
-                                      PyObject          *py_arg,
-                                      GIArgument        *arg,
-                                      gpointer          *cleanup_data)
-{
-    PyObject *py_long;
-    long c_long;
-    gint is_instance;
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-    GIBaseInfo *interface = NULL;
-
-    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
-
-    py_long = PYGLIB_PyNumber_Long (py_arg);
-    if (py_long == NULL) {
-        PyErr_Clear();
-        goto err;
-    }
-
-    c_long = PYGLIB_PyLong_AsLong (py_long);
-    Py_DECREF (py_long);
-
-    /* Write c_long into arg */
-    interface = g_type_info_get_interface (arg_cache->type_info);
-    assert(g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
-    if (!gi_argument_from_c_long(arg,
-                                 c_long,
-                                 g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
-          g_assert_not_reached();
-          g_base_info_unref (interface);
-          return FALSE;
-    }
-
-    /* If this is not an instance of the Enum type that we want
-     * we need to check if the value is equivilant to one of the
-     * Enum's memebers */
-    if (!is_instance) {
-        int i;
-        gboolean is_found = FALSE;
-
-        for (i = 0; i < g_enum_info_get_n_values (iface_cache->interface_info); i++) {
-            GIValueInfo *value_info =
-                g_enum_info_get_value (iface_cache->interface_info, i);
-            glong enum_value = g_value_info_get_value (value_info);
-            g_base_info_unref ( (GIBaseInfo *)value_info);
-            if (c_long == enum_value) {
-                is_found = TRUE;
-                break;
-            }
-        }
-
-        if (!is_found)
-            goto err;
-    }
-
-    g_base_info_unref (interface);
-    return TRUE;
-
-err:
-    if (interface)
-        g_base_info_unref (interface);
-    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
-                  iface_cache->type_name, py_arg->ob_type->tp_name);
-    return FALSE;
-}
-
-static gboolean
-_pygi_marshal_from_py_interface_flags (PyGIInvokeState   *state,
-                                       PyGICallableCache *callable_cache,
-                                       PyGIArgCache      *arg_cache,
-                                       PyObject          *py_arg,
-                                       GIArgument        *arg,
-                                       gpointer          *cleanup_data)
-{
-    PyObject *py_long;
-    long c_long;
-    gint is_instance;
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-    GIBaseInfo *interface;
-
-    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
-
-    py_long = PYGLIB_PyNumber_Long (py_arg);
-    if (py_long == NULL) {
-        PyErr_Clear ();
-        goto err;
-    }
-
-    c_long = PYGLIB_PyLong_AsLong (py_long);
-    Py_DECREF (py_long);
-
-    /* only 0 or argument of type Flag is allowed */
-    if (!is_instance && c_long != 0)
-        goto err;
-
-    /* Write c_long into arg */
-    interface = g_type_info_get_interface (arg_cache->type_info);
-    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
-    if (!gi_argument_from_c_long(arg, c_long,
-                                 g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
-        g_base_info_unref (interface);
-        return FALSE;
-    }
-
-    g_base_info_unref (interface);
-    return TRUE;
-
-err:
-    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
-                  iface_cache->type_name, py_arg->ob_type->tp_name);
-    return FALSE;
-
-}
-
-static PyObject *
-_pygi_marshal_to_py_interface_enum (PyGIInvokeState   *state,
-                                    PyGICallableCache *callable_cache,
-                                    PyGIArgCache      *arg_cache,
-                                    GIArgument        *arg)
-{
-    PyObject *py_obj = NULL;
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-    GIBaseInfo *interface;
-    long c_long;
-
-    interface = g_type_info_get_interface (arg_cache->type_info);
-    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
-
-    if (!gi_argument_to_c_long(arg, &c_long,
-                               g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
-        return NULL;
-    }
-
-    if (iface_cache->g_type == G_TYPE_NONE) {
-        py_obj = PyObject_CallFunction (iface_cache->py_type, "l", c_long);
-    } else {
-        py_obj = pyg_enum_from_gtype (iface_cache->g_type, c_long);
-    }
-    g_base_info_unref (interface);
-    return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_interface_flags (PyGIInvokeState   *state,
-                                     PyGICallableCache *callable_cache,
-                                     PyGIArgCache      *arg_cache,
-                                     GIArgument        *arg)
-{
-    PyObject *py_obj = NULL;
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-    GIBaseInfo *interface;
-    long c_long;
-
-    interface = g_type_info_get_interface (arg_cache->type_info);
-    g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
-
-    if (!gi_argument_to_c_long(arg, &c_long,
-                               g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
-        g_base_info_unref (interface);
-        return NULL;
-    }
-
-    g_base_info_unref (interface);
-    if (iface_cache->g_type == G_TYPE_NONE) {
-        /* An enum with a GType of None is an enum without GType */
-
-        PyObject *py_type = _pygi_type_import_by_gi_info (iface_cache->interface_info);
-        PyObject *py_args = NULL;
-
-        if (!py_type)
-            return NULL;
-
-        py_args = PyTuple_New (1);
-        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (c_long)) != 0) {
-            Py_DECREF (py_args);
-            Py_DECREF (py_type);
-            return NULL;
-        }
-
-        py_obj = PyObject_CallFunction (py_type, "l", c_long);
-
-        Py_DECREF (py_args);
-        Py_DECREF (py_type);
-    } else {
-        py_obj = pyg_flags_from_gtype (iface_cache->g_type, c_long);
-    }
-
-    return py_obj;
-}
-
-static gboolean
-pygi_arg_enum_setup_from_info (PyGIArgCache  *arg_cache,
-                               GITypeInfo    *type_info,
-                               GIArgInfo     *arg_info,
-                               GITransfer     transfer,
-                               PyGIDirection  direction)
-{
-    if (direction & PYGI_DIRECTION_FROM_PYTHON)
-        arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_enum;
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON)
-        arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_enum;
-
-    return TRUE;
-}
-
-
-PyGIArgCache *
-pygi_arg_enum_new_from_info (GITypeInfo      *type_info,
-                             GIArgInfo       *arg_info,
-                             GITransfer       transfer,
-                             PyGIDirection    direction,
-                             GIInterfaceInfo *iface_info)
-{
-    gboolean res = FALSE;
-    PyGIArgCache *cache = NULL;
-
-    cache = pygi_arg_interface_new_from_info (type_info,
-                                              arg_info,
-                                              transfer,
-                                              direction,
-                                              iface_info);
-    if (cache == NULL)
-        return NULL;
-
-    res = pygi_arg_enum_setup_from_info (cache,
-                                         type_info,
-                                         arg_info,
-                                         transfer,
-                                         direction);
-    if (res) {
-        return cache;
-    } else {
-        pygi_arg_cache_free (cache);
-        return NULL;
-    }
-}
-
-static gboolean
-pygi_arg_flags_setup_from_info (PyGIArgCache  *arg_cache,
-                                GITypeInfo    *type_info,
-                                GIArgInfo     *arg_info,
-                                GITransfer     transfer,
-                                PyGIDirection  direction)
-{
-    if (direction & PYGI_DIRECTION_FROM_PYTHON)
-        arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_flags;
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON)
-        arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_flags;
-
-    return TRUE;
-}
-
-
-PyGIArgCache *
-pygi_arg_flags_new_from_info (GITypeInfo      *type_info,
-                              GIArgInfo       *arg_info,
-                              GITransfer       transfer,
-                              PyGIDirection    direction,
-                              GIInterfaceInfo *iface_info)
-{
-    gboolean res = FALSE;
-    PyGIArgCache *cache = NULL;
-
-    cache = pygi_arg_interface_new_from_info (type_info,
-                                              arg_info,
-                                              transfer,
-                                              direction,
-                                              iface_info);
-    if (cache == NULL)
-        return NULL;
-
-    res = pygi_arg_flags_setup_from_info (cache,
-                                          type_info,
-                                          arg_info,
-                                          transfer,
-                                          direction);
-    if (res) {
-        return cache;
-    } else {
-        pygi_arg_cache_free (cache);
-        return NULL;
-    }
-}
diff --git a/gi/pygi-enum-marshal.h b/gi/pygi-enum-marshal.h
deleted file mode 100644 (file)
index 2fdcbc4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_ENUM_MARSHAL_H__
-#define __PYGI_ENUM_MARSHAL_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-PyGIArgCache *pygi_arg_enum_new_from_info   (GITypeInfo      *type_info,
-                                             GIArgInfo       *arg_info,   /* may be null */
-                                             GITransfer       transfer,
-                                             PyGIDirection    direction,
-                                             GIInterfaceInfo *iface_info);
-
-PyGIArgCache *pygi_arg_flags_new_from_info  (GITypeInfo      *type_info,
-                                             GIArgInfo       *arg_info,   /* may be null */
-                                             GITransfer       transfer,
-                                             PyGIDirection    direction,
-                                             GIInterfaceInfo *iface_info);
-
-G_END_DECLS
-
-#endif /*__PYGI_ENUM_MARSHAL_H__*/
diff --git a/gi/pygi-error.c b/gi/pygi-error.c
deleted file mode 100644 (file)
index e3d8838..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pyglib.h"
-#include "pygi-error.h"
-#include "pygtype.h"
-#include <pyglib-python-compat.h>
-
-
-PyObject *PyGError = NULL;
-static PyObject *exception_table = NULL;
-
-/**
- * pygi_error_marshal_to_py:
- * @error: a pointer to the GError.
- *
- * Checks to see if @error has been set.  If @error has been set, then a
- * GLib.GError Python exception object is returned (but not raised).
- *
- * Returns: a GLib.GError Python exception object, or NULL.
- */
-PyObject *
-pygi_error_marshal_to_py (GError **error)
-{
-    PyGILState_STATE state;
-    PyObject *exc_type;
-    PyObject *exc_instance;
-    const char *domain = NULL;
-
-    g_return_val_if_fail(error != NULL, NULL);
-
-    if (*error == NULL)
-        return NULL;
-
-    state = PyGILState_Ensure();
-
-    exc_type = PyGError;
-    if (exception_table != NULL)
-    {
-        PyObject *item;
-        item = PyDict_GetItem(exception_table, PYGLIB_PyLong_FromLong((*error)->domain));
-        if (item != NULL)
-            exc_type = item;
-    }
-
-    if ((*error)->domain) {
-        domain = g_quark_to_string ((*error)->domain);
-    }
-
-    exc_instance = PyObject_CallFunction (exc_type, "ssi",
-                                          (*error)->message,
-                                          domain,
-                                          (*error)->code);
-
-    PyGILState_Release(state);
-
-    return exc_instance;
-}
-
-/**
- * pygi_error_check:
- * @error: a pointer to the GError.
- *
- * Checks to see if the GError has been set.  If the error has been
- * set, then the glib.GError Python exception will be raised, and
- * the GError cleared.
- *
- * Returns: True if an error was set.
- */
-gboolean
-pygi_error_check (GError **error)
-{
-    PyGILState_STATE state;
-    PyObject *exc_instance;
-
-    g_return_val_if_fail(error != NULL, FALSE);
-    if (*error == NULL)
-        return FALSE;
-
-    state = PyGILState_Ensure();
-
-    exc_instance = pygi_error_marshal_to_py (error);
-    PyErr_SetObject(PyGError, exc_instance);
-    Py_DECREF(exc_instance);
-    g_clear_error(error);
-
-    PyGILState_Release(state);
-
-    return TRUE;
-}
-
-/**
- * pygi_error_marshal_from_py:
- * @pyerr: A Python exception instance.
- * @error: a standard GLib GError ** output parameter
- *
- * Converts from a Python implemented GError into a GError.
- *
- * Returns: TRUE if the conversion was successful, otherwise a Python exception
- *          is set and FALSE is returned.
- */
-gboolean
-pygi_error_marshal_from_py (PyObject *pyerr, GError **error)
-{
-    gboolean res = FALSE;
-    PyObject *py_message = NULL,
-             *py_domain = NULL,
-             *py_code = NULL;
-
-    if (PyObject_IsInstance (pyerr, PyGError) != 1) {
-        PyErr_Format (PyExc_TypeError, "Must be GLib.Error, not %s",
-                      pyerr->ob_type->tp_name);
-        return FALSE;
-    }
-
-    py_message = PyObject_GetAttrString (pyerr, "message");
-    if (!py_message || !PYGLIB_PyUnicode_Check (py_message)) {
-        PyErr_SetString (PyExc_ValueError,
-                         "GLib.Error instances must have a 'message' string attribute");
-        goto cleanup;
-    }
-
-    py_domain = PyObject_GetAttrString (pyerr, "domain");
-    if (!py_domain || !PYGLIB_PyUnicode_Check (py_domain)) {
-        PyErr_SetString (PyExc_ValueError,
-                         "GLib.Error instances must have a 'domain' string attribute");
-        goto cleanup;
-    }
-
-    py_code = PyObject_GetAttrString (pyerr, "code");
-    if (!py_code || !PYGLIB_PyLong_Check (py_code)) {
-        PyErr_SetString (PyExc_ValueError,
-                         "GLib.Error instances must have a 'code' int attribute");
-        goto cleanup;
-    }
-
-    res = TRUE;
-    g_set_error_literal (error,
-                         g_quark_from_string (PYGLIB_PyUnicode_AsString (py_domain)),
-                         PYGLIB_PyLong_AsLong (py_code),
-                         PYGLIB_PyUnicode_AsString (py_message));
-
-cleanup:
-    Py_XDECREF (py_message);
-    Py_XDECREF (py_code);
-    Py_XDECREF (py_domain);
-    return res;
-}
-
-/**
- * pygi_gerror_exception_check:
- * @error: a standard GLib GError ** output parameter
- *
- * Checks to see if a GError exception has been raised, and if so
- * translates the python exception to a standard GLib GError.  If the
- * raised exception is not a GError then PyErr_Print() is called.
- *
- * Returns: 0 if no exception has been raised, -1 if it is a
- * valid glib.GError, -2 otherwise.
- */
-gboolean
-pygi_gerror_exception_check (GError **error)
-{
-    int res = -1;
-    PyObject *type, *value, *traceback;
-    PyErr_Fetch(&type, &value, &traceback);
-    if (type == NULL)
-        return 0;
-    PyErr_NormalizeException(&type, &value, &traceback);
-    if (value == NULL) {
-        PyErr_Restore(type, value, traceback);
-        PyErr_Print();
-        return -2;
-    }
-    if (!value ||
-        !PyErr_GivenExceptionMatches(type,
-                                     (PyObject *) PyGError)) {
-        PyErr_Restore(type, value, traceback);
-        PyErr_Print();
-        return -2;
-    }
-    Py_DECREF(type);
-    Py_XDECREF(traceback);
-
-    if (!pygi_error_marshal_from_py (value, error)) {
-        PyErr_Print();
-        res = -2;
-    }
-
-    Py_DECREF(value);
-    return res;
-
-}
-
-/**
- * pygi_register_exception_for_domain:
- * @name: name of the exception
- * @error_domain: error domain
- *
- * Registers a new GLib.Error exception subclass called #name for
- * a specific #domain. This exception will be raised when a GError
- * of the same domain is passed in to pygi_error_check().
- *
- * Returns: the new exception
- */
-PyObject *
-pygi_register_exception_for_domain (gchar *name,
-                                    gint error_domain)
-{
-    PyObject *exception;
-
-    exception = PyErr_NewException(name, PyGError, NULL);
-
-    if (exception_table == NULL)
-        exception_table = PyDict_New();
-
-    PyDict_SetItem(exception_table,
-                   PYGLIB_PyLong_FromLong(error_domain),
-                   exception);
-
-    return exception;
-}
-
-static gboolean
-_pygi_marshal_from_py_gerror (PyGIInvokeState   *state,
-                              PyGICallableCache *callable_cache,
-                              PyGIArgCache      *arg_cache,
-                              PyObject          *py_arg,
-                              GIArgument        *arg,
-                              gpointer          *cleanup_data)
-{
-    GError *error = NULL;
-    if (pygi_error_marshal_from_py (py_arg, &error)) {
-        arg->v_pointer = error;
-        *cleanup_data = error;
-        return TRUE;
-    } else {
-        return FALSE;
-    }
-}
-
-
-static void
-_pygi_marshal_from_py_gerror_cleanup  (PyGIInvokeState *state,
-                                       PyGIArgCache    *arg_cache,
-                                       PyObject        *py_arg,
-                                       gpointer         data,
-                                       gboolean         was_processed)
-{
-    if (was_processed) {
-        g_error_free ((GError *)data);
-    }
-}
-
-static PyObject *
-_pygi_marshal_to_py_gerror (PyGIInvokeState   *state,
-                            PyGICallableCache *callable_cache,
-                            PyGIArgCache      *arg_cache,
-                            GIArgument        *arg)
-{
-    GError *error = arg->v_pointer;
-    PyObject *py_obj = NULL;
-
-    py_obj = pygi_error_marshal_to_py (&error);
-
-    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && error != NULL) {
-        g_error_free (error);
-    }
-
-    if (py_obj != NULL) {
-        return py_obj;
-    } else {
-        Py_RETURN_NONE;
-    }
-}
-
-static gboolean
-pygi_arg_gerror_setup_from_info (PyGIArgCache  *arg_cache,
-                                 GITypeInfo    *type_info,
-                                 GIArgInfo     *arg_info,
-                                 GITransfer     transfer,
-                                 PyGIDirection  direction)
-{
-    if (!pygi_arg_base_setup (arg_cache, type_info, arg_info, transfer, direction)) {
-        return FALSE;
-    }
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        arg_cache->from_py_marshaller = _pygi_marshal_from_py_gerror;
-
-        /* Assign cleanup function if we manage memory after call completion. */
-        if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
-            arg_cache->from_py_cleanup = _pygi_marshal_from_py_gerror_cleanup;
-        }
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        arg_cache->to_py_marshaller = _pygi_marshal_to_py_gerror;
-        arg_cache->meta_type = PYGI_META_ARG_TYPE_PARENT;
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_gerror_new_from_info (GITypeInfo   *type_info,
-                               GIArgInfo    *arg_info,
-                               GITransfer    transfer,
-                               PyGIDirection direction)
-{
-    gboolean res = FALSE;
-    PyGIArgCache *arg_cache = NULL;
-
-    arg_cache = pygi_arg_cache_alloc ();
-    if (arg_cache == NULL)
-        return NULL;
-
-    res = pygi_arg_gerror_setup_from_info (arg_cache,
-                                           type_info,
-                                           arg_info,
-                                           transfer,
-                                           direction);
-    if (res) {
-        return arg_cache;
-    } else {
-        pygi_arg_cache_free (arg_cache);
-        return NULL;
-    }
-}
-
-static PyObject *
-pygerror_from_gvalue (const GValue *value)
-{
-    GError *gerror = (GError *) g_value_get_boxed (value);
-    PyObject *pyerr = pygi_error_marshal_to_py (&gerror);
-    if (pyerr == NULL) {
-        Py_RETURN_NONE;
-    } else {
-        return pyerr;
-    }
-}
-
-static int
-pygerror_to_gvalue (GValue *value, PyObject *pyerror)
-{
-    GError *gerror = NULL;
-
-    if (pygi_error_marshal_from_py (pyerror, &gerror)) {
-        g_value_take_boxed (value, gerror);
-        return 0;
-    }
-
-    return -1;
-}
-
-void
-pygi_error_register_types (PyObject *module)
-{
-    PyObject *error_module = PyImport_ImportModule ("gi._error");
-    if (!error_module) {
-        return;
-    }
-
-    /* Stash a reference to the Python implemented gi._error.GError. */
-    PyGError = PyObject_GetAttrString (error_module, "GError");
-
-    pyg_register_gtype_custom (G_TYPE_ERROR,
-                               pygerror_from_gvalue,
-                               pygerror_to_gvalue);
-}
-
diff --git a/gi/pygi-error.h b/gi/pygi-error.h
deleted file mode 100644 (file)
index e7cc05f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_ERROR_H__
-#define __PYGI_ERROR_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-extern PyObject *PyGError;
-
-gboolean      pygi_error_check              (GError **error);
-
-PyObject*     pygi_error_marshal_to_py      (GError **error);
-
-gboolean      pygi_error_marshal_from_py    (PyObject  *pyerr,
-                                             GError   **error);
-
-gboolean      pygi_gerror_exception_check   (GError **error);
-
-PyObject*     pygi_register_exception_for_domain (gchar *name,
-                                                  gint   error_domain);
-
-PyGIArgCache* pygi_arg_gerror_new_from_info (GITypeInfo    *type_info,
-                                             GIArgInfo     *arg_info,   /* may be null */
-                                             GITransfer     transfer,
-                                             PyGIDirection  direction);
-
-void          pygi_error_register_types     (PyObject *module);
-
-G_END_DECLS
-
-#endif /*__PYGI_ERROR_H__*/
diff --git a/gi/pygi-foreign-api.h b/gi/pygi-foreign-api.h
deleted file mode 100644 (file)
index 9367518..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2005-2009 Johan Dahlin <johan@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_FOREIGN_API_H__
-#define __PYGI_FOREIGN_API_H__
-
-#include <girepository.h>
-#include <pygobject.h>
-
-typedef PyObject * (*PyGIArgOverrideToGIArgumentFunc)   (PyObject        *value,
-                                                         GIInterfaceInfo *interface_info,
-                                                         GITransfer       transfer,
-                                                         GIArgument      *arg);
-typedef PyObject * (*PyGIArgOverrideFromGIArgumentFunc) (GIInterfaceInfo *interface_info,
-                                                         GITransfer       transfer,
-                                                         gpointer         data);
-typedef PyObject * (*PyGIArgOverrideReleaseFunc)        (GITypeInfo *type_info,
-                                                         gpointer  struct_);
-
-
-struct PyGI_API {
-    void (*register_foreign_struct) (const char* namespace_,
-                                     const char* name,
-                                     PyGIArgOverrideToGIArgumentFunc to_func,
-                                     PyGIArgOverrideFromGIArgumentFunc from_func,
-                                     PyGIArgOverrideReleaseFunc release_func);
-};
-
-
-#ifndef _INSIDE_PYGOBJECT_
-
-static struct PyGI_API *PyGI_API = NULL;
-
-static int
-_pygi_import (void)
-{
-    if (PyGI_API != NULL) {
-        return 1;
-    }
-    PyGI_API = (struct PyGI_API*) PyCapsule_Import("gi._API", FALSE);
-    if (PyGI_API == NULL) {
-        return -1;
-    }
-
-    return 0;
-}
-
-
-static inline PyObject *
-pygi_register_foreign_struct (const char* namespace_,
-                              const char* name,
-                              PyGIArgOverrideToGIArgumentFunc to_func,
-                              PyGIArgOverrideFromGIArgumentFunc from_func,
-                              PyGIArgOverrideReleaseFunc release_func)
-{
-    if (_pygi_import() < 0) {
-        return NULL;
-    }
-    PyGI_API->register_foreign_struct(namespace_,
-                                      name,
-                                      to_func,
-                                      from_func,
-                                      release_func);
-    Py_RETURN_NONE;
-}
-
-#endif /* _INSIDE_PYGOBJECT_ */
-
-#endif /* __PYGI_FOREIGN_API_H__ */
index 682cee2..4e12df3 100644 (file)
  * IN THE SOFTWARE.
  */
 
-#include <Python.h>
 #include <cairo.h>
+#include <Python.h>
 
 #if PY_VERSION_HEX < 0x03000000
 #include <pycairo.h>
-static Pycairo_CAPI_t *Pycairo_CAPI;
 #else
-#include <py3cairo.h>
+#include <pycairo/py3cairo.h>
 #endif
 
-#include <cairo-gobject.h>
+static Pycairo_CAPI_t *Pycairo_CAPI;
 
-/* Limit includes from PyGI to APIs which do not have link dependencies
- * (pygobject.h and pygi-foreign-api.h) since _gi_cairo is built as a separate
- * shared library that interacts with PyGI through a PyCapsule API at runtime.
- */
-#include <pygi-foreign-api.h>
-#include <pyglib-python-compat.h>
+#include "pygi-foreign.h"
 
-/*
- * cairo_t marshaling
- */
+#include <pyglib-python-compat.h>
 
-static PyObject *
+PyObject *
 cairo_context_to_arg (PyObject        *value,
                       GIInterfaceInfo *interface_info,
                       GITransfer       transfer,
@@ -63,21 +55,17 @@ cairo_context_to_arg (PyObject        *value,
     Py_RETURN_NONE;
 }
 
-static PyObject *
-cairo_context_from_arg (GIInterfaceInfo *interface_info,
-                        GITransfer       transfer,
-                        gpointer         data)
+PyObject *
+cairo_context_from_arg (GIInterfaceInfo *interface_info, gpointer data)
 {
     cairo_t *context = (cairo_t*) data;
 
-    if (transfer == GI_TRANSFER_NOTHING)
-        cairo_reference (context);
+    cairo_reference (context);
 
     return PycairoContext_FromContext (context, &PycairoContext_Type, NULL);
 }
 
-
-static PyObject *
+PyObject *
 cairo_context_release (GIBaseInfo *base_info,
                        gpointer    struct_)
 {
@@ -85,38 +73,8 @@ cairo_context_release (GIBaseInfo *base_info,
     Py_RETURN_NONE;
 }
 
-static int
-cairo_context_to_gvalue (GValue *value, PyObject *obj)
-{
-    cairo_t *cr = PycairoContext_GET (obj);
-    if (!cr) {
-        return -1;
-    }
-
-    /* PycairoContext_GET returns a borrowed reference, use set_boxed
-     * to add new ref to the context which will be managed by the GValue. */
-    g_value_set_boxed (value, cr);
-    return 0;
-}
-
-static PyObject *
-cairo_context_from_gvalue (const GValue *value)
-{
-    /* PycairoContext_FromContext steals a ref, so we dup it out of the GValue. */
-    cairo_t *cr = g_value_dup_boxed (value);
-    if (!cr) {
-        return NULL;
-    }
-
-    return PycairoContext_FromContext (cr, &PycairoContext_Type, NULL);
-}
-
-
-/*
- * cairo_surface_t marshaling
- */
 
-static PyObject *
+PyObject *
 cairo_surface_to_arg (PyObject        *value,
                       GIInterfaceInfo *interface_info,
                       GITransfer       transfer,
@@ -136,20 +94,17 @@ cairo_surface_to_arg (PyObject        *value,
     Py_RETURN_NONE;
 }
 
-static PyObject *
-cairo_surface_from_arg (GIInterfaceInfo *interface_info,
-                        GITransfer       transfer,
-                        gpointer         data)
+PyObject *
+cairo_surface_from_arg (GIInterfaceInfo *interface_info, gpointer data)
 {
     cairo_surface_t *surface = (cairo_surface_t*) data;
 
-    if (transfer == GI_TRANSFER_NOTHING)
-        cairo_surface_reference (surface);
+    cairo_surface_reference (surface);
 
     return PycairoSurface_FromSurface (surface, NULL);
 }
 
-static PyObject *
+PyObject *
 cairo_surface_release (GIBaseInfo *base_info,
                        gpointer    struct_)
 {
@@ -157,274 +112,18 @@ cairo_surface_release (GIBaseInfo *base_info,
     Py_RETURN_NONE;
 }
 
-static int
-cairo_surface_to_gvalue (GValue *value, PyObject *obj)
-{
-    cairo_surface_t *surface = ((PycairoSurface*) obj)->surface;
-    if (!surface) {
-        return -1;
-    }
-
-    /* surface is a borrowed reference, use set_boxed
-     * to add new ref to the context which will be managed by the GValue. */
-    g_value_set_boxed (value, surface);
-    return 0;
-}
-
-static PyObject *
-cairo_surface_from_gvalue (const GValue *value)
-{
-    /* PycairoSurface_FromSurface steals a ref, so we dup it out of the GValue. */
-    cairo_surface_t *surface = g_value_dup_boxed (value);
-    if (!surface) {
-        return NULL;
-    }
-
-    return PycairoSurface_FromSurface (surface, NULL);
-}
-
-
-/*
- * cairo_path_t marshaling
- */
-
-static PyObject *
-cairo_path_to_arg (PyObject        *value,
-                   GIInterfaceInfo *interface_info,
-                   GITransfer       transfer,
-                   GIArgument      *arg)
-{
-    cairo_path_t *path;
-
-    g_assert (transfer == GI_TRANSFER_NOTHING);
-
-    path = ( (PycairoPath*) value)->path;
-    if (!path) {
-        PyErr_SetString (PyExc_ValueError, "Path instance wrapping a NULL path");
-        return NULL;
-    }
-
-    arg->v_pointer = path;
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-cairo_path_from_arg (GIInterfaceInfo *interface_info,
-                     GITransfer       transfer,
-                     gpointer         data)
-{
-    cairo_path_t *path = (cairo_path_t*) data;
-
-    if (transfer == GI_TRANSFER_NOTHING) {
-        PyErr_SetString(PyExc_TypeError, "Unsupported annotation (transfer none) for cairo.Path return");
-        return NULL;
-    }
-
-    return PycairoPath_FromPath (path);
-}
-
-static PyObject *
-cairo_path_release (GIBaseInfo *base_info,
-                    gpointer    struct_)
-{
-    cairo_path_destroy ( (cairo_path_t*) struct_);
-    Py_RETURN_NONE;
-}
-
-
-/*
- * cairo_font_face_t marshaling
- */
-
-static int
-cairo_font_face_to_gvalue (GValue *value, PyObject *obj)
-{
-    cairo_font_face_t *font_face = ((PycairoFontFace*) obj)->font_face;
-    if (!font_face) {
-        return -1;
-    }
-
-    g_value_set_boxed (value, font_face);
-    return 0;
-}
-
-static PyObject *
-cairo_font_face_from_gvalue (const GValue *value)
-{
-    cairo_font_face_t *font_face = g_value_dup_boxed (value);
-    if (!font_face) {
-        return NULL;
-    }
-
-    return PycairoFontFace_FromFontFace (font_face);
-}
-
-
-/*
- * cairo_font_options_t marshaling
- */
-
-static PyObject *
-cairo_font_options_to_arg (PyObject        *value,
-                           GIInterfaceInfo *interface_info,
-                           GITransfer       transfer,
-                           GIArgument      *arg)
-{
-    cairo_font_options_t *font_options;
-
-    g_assert (transfer == GI_TRANSFER_NOTHING);
-
-    font_options = ( (PycairoFontOptions*) value)->font_options;
-    if (!font_options) {
-        PyErr_SetString (PyExc_ValueError, "FontOptions instance wrapping a NULL font_options");
-        return NULL;
-    }
-
-    arg->v_pointer = font_options;
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-cairo_font_options_from_arg (GIInterfaceInfo *interface_info,
-                             GITransfer       transfer,
-                             gpointer         data)
-{
-    cairo_font_options_t *font_options = (cairo_font_options_t*) data;
-
-    if (transfer == GI_TRANSFER_NOTHING)
-        font_options = cairo_font_options_copy (font_options);
-
-    return PycairoFontOptions_FromFontOptions (font_options);
-}
-
-static PyObject *
-cairo_font_options_release (GIBaseInfo *base_info,
-                            gpointer    struct_)
-{
-    cairo_font_options_destroy ( (cairo_font_options_t*) struct_);
-    Py_RETURN_NONE;
-}
-
-
-/*
- * scaled_font_t marshaling
- */
-
-static int
-cairo_scaled_font_to_gvalue (GValue *value, PyObject *obj)
-{
-    cairo_scaled_font_t *scaled_font = ((PycairoScaledFont*) obj)->scaled_font;
-    if (!scaled_font) {
-        return -1;
-    }
-
-    /* scaled_font is a borrowed reference, use set_boxed
-     * to add new ref to the context which will be managed by the GValue. */
-    g_value_set_boxed (value, scaled_font);
-    return 0;
-}
-
-static PyObject *
-cairo_scaled_font_from_gvalue (const GValue *value)
-{
-    /* PycairoScaledFont_FromScaledFont steals a ref, so we dup it out of the GValue. */
-    cairo_scaled_font_t *scaled_font = g_value_dup_boxed (value);
-    if (!scaled_font) {
-        return NULL;
-    }
-
-    return PycairoScaledFont_FromScaledFont (scaled_font);
-}
-
-
-/*
- * cairo_pattern_t marshaling
- */
-
-static int
-cairo_pattern_to_gvalue (GValue *value, PyObject *obj)
-{
-    cairo_pattern_t *pattern = ((PycairoPattern*) obj)->pattern;
-    if (!pattern) {
-        return -1;
-    }
-
-    /* pattern is a borrowed reference, use set_boxed
-     * to add new ref to the context which will be managed by the GValue. */
-    g_value_set_boxed (value, pattern);
-    return 0;
-}
-
-static PyObject *
-cairo_pattern_from_gvalue (const GValue *value)
-{
-    /* PycairoPattern_FromPattern steals a ref, so we dup it out of the GValue. */
-    cairo_pattern_t *pattern = g_value_dup_boxed (value);
-    if (!pattern) {
-        return NULL;
-    }
-
-    return PycairoPattern_FromPattern (pattern, NULL);
-}
-
-#if defined(PycairoRegion_Type)
-
-static PyObject *
-cairo_region_to_arg (PyObject        *value,
-                     GIInterfaceInfo *interface_info,
-                     GITransfer       transfer,
-                     GIArgument      *arg)
-{
-    cairo_region_t *region;
-
-    g_assert (transfer == GI_TRANSFER_NOTHING);
-
-    region = ( (PycairoRegion*) value)->region;
-    if (!region) {
-        PyErr_SetString (PyExc_ValueError, "Region instance wrapping a NULL region");
-        return NULL;
-    }
-
-    arg->v_pointer = region;
-    Py_RETURN_NONE;
-}
-
-static PyObject *
-cairo_region_from_arg (GIInterfaceInfo *interface_info,
-                       GITransfer transfer,
-                       gpointer data)
-{
-    cairo_region_t *region = (cairo_region_t*) data;
-
-    if (transfer == GI_TRANSFER_NOTHING)
-        cairo_region_reference (region);
-
-    return PycairoRegion_FromRegion (region);
-}
-
-static PyObject *
-cairo_region_release (GIBaseInfo *base_info,
-                      gpointer    struct_)
-{
-    cairo_region_destroy ( (cairo_region_t*) struct_);
-    Py_RETURN_NONE;
-}
-#endif
-
 static PyMethodDef _gi_cairo_functions[] = { {0,} };
 PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo")
 {
 #if PY_VERSION_HEX < 0x03000000
     Pycairo_IMPORT;
 #else
-    import_cairo();
+    Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import("cairo.CAPI", 0);
 #endif
 
     if (Pycairo_CAPI == NULL)
         return PYGLIB_MODULE_ERROR_RETURN;
 
-    pygobject_init (3, 13, 2);
-
     pygi_register_foreign_struct ("cairo",
                                   "Context",
                                   cairo_context_to_arg,
@@ -436,46 +135,5 @@ PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo")
                                   cairo_surface_to_arg,
                                   cairo_surface_from_arg,
                                   cairo_surface_release);
-
-    pygi_register_foreign_struct ("cairo",
-                                  "Path",
-                                  cairo_path_to_arg,
-                                  cairo_path_from_arg,
-                                  cairo_path_release);
-
-    pygi_register_foreign_struct ("cairo",
-                                  "FontOptions",
-                                  cairo_font_options_to_arg,
-                                  cairo_font_options_from_arg,
-                                  cairo_font_options_release);
-
-#if defined(PycairoRegion_Type)
-    pygi_register_foreign_struct ("cairo",
-                                  "Region",
-                                  cairo_region_to_arg,
-                                  cairo_region_from_arg,
-                                  cairo_region_release);
-#endif
-
-    pyg_register_gtype_custom (CAIRO_GOBJECT_TYPE_CONTEXT,
-                               cairo_context_from_gvalue,
-                               cairo_context_to_gvalue);
-
-    pyg_register_gtype_custom (CAIRO_GOBJECT_TYPE_SURFACE,
-                               cairo_surface_from_gvalue,
-                               cairo_surface_to_gvalue);
-
-    pyg_register_gtype_custom (CAIRO_GOBJECT_TYPE_FONT_FACE,
-                               cairo_font_face_from_gvalue,
-                               cairo_font_face_to_gvalue);
-
-    pyg_register_gtype_custom (CAIRO_GOBJECT_TYPE_SCALED_FONT,
-                               cairo_scaled_font_from_gvalue,
-                               cairo_scaled_font_to_gvalue);
-
-    pyg_register_gtype_custom (CAIRO_GOBJECT_TYPE_PATTERN,
-                               cairo_pattern_from_gvalue,
-                               cairo_pattern_to_gvalue);
-
 }
 PYGLIB_MODULE_END;
diff --git a/gi/pygi-foreign-gvariant.c b/gi/pygi-foreign-gvariant.c
new file mode 100644 (file)
index 0000000..e799d98
--- /dev/null
@@ -0,0 +1,63 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (c) 2010  Collabora Ltd. <http://www.collabora.co.uk/>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "pygobject.h"
+
+#include "pygi-private.h"
+#include "pygi-foreign-gvariant.h"
+
+PyObject *
+g_variant_to_arg (PyObject        *value,
+                  GIInterfaceInfo *interface_info,
+                  GITransfer       transfer,
+                  GIArgument      *arg)
+{
+    g_assert (transfer == GI_TRANSFER_NOTHING);
+
+    /* TODO check that value is a PyGPointer */
+
+    arg->v_pointer = (GVariant *) ( (PyGPointer *) value)->pointer;
+    Py_RETURN_NONE;
+}
+
+PyObject *
+g_variant_from_arg (GIInterfaceInfo *interface_info,
+                    gpointer         data)
+{
+    GVariant *variant = (GVariant *) data;
+
+    PyObject *type = _pygi_type_import_by_gi_info (interface_info);
+
+    g_variant_ref_sink (variant);
+
+    return _pygi_struct_new ( (PyTypeObject *) type, variant, FALSE);
+}
+
+PyObject *
+g_variant_release_foreign (GIBaseInfo *base_info,
+                           gpointer struct_)
+{
+    g_variant_unref ( (GVariant *) struct_);
+    Py_RETURN_NONE;
+}
+
similarity index 64%
rename from gi/pygi-source.h
rename to gi/pygi-foreign-gvariant.h
index a602767..43ea9c7 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 /*
- * Copyright (c) 2012 Canonical Ltd.
+ * Copyright (c) 2010  Collabora Ltd. <http://www.collabora.co.uk/>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
  * IN THE SOFTWARE.
  */
 
-#ifndef __PYGI_SOURCE_H__
-#define __PYGI_SOURCE_H__
+#ifndef __PYGI_FOREIGN_G_VARIANT_H__
+#define __PYGI_FOREIGN_G_VARIANT_H__
 
-PyObject *pyg_source_new (void);
-PyObject *pyg_source_set_callback (PyGObject *self, PyObject *args);
+#include "pygi-foreign.h"
 
-#endif /* __PYGI_SOURCE_H__ */
+PyObject *g_variant_to_arg(PyObject        *value,
+                           GIInterfaceInfo *interface_info,
+                           GITransfer       transfer,
+                           GIArgument      *arg);
+
+PyObject *g_variant_from_arg(GITypeInfo *type_info,
+                             gpointer    data);
+
+PyObject *g_variant_release_foreign (GIBaseInfo *base_info,
+                                     gpointer    struct_);
+
+#endif /* __PYGI_FOREIGN_G_VARIANT_H__ */
 
index 84af1ec..0398450 100644 (file)
@@ -26,8 +26,8 @@
 #  include <config.h>
 #endif
 
-#include "pygobject-internal.h"
 #include "pygi-foreign.h"
+#include "pygi-foreign-gvariant.h"
 
 #include <girepository.h>
 
@@ -41,16 +41,22 @@ typedef struct {
 
 static GPtrArray *foreign_structs = NULL;
 
-static void
-init_foreign_structs (void)
+void
+init_foreign_structs ()
 {
     foreign_structs = g_ptr_array_new ();
+
+    pygi_register_foreign_struct ("GLib",
+                                  "Variant",
+                                  g_variant_to_arg,
+                                  g_variant_from_arg,
+                                  g_variant_release_foreign);
 }
 
 static PyGIForeignStruct *
 do_lookup (const gchar *namespace, const gchar *name)
 {
-    guint i;
+    gint i;
     for (i = 0; i < foreign_structs->len; i++) {
         PyGIForeignStruct *foreign_struct = \
                 g_ptr_array_index (foreign_structs, i);
@@ -63,24 +69,24 @@ do_lookup (const gchar *namespace, const gchar *name)
     return NULL;
 }
 
-static PyObject *
-pygi_struct_foreign_load_module (const char *namespace)
-{
-    gchar *module_name = g_strconcat ("gi._gi_", namespace, NULL);
-    PyObject *module = PyImport_ImportModule (module_name);
-    g_free (module_name);
-    return module;
-}
-
 static PyGIForeignStruct *
-pygi_struct_foreign_lookup_by_name (const char *namespace, const char *name)
+pygi_struct_foreign_lookup (GIBaseInfo *base_info)
 {
     PyGIForeignStruct *result;
+    const gchar *namespace = g_base_info_get_namespace (base_info);
+    const gchar *name = g_base_info_get_name (base_info);
+
+    if (foreign_structs == NULL) {
+        init_foreign_structs ();
+    }
 
     result = do_lookup (namespace, name);
 
     if (result == NULL) {
-        PyObject *module = pygi_struct_foreign_load_module (namespace);
+        gchar *module_name = g_strconcat ("gi._gi_", namespace, NULL);
+        PyObject *module = PyImport_ImportModule (module_name);
+
+        g_free (module_name);
 
         if (module == NULL)
             PyErr_Clear ();
@@ -92,7 +98,7 @@ pygi_struct_foreign_lookup_by_name (const char *namespace, const char *name)
 
     if (result == NULL) {
         PyErr_Format (PyExc_TypeError,
-                      "Couldn't find foreign struct converter for '%s.%s'",
+                      "Couldn't find conversion for foreign struct '%s.%s'",
                       namespace,
                       name);
     }
@@ -100,15 +106,6 @@ pygi_struct_foreign_lookup_by_name (const char *namespace, const char *name)
     return result;
 }
 
-static PyGIForeignStruct *
-pygi_struct_foreign_lookup (GIBaseInfo *base_info)
-{
-    const gchar *namespace = g_base_info_get_namespace (base_info);
-    const gchar *name = g_base_info_get_name (base_info);
-
-    return pygi_struct_foreign_lookup_by_name (namespace, name);
-}
-
 PyObject *
 pygi_struct_foreign_convert_to_g_argument (PyObject        *value,
                                            GIInterfaceInfo *interface_info,
@@ -132,7 +129,6 @@ pygi_struct_foreign_convert_to_g_argument (PyObject        *value,
 
 PyObject *
 pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *interface_info,
-                                             GITransfer       transfer,
                                              GIArgument      *arg)
 {
     GIBaseInfo *base_info = (GIBaseInfo *) interface_info;
@@ -141,7 +137,7 @@ pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *interface_info,
     if (foreign_struct == NULL)
         return NULL;
 
-    return foreign_struct->from_func (interface_info, transfer, arg);
+    return foreign_struct->from_func (interface_info, arg);
 }
 
 PyObject *
@@ -160,11 +156,11 @@ pygi_struct_foreign_release (GIBaseInfo *base_info,
 }
 
 void
-pygi_register_foreign_struct (const char* namespace_,
-                              const char* name,
-                              PyGIArgOverrideToGIArgumentFunc to_func,
-                              PyGIArgOverrideFromGIArgumentFunc from_func,
-                              PyGIArgOverrideReleaseFunc release_func)
+pygi_register_foreign_struct_real (const char* namespace_,
+                                   const char* name,
+                                   PyGIArgOverrideToGIArgumentFunc to_func,
+                                   PyGIArgOverrideFromGIArgumentFunc from_func,
+                                   PyGIArgOverrideReleaseFunc release_func)
 {
     PyGIForeignStruct *new_struct = g_slice_new (PyGIForeignStruct);
     new_struct->namespace = namespace_;
@@ -175,42 +171,3 @@ pygi_register_foreign_struct (const char* namespace_,
 
     g_ptr_array_add (foreign_structs, new_struct);
 }
-
-PyObject *
-pygi_require_foreign (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "namespace", "symbol", NULL };
-    const char *namespace = NULL;
-    const char *symbol = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                      "s|z:require_foreign",
-                                      kwlist, &namespace, &symbol)) {
-        return NULL;
-    }
-
-    if (symbol) {
-        PyGIForeignStruct *foreign;
-        foreign = pygi_struct_foreign_lookup_by_name (namespace, symbol);
-        if (foreign == NULL) {
-            return NULL;
-        }
-    } else {
-        PyObject *module = pygi_struct_foreign_load_module (namespace);
-        if (module) {
-            Py_DECREF (module);
-        } else {
-            return NULL;
-        }
-    }
-
-    Py_RETURN_NONE;
-}
-
-void
-pygi_foreign_init (void)
-{
-    if (foreign_structs == NULL) {
-        init_foreign_structs ();
-    }
-}
index afa4768..dd5f896 100644 (file)
 #define __PYGI_FOREIGN_H__
 
 #include <Python.h>
-#include "pygi-foreign-api.h"
+#include <girepository.h>
+
+#include "pygi.h"
 
 PyObject *pygi_struct_foreign_convert_to_g_argument (PyObject           *value,
                                                      GIInterfaceInfo    *interface_info,
                                                      GITransfer          transfer,
                                                      GIArgument         *arg);
 PyObject *pygi_struct_foreign_convert_from_g_argument (GIInterfaceInfo *interface_info,
-                                                       GITransfer       transfer,
                                                        GIArgument      *arg);
 PyObject *pygi_struct_foreign_release (GITypeInfo *type_info,
                                        gpointer struct_);
 
-void pygi_register_foreign_struct (const char* namespace_,
-                                   const char* name,
-                                   PyGIArgOverrideToGIArgumentFunc to_func,
-                                   PyGIArgOverrideFromGIArgumentFunc from_func,
-                                   PyGIArgOverrideReleaseFunc release_func);
-
-PyObject *pygi_require_foreign    (PyObject *self,
-                                   PyObject *args,
-                                   PyObject *kwargs);
-
-void pygi_foreign_init (void);
+void pygi_register_foreign_struct_real (const char* namespace_,
+                                        const char* name,
+                                        PyGIArgOverrideToGIArgumentFunc to_func,
+                                        PyGIArgOverrideFromGIArgumentFunc from_func,
+                                        PyGIArgOverrideReleaseFunc release_func);
 
 #endif /* __PYGI_FOREIGN_H__ */
diff --git a/gi/pygi-hashtable.c b/gi/pygi-hashtable.c
deleted file mode 100644 (file)
index 647bf04..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include "pygi-hashtable.h"
-#include "pygi-argument.h"
-#include "pygi-util.h"
-
-typedef struct _PyGIHashCache
-{
-    PyGIArgCache arg_cache;
-    PyGIArgCache *key_cache;
-    PyGIArgCache *value_cache;
-} PyGIHashCache;
-
-
-static void
-_hash_cache_free_func (PyGIHashCache *cache)
-{
-    if (cache != NULL) {
-        pygi_arg_cache_free (cache->key_cache);
-        pygi_arg_cache_free (cache->value_cache);
-        g_slice_free (PyGIHashCache, cache);
-    }
-}
-
-static gboolean
-_pygi_marshal_from_py_ghash (PyGIInvokeState   *state,
-                             PyGICallableCache *callable_cache,
-                             PyGIArgCache      *arg_cache,
-                             PyObject          *py_arg,
-                             GIArgument        *arg,
-                             gpointer          *cleanup_data)
-{
-    PyGIMarshalFromPyFunc key_from_py_marshaller;
-    PyGIMarshalFromPyFunc value_from_py_marshaller;
-
-    int i;
-    Py_ssize_t length;
-    PyObject *py_keys, *py_values;
-
-    GHashFunc hash_func;
-    GEqualFunc equal_func;
-
-    GHashTable *hash_ = NULL;
-    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    py_keys = PyMapping_Keys (py_arg);
-    if (py_keys == NULL) {
-        PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    length = PyMapping_Length (py_arg);
-    if (length < 0) {
-        Py_DECREF (py_keys);
-        return FALSE;
-    }
-
-    py_values = PyMapping_Values (py_arg);
-    if (py_values == NULL) {
-        Py_DECREF (py_keys);
-        return FALSE;
-    }
-
-    key_from_py_marshaller = hash_cache->key_cache->from_py_marshaller;
-    value_from_py_marshaller = hash_cache->value_cache->from_py_marshaller;
-
-    switch (hash_cache->key_cache->type_tag) {
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-            hash_func = g_str_hash;
-            equal_func = g_str_equal;
-            break;
-        default:
-            hash_func = NULL;
-            equal_func = NULL;
-    }
-
-    hash_ = g_hash_table_new (hash_func, equal_func);
-    if (hash_ == NULL) {
-        PyErr_NoMemory ();
-        Py_DECREF (py_keys);
-        Py_DECREF (py_values);
-        return FALSE;
-    }
-
-    for (i = 0; i < length; i++) {
-        GIArgument key, value;
-        gpointer key_cleanup_data = NULL;
-        gpointer value_cleanup_data = NULL;
-        PyObject *py_key = PyList_GET_ITEM (py_keys, i);
-        PyObject *py_value = PyList_GET_ITEM (py_values, i);
-        if (py_key == NULL || py_value == NULL)
-            goto err;
-
-        if (!key_from_py_marshaller ( state,
-                                      callable_cache,
-                                      hash_cache->key_cache,
-                                      py_key,
-                                     &key,
-                                     &key_cleanup_data))
-            goto err;
-
-        if (!value_from_py_marshaller ( state,
-                                        callable_cache,
-                                        hash_cache->value_cache,
-                                        py_value,
-                                       &value,
-                                       &value_cleanup_data))
-            goto err;
-
-        g_hash_table_insert (hash_,
-                             _pygi_arg_to_hash_pointer (&key, hash_cache->key_cache->type_info),
-                             _pygi_arg_to_hash_pointer (&value, hash_cache->value_cache->type_info));
-        continue;
-err:
-        /* FIXME: cleanup hash keys and values */
-        Py_XDECREF (py_key);
-        Py_XDECREF (py_value);
-        Py_DECREF (py_keys);
-        Py_DECREF (py_values);
-        g_hash_table_unref (hash_);
-        _PyGI_ERROR_PREFIX ("Item %i: ", i);
-        return FALSE;
-    }
-
-    arg->v_pointer = hash_;
-
-    if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
-        /* Free everything in cleanup. */
-        *cleanup_data = arg->v_pointer;
-    } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
-        /* Make a shallow copy so we can free the elements later in cleanup
-         * because it is possible invoke will free the list before our cleanup. */
-        *cleanup_data = g_hash_table_ref (arg->v_pointer);
-    } else { /* GI_TRANSFER_EVERYTHING */
-        /* No cleanup, everything is given to the callee.
-         * Note that the keys and values will leak for transfer everything because
-         * we do not use g_hash_table_new_full and set key/value_destroy_func. */
-        *cleanup_data = NULL;
-    }
-
-    return TRUE;
-}
-
-static void
-_pygi_marshal_cleanup_from_py_ghash  (PyGIInvokeState *state,
-                                      PyGIArgCache    *arg_cache,
-                                      PyObject        *py_arg,
-                                      gpointer         data,
-                                      gboolean         was_processed)
-{
-    if (data == NULL)
-        return;
-
-    if (was_processed) {
-        GHashTable *hash_;
-        PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
-        hash_ = (GHashTable *)data;
-
-        /* clean up keys and values first */
-        if (hash_cache->key_cache->from_py_cleanup != NULL ||
-                hash_cache->value_cache->from_py_cleanup != NULL) {
-            GHashTableIter hiter;
-            gpointer key;
-            gpointer value;
-
-            PyGIMarshalCleanupFunc key_cleanup_func =
-                hash_cache->key_cache->from_py_cleanup;
-            PyGIMarshalCleanupFunc value_cleanup_func =
-                hash_cache->value_cache->from_py_cleanup;
-
-            g_hash_table_iter_init (&hiter, hash_);
-            while (g_hash_table_iter_next (&hiter, &key, &value)) {
-                if (key != NULL && key_cleanup_func != NULL)
-                    key_cleanup_func (state,
-                                      hash_cache->key_cache,
-                                      NULL,
-                                      key,
-                                      TRUE);
-                if (value != NULL && value_cleanup_func != NULL)
-                    value_cleanup_func (state,
-                                        hash_cache->value_cache,
-                                        NULL,
-                                        value,
-                                        TRUE);
-            }
-        }
-
-        g_hash_table_unref (hash_);
-    }
-}
-
-static PyObject *
-_pygi_marshal_to_py_ghash (PyGIInvokeState   *state,
-                           PyGICallableCache *callable_cache,
-                           PyGIArgCache      *arg_cache,
-                           GIArgument        *arg)
-{
-    GHashTable *hash_;
-    GHashTableIter hash_table_iter;
-
-    PyGIMarshalToPyFunc key_to_py_marshaller;
-    PyGIMarshalToPyFunc value_to_py_marshaller;
-
-    PyGIArgCache *key_arg_cache;
-    PyGIArgCache *value_arg_cache;
-    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
-    GIArgument key_arg;
-    GIArgument value_arg;
-
-    PyObject *py_obj = NULL;
-
-    hash_ = arg->v_pointer;
-
-    if (hash_ == NULL) {
-        py_obj = Py_None;
-        Py_INCREF (py_obj);
-        return py_obj;
-    }
-
-    py_obj = PyDict_New ();
-    if (py_obj == NULL)
-        return NULL;
-
-    key_arg_cache = hash_cache->key_cache;
-    key_to_py_marshaller = key_arg_cache->to_py_marshaller;
-
-    value_arg_cache = hash_cache->value_cache;
-    value_to_py_marshaller = value_arg_cache->to_py_marshaller;
-
-    g_hash_table_iter_init (&hash_table_iter, hash_);
-    while (g_hash_table_iter_next (&hash_table_iter,
-                                   &key_arg.v_pointer,
-                                   &value_arg.v_pointer)) {
-        PyObject *py_key;
-        PyObject *py_value;
-        int retval;
-
-
-        _pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_info);
-        py_key = key_to_py_marshaller ( state,
-                                      callable_cache,
-                                      key_arg_cache,
-                                     &key_arg);
-
-        if (py_key == NULL) {
-            Py_CLEAR (py_obj);
-            return NULL;
-        }
-
-        _pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_info);
-        py_value = value_to_py_marshaller ( state,
-                                          callable_cache,
-                                          value_arg_cache,
-                                         &value_arg);
-
-        if (py_value == NULL) {
-            Py_CLEAR (py_obj);
-            Py_DECREF(py_key);
-            return NULL;
-        }
-
-        retval = PyDict_SetItem (py_obj, py_key, py_value);
-
-        Py_DECREF (py_key);
-        Py_DECREF (py_value);
-
-        if (retval < 0) {
-            Py_CLEAR (py_obj);
-            return NULL;
-        }
-    }
-
-    return py_obj;
-}
-
-static void
-_pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
-                                   PyGIArgCache    *arg_cache,
-                                   PyObject        *dummy,
-                                   gpointer         data,
-                                   gboolean         was_processed)
-{
-    if (data == NULL)
-        return;
-
-    /* assume hashtable has boxed key and value */
-    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING || arg_cache->transfer == GI_TRANSFER_CONTAINER)
-        g_hash_table_unref ( (GHashTable *)data);
-}
-
-static void
-_arg_cache_from_py_ghash_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_ghash;
-    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_ghash;
-}
-
-static void
-_arg_cache_to_py_ghash_setup (PyGIArgCache *arg_cache)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_ghash;
-    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_ghash;
-}
-
-static gboolean
-pygi_arg_hash_table_setup_from_info (PyGIHashCache      *hc,
-                                     GITypeInfo         *type_info,
-                                     GIArgInfo          *arg_info,
-                                     GITransfer          transfer,
-                                     PyGIDirection       direction,
-                                     PyGICallableCache  *callable_cache)
-{
-    GITypeInfo *key_type_info;
-    GITypeInfo *value_type_info;
-    GITransfer item_transfer;
-
-    if (!pygi_arg_base_setup ((PyGIArgCache *)hc, type_info, arg_info, transfer, direction))
-        return FALSE;
-
-    ( (PyGIArgCache *)hc)->destroy_notify = (GDestroyNotify)_hash_cache_free_func;
-    key_type_info = g_type_info_get_param_type (type_info, 0);
-    value_type_info = g_type_info_get_param_type (type_info, 1);
-
-    item_transfer =
-        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
-
-    hc->key_cache = pygi_arg_cache_new (key_type_info,
-                                        NULL,
-                                        item_transfer,
-                                        direction,
-                                        callable_cache,
-                                        0, 0);
-
-    if (hc->key_cache == NULL) {
-        return FALSE;
-    }
-
-    hc->value_cache = pygi_arg_cache_new (value_type_info,
-                                          NULL,
-                                          item_transfer,
-                                          direction,
-                                          callable_cache,
-                                          0, 0);
-
-    if (hc->value_cache == NULL) {
-        return FALSE;
-    }
-
-    g_base_info_unref( (GIBaseInfo *)key_type_info);
-    g_base_info_unref( (GIBaseInfo *)value_type_info);
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        _arg_cache_from_py_ghash_setup ((PyGIArgCache *)hc);
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        _arg_cache_to_py_ghash_setup ((PyGIArgCache *)hc);
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_hash_table_new_from_info (GITypeInfo         *type_info,
-                                   GIArgInfo          *arg_info,
-                                   GITransfer          transfer,
-                                   PyGIDirection       direction,
-                                   PyGICallableCache  *callable_cache)
-{
-    gboolean res = FALSE;
-    PyGIHashCache *hc = NULL;
-
-    hc = g_slice_new0 (PyGIHashCache);
-    if (hc == NULL)
-        return NULL;
-
-    res = pygi_arg_hash_table_setup_from_info (hc,
-                                               type_info,
-                                               arg_info,
-                                               transfer,
-                                               direction,
-                                               callable_cache);
-    if (res) {
-        return (PyGIArgCache *)hc;
-    } else {
-        pygi_arg_cache_free ((PyGIArgCache *)hc);
-        return NULL;
-    }
-}
diff --git a/gi/pygi-hashtable.h b/gi/pygi-hashtable.h
deleted file mode 100644 (file)
index 74cd04f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_HASHTABLE_H__
-#define __PYGI_HASHTABLE_H__
-
-#include "pygi-cache.h"
-#include <girepository.h>
-
-G_BEGIN_DECLS
-
-PyGIArgCache *pygi_arg_hash_table_new_from_info (GITypeInfo         *type_info,
-                                                 GIArgInfo          *arg_info,   /* may be null */
-                                                 GITransfer          transfer,
-                                                 PyGIDirection       direction,
-                                                 PyGICallableCache  *callable_cache);
-
-G_END_DECLS
-
-#endif /*__PYGI_HASHTABLE_H__*/
index 1b33e9a..d850052 100644 (file)
@@ -2,7 +2,6 @@
  * vim: tabstop=4 shiftwidth=4 expandtab
  *
  * Copyright (C) 2005-2009 Johan Dahlin <johan@gnome.org>
- * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
  *
  *   pygi-info.c: GI.*Info wrappers.
  *
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-info.h"
+#include "pygi-private.h"
 #include "pygi-cache.h"
-#include "pygi-invoke.h"
-#include "pygi-type.h"
-#include "pygi-argument.h"
-#include "pygi-util.h"
-#include "pygtype.h"
 
+#include <pygobject.h>
 #include <pyglib-python-compat.h>
 
-
-/* _generate_doc_string
- *
- * C wrapper to call Python implemented "gi.docstring.generate_doc_string"
- */
-static PyObject *
-_generate_doc_string(PyGIBaseInfo *self)
-{
-    static PyObject *_py_generate_doc_string = NULL;
-
-    if (_py_generate_doc_string == NULL) {
-        PyObject *mod = PyImport_ImportModule ("gi.docstring");
-        if (!mod)
-            return NULL;
-
-        _py_generate_doc_string = PyObject_GetAttrString (mod, "generate_doc_string");
-        if (_py_generate_doc_string == NULL) {
-            Py_DECREF (mod);
-            return NULL;
-        }
-        Py_DECREF (mod);
-    }
-
-    return PyObject_CallFunctionObjArgs (_py_generate_doc_string, self, NULL);
-}
-
-static PyObject *
-_get_info_string (PyGIBaseInfo *self,
-                  const gchar* (*get_info_string)(GIBaseInfo*))
-{
-    const gchar *value = get_info_string ((GIBaseInfo*)self->info);
-    if (value == NULL) {
-        Py_RETURN_NONE;
-    }
-    return PYGLIB_PyUnicode_FromString (value);
-}
-
-static PyObject *
-_get_child_info (PyGIBaseInfo *self,
-                 GIBaseInfo* (*get_child_info)(GIBaseInfo*))
-{
-    GIBaseInfo *info;
-    PyObject *py_info;
-
-    info = get_child_info ((GIBaseInfo*)self->info);
-    if (info == NULL) {
-        Py_RETURN_NONE;
-    }
-
-    py_info = _pygi_info_new (info);
-    g_base_info_unref (info);
-    return py_info;
-}
-
-
-static PyObject *
-_get_child_info_by_name (PyGIBaseInfo *self, PyObject *py_name,
-                         GIBaseInfo* (*get_child_info_by_name)(GIBaseInfo*, const gchar*))
-{
-    GIBaseInfo *info;
-    PyObject *py_info;
-    char *name;
-
-    if (!PYGLIB_PyUnicode_Check (py_name)) {
-        PyErr_SetString (PyExc_TypeError, "expected string name");
-        return NULL;
-    }
-
-    name = PYGLIB_PyUnicode_AsString (py_name);
-    info = get_child_info_by_name ((GIObjectInfo*)self->info, name);
-    if (info == NULL) {
-        Py_RETURN_NONE;
-    }
-
-    py_info = _pygi_info_new (info);
-    g_base_info_unref (info);
-    return py_info;
-}
-
-
-/* _make_infos_tuple
- *
- * Build a tuple from the common API pattern in GI of having a
- * function which returns a count and an indexed GIBaseInfo
- * in the range of 0 to count;
- */
-static PyObject *
-_make_infos_tuple (PyGIBaseInfo *self,
-                   gint (*get_n_infos)(GIBaseInfo*),
-                   GIBaseInfo* (*get_info)(GIBaseInfo*, gint))
-{
-    gint n_infos;
-    PyObject *infos;
-    gint i;
-
-    n_infos = get_n_infos ( (GIBaseInfo *) self->info);
-
-    infos = PyTuple_New (n_infos);
-    if (infos == NULL) {
-        return NULL;
-    }
-
-    for (i = 0; i < n_infos; i++) {
-        GIBaseInfo *info;
-        PyObject *py_info;
-
-        info = (GIBaseInfo *) get_info (self->info, i);
-        g_assert (info != NULL);
-
-        py_info = _pygi_info_new (info);
-
-        g_base_info_unref (info);
-
-        if (py_info == NULL) {
-            Py_CLEAR (infos);
-            break;
-        }
-
-        PyTuple_SET_ITEM (infos, i, py_info);
-    }
-
-    return infos;
-}
-
-
 /* BaseInfo */
 
-/* We need to be careful about calling g_base_info_get_name because
- * calling it with a GI_INFO_TYPE_TYPE will crash.
- * See: https://bugzilla.gnome.org/show_bug.cgi?id=709456
- */
-static const char *
-_safe_base_info_get_name (GIBaseInfo *info)
-{
-    if (g_base_info_get_type (info) == GI_INFO_TYPE_TYPE) {
-        return "type_type_instance";
-    } else {
-        return g_base_info_get_name (info);
-    }
-}
-
 static void
 _base_info_dealloc (PyGIBaseInfo *self)
 {
-    if (self->inst_weakreflist != NULL)
-        PyObject_ClearWeakRefs ( (PyObject *) self);
+    PyObject_GC_UnTrack ( (PyObject *) self);
+
+    PyObject_ClearWeakRefs ( (PyObject *) self);
 
     g_base_info_unref (self->info);
 
-    if (self->cache != NULL)
-        pygi_callable_cache_free ( (PyGICallableCache *) self->cache);
+    _pygi_callable_cache_free(self->cache);
+
+    Py_TYPE( (PyObject *) self)->tp_free ( (PyObject *) self);
+}
 
-    Py_TYPE (self)->tp_free ((PyObject *)self);
+static int
+_base_info_traverse (PyGIBaseInfo *self,
+                     visitproc     visit,
+                     void         *arg)
+{
+    return 0;
 }
 
 static PyObject *
 _base_info_repr (PyGIBaseInfo *self)
 {
-
-    return PYGLIB_PyUnicode_FromFormat ("%s(%s)",
-                                        Py_TYPE( (PyObject *) self)->tp_name,
-                                        _safe_base_info_get_name (self->info));
+    return PYGLIB_PyUnicode_FromFormat ("<%s object (%s) at 0x%p>",
+                                        Py_TYPE( (PyObject *) self)->tp_name, 
+                                        g_base_info_get_name (self->info), 
+                                        (void *) self);
 }
 
 static PyObject *
-_wrap_g_base_info_equal (PyGIBaseInfo *self, PyObject *other)
+_base_info_richcompare (PyGIBaseInfo *self, PyObject *other, int op)
 {
+    PyObject *res;
     GIBaseInfo *other_info;
 
-    if (!PyObject_TypeCheck (other, &PyGIBaseInfo_Type)) {
-        Py_INCREF (Py_NotImplemented);
+    if (!PyObject_TypeCheck(other, &PyGIBaseInfo_Type)) {
+        Py_INCREF(Py_NotImplemented);
         return Py_NotImplemented;
     }
 
     other_info = ((PyGIBaseInfo *)other)->info;
-    if (g_base_info_equal (self->info, other_info)) {
-        Py_RETURN_TRUE;
-    } else {
-        Py_RETURN_FALSE;
-    }
-}
-
-static PyObject *
-_base_info_richcompare (PyGIBaseInfo *self, PyObject *other, int op)
-{
-    PyObject *res;
 
     switch (op) {
         case Py_EQ:
-            return _wrap_g_base_info_equal (self, other);
+            res = g_base_info_equal (self->info, other_info) ? Py_True : Py_False;
+            break;
         case Py_NE:
-            res = _wrap_g_base_info_equal (self, other);
-            if (res == Py_True) {
-                Py_DECREF (res);
-                Py_RETURN_FALSE;
-            } else {
-                Py_DECREF (res);
-                Py_RETURN_TRUE;
-            }
+            res = g_base_info_equal (self->info, other_info) ? Py_False : Py_True;
+            break;
         default:
             res = Py_NotImplemented;
             break;
@@ -237,114 +88,25 @@ _base_info_richcompare (PyGIBaseInfo *self, PyObject *other, int op)
     return res;
 }
 
-PYGLIB_DEFINE_TYPE("gi.BaseInfo", PyGIBaseInfo_Type, PyGIBaseInfo);
+static PyMethodDef _PyGIBaseInfo_methods[];
 
-gboolean
-_pygi_is_python_keyword (const gchar *name)
-{
-    /* It may be better to use keyword.iskeyword(); keep in sync with
-     * python -c 'import keyword; print(keyword.kwlist)' */
-#if PY_VERSION_HEX < 0x03000000
-    /* Python 2.x */
-    static const gchar* keywords[] = {"and", "as", "assert", "break", "class",
-        "continue", "def", "del", "elif", "else", "except", "exec", "finally",
-        "for", "from", "global", "if", "import", "in", "is", "lambda", "not",
-        "or", "pass", "print", "raise", "return", "try", "while", "with",
-        "yield", NULL};
-#elif PY_VERSION_HEX < 0x04000000
-    /* Python 3.x; note that we explicitly keep "print"; it is not a keyword
-     * any more, but we do not want to break API between Python versions */
-    static const gchar* keywords[] = {"False", "None", "True", "and", "as",
-        "assert", "break", "class", "continue", "def", "del", "elif", "else",
-        "except", "finally", "for", "from", "global", "if", "import", "in",
-        "is", "lambda", "nonlocal", "not", "or", "pass", "raise", "return",
-        "try", "while", "with", "yield",
-        "print", NULL};
-#else
-    #error Need keyword list for this major Python version
-#endif
-
-    const gchar **i;
-
-    for (i = keywords; *i != NULL; ++i) {
-        if (strcmp (name, *i) == 0) {
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
-
-static PyObject *
-_wrap_g_base_info_get_type (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_base_info_get_type (self->info));
-}
+PYGLIB_DEFINE_TYPE("gi.BaseInfo", PyGIBaseInfo_Type, PyGIBaseInfo);
 
 static PyObject *
 _wrap_g_base_info_get_name (PyGIBaseInfo *self)
 {
-    const gchar *name;
-
-    name = _safe_base_info_get_name (self->info);
-
-    /* escape keywords */
-    if (_pygi_is_python_keyword (name)) {
-        gchar *escaped = g_strconcat (name, "_", NULL);
-        PyObject *obj = PYGLIB_PyUnicode_FromString (escaped);
-        g_free (escaped);
-        return obj;
-    }
-
-    return PYGLIB_PyUnicode_FromString (name);
-}
-
-static PyObject *
-_wrap_g_base_info_get_name_unescaped (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, _safe_base_info_get_name);
+    return PYGLIB_PyUnicode_FromString (g_base_info_get_name (self->info));
 }
 
 static PyObject *
 _wrap_g_base_info_get_namespace (PyGIBaseInfo *self)
 {
-    return _get_info_string (self, g_base_info_get_namespace);
-}
-
-static PyObject *
-_wrap_g_base_info_is_deprecated (PyGIBaseInfo *self)
-{
-    if (g_base_info_is_deprecated (self->info))
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
-}
-
-static PyObject *
-_wrap_g_base_info_get_attribute (PyGIBaseInfo *self, PyObject *arg)
-{
-    char *name;
-    const char *value;
-
-    if (!PYGLIB_PyUnicode_Check (arg)) {
-        PyErr_SetString (PyExc_TypeError, "expected string name");
-        return NULL;
-    }
-
-    name = PYGLIB_PyUnicode_AsString (arg);
-    value = g_base_info_get_attribute (self->info, name);
-    if (value == NULL) {
-        Py_RETURN_NONE;
-    }
-    return PYGLIB_PyUnicode_FromString (value);
+    return PYGLIB_PyUnicode_FromString (g_base_info_get_namespace (self->info));
 }
 
 static PyObject *
 _wrap_g_base_info_get_container (PyGIBaseInfo *self)
 {
-    /* Note: don't use _get_child_info because g_base_info_get_container
-     * is marked as [transfer none] and therefore returns a borrowed ref.
-     */
     GIBaseInfo *info;
 
     info = g_base_info_get_container (self->info);
@@ -358,66 +120,12 @@ _wrap_g_base_info_get_container (PyGIBaseInfo *self)
 
 
 static PyMethodDef _PyGIBaseInfo_methods[] = {
-    { "get_type", (PyCFunction) _wrap_g_base_info_get_type, METH_NOARGS },
     { "get_name", (PyCFunction) _wrap_g_base_info_get_name, METH_NOARGS },
-    { "get_name_unescaped", (PyCFunction) _wrap_g_base_info_get_name_unescaped, METH_NOARGS },
     { "get_namespace", (PyCFunction) _wrap_g_base_info_get_namespace, METH_NOARGS },
-    { "is_deprecated", (PyCFunction) _wrap_g_base_info_is_deprecated, METH_NOARGS },
-    { "get_attribute", (PyCFunction) _wrap_g_base_info_get_attribute, METH_O },
     { "get_container", (PyCFunction) _wrap_g_base_info_get_container, METH_NOARGS },
-    { "equal", (PyCFunction) _wrap_g_base_info_equal, METH_O },
     { NULL, NULL, 0 }
 };
 
-/* _base_info_getattro:
- *
- * The usage of __getattr__ is needed because the get/set method table
- * does not work for __doc__.
- */
-static PyObject *
-_base_info_getattro(PyGIBaseInfo *self, PyObject *name)
-{
-    PyObject *result;
-
-    static PyObject *docstr;
-    if (docstr == NULL) {
-        docstr= PYGLIB_PyUnicode_InternFromString("__doc__");
-        if (docstr == NULL)
-            return NULL;
-    }
-
-    Py_INCREF (name);
-    PYGLIB_PyUnicode_InternInPlace (&name);
-
-    if (name == docstr) {
-        result = _generate_doc_string (self);
-    } else {
-        result = PyObject_GenericGetAttr ((PyObject *)self, name);
-    }
-
-    Py_DECREF (name);
-    return result;
-}
-
-static PyObject *
-_base_info_attr_name(PyGIBaseInfo *self, void *closure)
-{
-    return _wrap_g_base_info_get_name (self);
-}
-
-static PyObject *
-_base_info_attr_module(PyGIBaseInfo *self, void *closure)
-{
-    return PYGLIB_PyUnicode_FromFormat ("gi.repository.%s",
-                                        g_base_info_get_namespace (self->info));
-}
-
-static PyGetSetDef _base_info_getsets[] = {
-        { "__name__", (getter)_base_info_attr_name, (setter)0, "Name", NULL},
-        { "__module__", (getter)_base_info_attr_module, (setter)0, "Module name", NULL},
-    { NULL, 0, 0 }
-};
-
 PyObject *
 _pygi_info_new (GIBaseInfo *info)
 {
@@ -439,9 +147,11 @@ _pygi_info_new (GIBaseInfo *info)
             type = &PyGICallbackInfo_Type;
             break;
         case GI_INFO_TYPE_STRUCT:
-        case GI_INFO_TYPE_BOXED:
             type = &PyGIStructInfo_Type;
             break;
+        case GI_INFO_TYPE_BOXED:
+            type = &PyGIBoxedInfo_Type;
+            break;
         case GI_INFO_TYPE_ENUM:
         case GI_INFO_TYPE_FLAGS:
             type = &PyGIEnumInfo_Type;
@@ -493,8 +203,6 @@ _pygi_info_new (GIBaseInfo *info)
     }
 
     self->info = g_base_info_ref (info);
-    self->inst_weakreflist = NULL;
-    self->cache = NULL;
 
     return (PyObject *) self;
 }
@@ -512,7 +220,7 @@ _pygi_object_get_gi_info (PyObject     *object,
     }
     if (!PyObject_TypeCheck (py_info, type)) {
         PyErr_Format (PyExc_TypeError, "attribute '__info__' must be %s, not %s",
-                      type->tp_name, Py_TYPE(py_info)->tp_name);
+                      type->tp_name, Py_TYPE(&py_info)->tp_name);
         goto out;
     }
 
@@ -527,266 +235,64 @@ out:
 
 
 /* CallableInfo */
-PYGLIB_DEFINE_TYPE ("gi.CallableInfo", PyGICallableInfo_Type, PyGICallableInfo);
-
-/* _callable_info_call:
- *
- * Shared wrapper for invoke which can be bound (instance method or class constructor)
- * or unbound (function or static method).
- */
-static PyObject *
-_callable_info_call (PyGICallableInfo *self, PyObject *args, PyObject *kwargs)
-{
-    /* Insert the bound arg at the beginning of the invoke method args. */
-    if (self->py_bound_arg) {
-        int i;
-        PyObject *result;
-        Py_ssize_t argcount = PyTuple_Size (args);
-        PyObject *newargs = PyTuple_New (argcount + 1);
-        if (newargs == NULL)
-            return NULL;
-
-        Py_INCREF (self->py_bound_arg);
-        PyTuple_SET_ITEM (newargs, 0, self->py_bound_arg);
-
-        for (i = 0; i < argcount; i++) {
-            PyObject *v = PyTuple_GET_ITEM (args, i);
-            Py_XINCREF (v);
-            PyTuple_SET_ITEM (newargs, i+1, v);
-        }
-
-        /* Invoke with the original GI info struct this wrapper was based upon.
-         * This is necessary to maintain the same cache for all bound versions.
-         */
-        result = _wrap_g_callable_info_invoke ((PyGIBaseInfo *)self->py_unbound_info,
-                                               newargs, kwargs);
-        Py_DECREF (newargs);
-        return result;
-
-    } else {
-        /* We should never have an unbound info when calling when calling invoke
-         * at this point because the descriptor implementation on sub-classes
-         * should return "self" not a copy when there is no bound arg.
-         */
-        g_assert (self->py_unbound_info == NULL);
-        return _wrap_g_callable_info_invoke ((PyGIBaseInfo *)self, args, kwargs);
-    }
-}
-
+PYGLIB_DEFINE_TYPE ("gi.CallableInfo", PyGICallableInfo_Type, PyGIBaseInfo);
 
-/* _function_info_call:
- *
- * Specialization of _callable_info_call for GIFunctionInfo which
- * handles constructor error conditions.
- */
 static PyObject *
-_function_info_call (PyGICallableInfo *self, PyObject *args, PyObject *kwargs)
-{
-    if (self->py_bound_arg) {
-        GIFunctionInfoFlags flags;
-
-        /* Ensure constructors are only called as class methods on the class
-         * implementing the constructor and not on sub-classes.
-         */
-        flags = g_function_info_get_flags ( (GIFunctionInfo*) self->base.info);
-        if (flags & GI_FUNCTION_IS_CONSTRUCTOR) {
-            PyObject *py_str_name;
-            const gchar *str_name;
-            GIBaseInfo *container_info = g_base_info_get_container (self->base.info);
-            g_assert (container_info != NULL);
-
-            py_str_name = PyObject_GetAttrString (self->py_bound_arg, "__name__");
-            if (py_str_name == NULL)
-                return NULL;
-
-            if (PyUnicode_Check (py_str_name) ) {
-                PyObject *tmp = PyUnicode_AsUTF8String (py_str_name);
-                Py_DECREF (py_str_name);
-                py_str_name = tmp;
-            }
-
-#if PY_VERSION_HEX < 0x03000000
-            str_name = PyString_AsString (py_str_name);
-#else
-            str_name = PyBytes_AsString (py_str_name);
-#endif
-
-            if (strcmp (str_name, _safe_base_info_get_name (container_info))) {
-                PyErr_Format (PyExc_TypeError,
-                              "%s constructor cannot be used to create instances of "
-                              "a subclass %s",
-                              _safe_base_info_get_name (container_info),
-                              str_name);
-                Py_DECREF (py_str_name);
-                return NULL;
-            }
-            Py_DECREF (py_str_name);
-        }
-    }
-
-    return _callable_info_call (self, args, kwargs);
-}
-
-/* _new_bound_callable_info
- *
- * Utility function for sub-classes to create a bound version of themself.
- */
-static PyGICallableInfo *
-_new_bound_callable_info (PyGICallableInfo *self, PyObject *bound_arg)
+_wrap_g_callable_info_get_arguments (PyGIBaseInfo *self)
 {
-    PyGICallableInfo *new_self;
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-    /* Return self if this is already bound or there is nothing passed to bind.  */
-    if (self->py_bound_arg != NULL || bound_arg == NULL || bound_arg == Py_None) {
-        Py_INCREF ((PyObject *)self);
-        return self;
-    }
+    n_infos = g_callable_info_get_n_args ( (GICallableInfo *) self->info);
 
-    new_self = (PyGICallableInfo *)_pygi_info_new (self->base.info);
-    if (new_self == NULL)
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
         return NULL;
-
-    Py_INCREF ((PyObject *)self);
-    new_self->py_unbound_info = (struct PyGICallableInfo *)self;
-
-    Py_INCREF (bound_arg);
-    new_self->py_bound_arg = bound_arg;
-
-    return new_self;
-}
-
-/* _function_info_descr_get
- *
- * Descriptor protocol implementation for functions, methods, and constructors.
- */
-static PyObject *
-_function_info_descr_get (PyGICallableInfo *self, PyObject *obj, PyObject *type) {
-    GIFunctionInfoFlags flags;
-    PyObject *bound_arg = NULL;
-
-    flags = g_function_info_get_flags ( (GIFunctionInfo*) self->base.info);
-    if (flags & GI_FUNCTION_IS_CONSTRUCTOR) {
-        if (type == NULL)
-            bound_arg = (PyObject *)(Py_TYPE(obj));
-        else
-            bound_arg = type;
-    } else if (flags & GI_FUNCTION_IS_METHOD) {
-        bound_arg = obj;
     }
 
-    return (PyObject *)_new_bound_callable_info (self, bound_arg);
-}
-
-/* _vfunc_info_descr_get
- *
- * Descriptor protocol implementation for virtual functions.
- */
-static PyObject *
-_vfunc_info_descr_get (PyGICallableInfo *self, PyObject *obj, PyObject *type) {
-    PyObject *result;
-    PyObject *bound_arg = NULL;
-
-    bound_arg = PyObject_GetAttrString (type, "__gtype__");
-    if (bound_arg == NULL)
-        return NULL;
-
-    /* _new_bound_callable_info adds its own ref so free the one from GetAttrString */
-    result = (PyObject *)_new_bound_callable_info (self, bound_arg);
-    Py_DECREF (bound_arg);
-    return result;
-}
-
-static void
-_callable_info_dealloc (PyGICallableInfo *self)
-{
-    Py_CLEAR (self->py_unbound_info);
-    Py_CLEAR (self->py_bound_arg);
-
-    PyGIBaseInfo_Type.tp_dealloc ((PyObject *) self);
-}
-
-static PyObject *
-_wrap_g_callable_info_get_arguments (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_callable_info_get_n_args, g_callable_info_get_arg);
-}
-
-static PyObject *
-_wrap_g_callable_info_get_return_type (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_callable_info_get_return_type);
-}
-
-static PyObject *
-_wrap_g_callable_info_get_caller_owns (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_callable_info_get_caller_owns (self->info) );
-}
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
 
-static PyObject *
-_wrap_g_callable_info_may_return_null (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-            g_callable_info_may_return_null (self->info) );
-}
+        info = (GIBaseInfo *) g_callable_info_get_arg ( (GICallableInfo *) self->info, i);
+        g_assert (info != NULL);
 
-static PyObject *
-_wrap_g_callable_info_skip_return (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (g_callable_info_skip_return (self->info));
-}
+        py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_callable_info_get_return_attribute (PyGIBaseInfo *self, PyObject *py_name)
-{
-    gchar *name;
-    const gchar *attr;
+        g_base_info_unref (info);
 
-    if (!PYGLIB_PyUnicode_Check (py_name)) {
-        PyErr_SetString (PyExc_TypeError, "expected string name");
-        return NULL;
-    }
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
 
-    name = PYGLIB_PyUnicode_AsString (py_name);
-    attr = g_callable_info_get_return_attribute (self->info, name);
-    if (attr) {
-        return PYGLIB_PyUnicode_FromString (
-                g_callable_info_get_return_attribute (self->info, name));
-    } else {
-        PyErr_Format(PyExc_AttributeError, "return attribute %s not found", name);
-        return NULL;
+        PyTuple_SET_ITEM (infos, i, py_info);
     }
-}
 
-static PyObject *
-_wrap_g_callable_info_can_throw_gerror (PyGIBaseInfo *self)
-{
-    if (g_callable_info_can_throw_gerror (self->info))
-        Py_RETURN_TRUE;
-    else
-        Py_RETURN_FALSE;
+    return infos;
 }
 
 static PyMethodDef _PyGICallableInfo_methods[] = {
     { "invoke", (PyCFunction) _wrap_g_callable_info_invoke, METH_VARARGS | METH_KEYWORDS },
     { "get_arguments", (PyCFunction) _wrap_g_callable_info_get_arguments, METH_NOARGS },
-    { "get_return_type", (PyCFunction) _wrap_g_callable_info_get_return_type, METH_NOARGS },
-    { "get_caller_owns", (PyCFunction) _wrap_g_callable_info_get_caller_owns, METH_NOARGS },
-    { "may_return_null", (PyCFunction) _wrap_g_callable_info_may_return_null, METH_NOARGS },
-    { "skip_return", (PyCFunction) _wrap_g_callable_info_skip_return, METH_NOARGS },
-    { "get_return_attribute", (PyCFunction) _wrap_g_callable_info_get_return_attribute, METH_O },
-    { "can_throw_gerror", (PyCFunction) _wrap_g_callable_info_can_throw_gerror, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
 /* CallbackInfo */
-PYGLIB_DEFINE_TYPE ("gi.CallbackInfo", PyGICallbackInfo_Type, PyGICallableInfo);
+PYGLIB_DEFINE_TYPE ("gi.CallbackInfo", PyGICallbackInfo_Type, PyGIBaseInfo);
 
 static PyMethodDef _PyGICallbackInfo_methods[] = {
     { NULL, NULL, 0 }
 };
 
+/* BoxedInfo */
+PYGLIB_DEFINE_TYPE ("gi.BoxedInfo", PyGIBoxedInfo_Type, PyGIBaseInfo);
+
+static PyMethodDef _PyGIBoxedInfo_methods[] = {
+    { NULL, NULL, 0 }
+};
+
 /* ErrorDomainInfo */
 PYGLIB_DEFINE_TYPE ("gi.ErrorDomainInfo", PyGIErrorDomainInfo_Type, PyGIBaseInfo);
 
@@ -795,244 +301,36 @@ static PyMethodDef _PyGIErrorDomainInfo_methods[] = {
 };
 
 /* SignalInfo */
-PYGLIB_DEFINE_TYPE ("gi.SignalInfo", PyGISignalInfo_Type, PyGICallableInfo);
-
-static PyObject *
-_wrap_g_signal_info_get_flags (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_signal_info_get_flags ((GISignalInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_signal_info_get_class_closure (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_signal_info_get_class_closure);
-}
-
-static PyObject *
-_wrap_g_signal_info_true_stops_emit (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-            g_signal_info_true_stops_emit ((GISignalInfo *)self->info) );
-}
+PYGLIB_DEFINE_TYPE ("gi.SignalInfo", PyGISignalInfo_Type, PyGIBaseInfo);
 
 static PyMethodDef _PyGISignalInfo_methods[] = {
-    { "get_flags", (PyCFunction) _wrap_g_signal_info_get_flags, METH_NOARGS },
-    { "get_class_closure", (PyCFunction) _wrap_g_signal_info_get_class_closure, METH_NOARGS },
-    { "true_stops_emit", (PyCFunction) _wrap_g_signal_info_true_stops_emit, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
 /* PropertyInfo */
 PYGLIB_DEFINE_TYPE ("gi.PropertyInfo", PyGIPropertyInfo_Type, PyGIBaseInfo);
 
-static PyObject *
-_wrap_g_property_info_get_flags (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_property_info_get_flags ((GIPropertyInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_property_info_get_type (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_property_info_get_type);
-}
-
-static PyObject *
-_wrap_g_property_info_get_ownership_transfer (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_property_info_get_ownership_transfer ((GIPropertyInfo *)self->info) );
-}
-
 static PyMethodDef _PyGIPropertyInfo_methods[] = {
-    { "get_flags", (PyCFunction) _wrap_g_property_info_get_flags, METH_NOARGS },
-    { "get_type", (PyCFunction) _wrap_g_property_info_get_type, METH_NOARGS },
-    { "get_ownership_transfer", (PyCFunction) _wrap_g_property_info_get_ownership_transfer, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
-
 /* ArgInfo */
 PYGLIB_DEFINE_TYPE ("gi.ArgInfo", PyGIArgInfo_Type, PyGIBaseInfo);
 
-static PyObject *
-_wrap_g_arg_info_get_direction (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-           g_arg_info_get_direction ((GIArgInfo*)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_is_caller_allocates (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-           g_arg_info_is_caller_allocates ((GIArgInfo*)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_is_return_value (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-           g_arg_info_is_return_value ((GIArgInfo*)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_is_optional (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-           g_arg_info_is_optional ((GIArgInfo*)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_may_be_null (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (
-           g_arg_info_may_be_null ((GIArgInfo*)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_get_ownership_transfer (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_arg_info_get_ownership_transfer ((GIArgInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_get_scope (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_arg_info_get_scope ((GIArgInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_get_closure (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_arg_info_get_closure ((GIArgInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_get_destroy (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (
-            g_arg_info_get_destroy ((GIArgInfo *)self->info) );
-}
-
-static PyObject *
-_wrap_g_arg_info_get_type (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_arg_info_get_type);
-}
-
 static PyMethodDef _PyGIArgInfo_methods[] = {
-    { "get_direction", (PyCFunction) _wrap_g_arg_info_get_direction, METH_NOARGS },
-    { "is_caller_allocates", (PyCFunction) _wrap_g_arg_info_is_caller_allocates, METH_NOARGS },
-    { "is_return_value", (PyCFunction) _wrap_g_arg_info_is_return_value, METH_NOARGS },
-    { "is_optional", (PyCFunction) _wrap_g_arg_info_is_optional, METH_NOARGS },
-    { "may_be_null", (PyCFunction) _wrap_g_arg_info_may_be_null, METH_NOARGS },
-    { "get_ownership_transfer", (PyCFunction) _wrap_g_arg_info_get_ownership_transfer, METH_NOARGS },
-    { "get_scope", (PyCFunction) _wrap_g_arg_info_get_scope, METH_NOARGS },
-    { "get_closure", (PyCFunction) _wrap_g_arg_info_get_closure, METH_NOARGS },
-    { "get_destroy", (PyCFunction) _wrap_g_arg_info_get_destroy, METH_NOARGS },
-    { "get_type", (PyCFunction) _wrap_g_arg_info_get_type, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
-
 /* TypeInfo */
 PYGLIB_DEFINE_TYPE ("gi.TypeInfo", PyGITypeInfo_Type, PyGIBaseInfo);
 
-static PyObject *
-_wrap_g_type_info_is_pointer (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (g_type_info_is_pointer (self->info));
-}
-
-static PyObject *
-_wrap_g_type_info_get_tag (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_type_info_get_tag (self->info));
-}
-
-static PyObject *
-_wrap_g_type_info_get_tag_as_string (PyGIBaseInfo *self)
-{
-    GITypeTag tag = g_type_info_get_tag (self->info);
-    return PYGLIB_PyUnicode_FromString (g_type_tag_to_string(tag));
-}
-
-static PyObject *
-_wrap_g_type_info_get_param_type (PyGIBaseInfo *self, PyObject *py_n)
-{
-    GIBaseInfo *info;
-    PyObject *py_info;
-    gint n;
-
-    if (!PYGLIB_PyLong_Check (py_n)) {
-        PyErr_SetString(PyExc_TypeError, "expected integer value");
-        return NULL;
-    }
-
-    n = PYGLIB_PyLong_AsLong (py_n);
-    info = (GIBaseInfo *) g_type_info_get_param_type ( (GITypeInfo *) self->info, n);
-    if (info == NULL) {
-        Py_RETURN_NONE;
-    }
-
-    py_info = _pygi_info_new (info);
-    g_base_info_unref (info);
-    return py_info;
-}
-
-static PyObject *
-_wrap_g_type_info_get_interface (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_type_info_get_interface);
-}
-
-static PyObject *
-_wrap_g_type_info_get_array_length (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_type_info_get_array_length (self->info));
-}
-
-static PyObject *
-_wrap_g_type_info_get_array_fixed_size (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_type_info_get_array_fixed_size (self->info));
-}
-
-static PyObject *
-_wrap_g_type_info_is_zero_terminated (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (g_type_info_is_zero_terminated (self->info));
-}
-
-static PyObject *
-_wrap_g_type_info_get_array_type (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_type_info_get_array_type (self->info));
-}
-
 static PyMethodDef _PyGITypeInfo_methods[] = {
-    { "is_pointer", (PyCFunction) _wrap_g_type_info_is_pointer, METH_NOARGS },
-    { "get_tag", (PyCFunction) _wrap_g_type_info_get_tag, METH_NOARGS },
-    { "get_tag_as_string", (PyCFunction) _wrap_g_type_info_get_tag_as_string, METH_NOARGS },
-    { "get_param_type", (PyCFunction) _wrap_g_type_info_get_param_type, METH_O },
-    { "get_interface", (PyCFunction) _wrap_g_type_info_get_interface, METH_NOARGS },
-    { "get_array_length", (PyCFunction) _wrap_g_type_info_get_array_length, METH_NOARGS },
-    { "get_array_fixed_size", (PyCFunction) _wrap_g_type_info_get_array_fixed_size, METH_NOARGS },
-    { "is_zero_terminated", (PyCFunction) _wrap_g_type_info_is_zero_terminated, METH_NOARGS },
-    { "get_array_type", (PyCFunction) _wrap_g_type_info_get_array_type, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
 
 /* FunctionInfo */
-PYGLIB_DEFINE_TYPE ("gi.FunctionInfo", PyGIFunctionInfo_Type, PyGICallableInfo);
+PYGLIB_DEFINE_TYPE ("gi.FunctionInfo", PyGIFunctionInfo_Type, PyGIBaseInfo);
 
 static PyObject *
 _wrap_g_function_info_is_constructor (PyGIBaseInfo *self)
@@ -1108,8 +406,6 @@ _pygi_g_type_tag_size (GITypeTag type_tag)
                           "Unable to know the size (assuming %s is not a pointer)",
                           g_type_tag_to_string (type_tag));
             break;
-        default:
-            break;
     }
 
     return size;
@@ -1168,10 +464,10 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
                     if (g_type_info_is_pointer (type_info)) {
                         size = sizeof (gpointer);
                     } else {
-                        GITypeTag enum_type_tag;
+                        GITypeTag type_tag;
 
-                        enum_type_tag = g_enum_info_get_storage_type ( (GIEnumInfo *) info);
-                        size = _pygi_g_type_tag_size (enum_type_tag);
+                        type_tag = g_enum_info_get_storage_type ( (GIEnumInfo *) info);
+                        size = _pygi_g_type_tag_size (type_tag);
                     }
                     break;
                 case GI_INFO_TYPE_BOXED:
@@ -1196,139 +492,284 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
                     break;
             }
 
-            g_base_info_unref (info);
+            g_base_info_unref (info);
+            break;
+        }
+        case GI_TYPE_TAG_ARRAY:
+        case GI_TYPE_TAG_VOID:
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+        case GI_TYPE_TAG_GHASH:
+        case GI_TYPE_TAG_ERROR:
+            size = sizeof (gpointer);
+            break;
+    }
+
+    return size;
+}
+
+static PyMethodDef _PyGIFunctionInfo_methods[] = {
+    { "is_constructor", (PyCFunction) _wrap_g_function_info_is_constructor, METH_NOARGS },
+    { "is_method", (PyCFunction) _wrap_g_function_info_is_method, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+
+/* RegisteredTypeInfo */
+PYGLIB_DEFINE_TYPE ("gi.RegisteredTypeInfo", PyGIRegisteredTypeInfo_Type, PyGIBaseInfo);
+
+static PyObject *
+_wrap_g_registered_type_info_get_g_type (PyGIBaseInfo *self)
+{
+    GType type;
+
+    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) self->info);
+
+    return pyg_type_wrapper_new (type);
+}
+
+static PyMethodDef _PyGIRegisteredTypeInfo_methods[] = {
+    { "get_g_type", (PyCFunction) _wrap_g_registered_type_info_get_g_type, METH_NOARGS },
+    { NULL, NULL, 0 }
+};
+
+
+/* GIStructInfo */
+PYGLIB_DEFINE_TYPE ("StructInfo", PyGIStructInfo_Type, PyGIBaseInfo);
+
+static PyObject *
+_get_fields (PyGIBaseInfo *self, GIInfoType info_type)
+{
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
+
+    switch (info_type) {
+        case GI_INFO_TYPE_STRUCT:
+            n_infos = g_struct_info_get_n_fields ( (GIStructInfo *) self->info);
+            break;
+        case GI_INFO_TYPE_OBJECT:
+            n_infos = g_object_info_get_n_fields ( (GIObjectInfo *) self->info);
+            break;
+        default:
+            g_assert_not_reached();
+    }
+
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
+
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
+
+        switch (info_type) {
+            case GI_INFO_TYPE_STRUCT:
+                info = (GIBaseInfo *) g_struct_info_get_field ( (GIStructInfo *) self->info, i);
+                break;
+            case GI_INFO_TYPE_OBJECT:
+                info = (GIBaseInfo *) g_object_info_get_field ( (GIObjectInfo *) self->info, i);
+                break;
+            default:
+                g_assert_not_reached();
+        }
+        g_assert (info != NULL);
+
+        py_info = _pygi_info_new (info);
+
+        g_base_info_unref (info);
+
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
+}
+
+static PyObject *
+_get_methods (PyGIBaseInfo *self, GIInfoType info_type)
+{
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
+
+    switch (info_type) {
+        case GI_INFO_TYPE_STRUCT:
+            n_infos = g_struct_info_get_n_methods ( (GIStructInfo *) self->info);
             break;
-        }
-        case GI_TYPE_TAG_ARRAY:
-        case GI_TYPE_TAG_VOID:
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-        case GI_TYPE_TAG_GLIST:
-        case GI_TYPE_TAG_GSLIST:
-        case GI_TYPE_TAG_GHASH:
-        case GI_TYPE_TAG_ERROR:
-            size = sizeof (gpointer);
+        case GI_INFO_TYPE_OBJECT:
+            n_infos = g_object_info_get_n_methods ( (GIObjectInfo *) self->info);
             break;
         default:
+            g_assert_not_reached();
+    }
+
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
+
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
+
+        switch (info_type) {
+            case GI_INFO_TYPE_STRUCT:
+                info = (GIBaseInfo *) g_struct_info_get_method ( (GIStructInfo *) self->info, i);
+                break;
+            case GI_INFO_TYPE_OBJECT:
+                info = (GIBaseInfo *) g_object_info_get_method ( (GIObjectInfo *) self->info, i);
+                break;
+            default:
+                g_assert_not_reached();
+        }
+        g_assert (info != NULL);
+
+        py_info = _pygi_info_new (info);
+
+        g_base_info_unref (info);
+
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
             break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
     }
 
-    return size;
+    return infos;
 }
 
 static PyObject *
-_wrap_g_function_info_get_symbol (PyGIBaseInfo *self)
+_get_constants (PyGIBaseInfo *self, GIInfoType info_type)
 {
-    return _get_info_string (self, g_function_info_get_symbol);
-}
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-static PyObject *
-_wrap_g_function_info_get_flags (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_function_info_get_flags (self->info));
-}
+    switch (info_type) {
+        case GI_INFO_TYPE_INTERFACE:
+            n_infos = g_interface_info_get_n_constants ( (GIInterfaceInfo *) self->info);
+            break;
+        case GI_INFO_TYPE_OBJECT:
+            n_infos = g_object_info_get_n_constants ( (GIObjectInfo *) self->info);
+            break;
+        default:
+            g_assert_not_reached();
+    }
 
-static PyObject *
-_wrap_g_function_info_get_property (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_function_info_get_property);
-}
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
 
-static PyObject *
-_wrap_g_function_info_get_vfunc (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_function_info_get_vfunc);
-}
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
 
-static PyMethodDef _PyGIFunctionInfo_methods[] = {
-    { "is_constructor", (PyCFunction) _wrap_g_function_info_is_constructor, METH_NOARGS },
-    { "is_method", (PyCFunction) _wrap_g_function_info_is_method, METH_NOARGS },
-    { "get_symbol", (PyCFunction) _wrap_g_function_info_get_symbol, METH_NOARGS },
-    { "get_flags", (PyCFunction) _wrap_g_function_info_get_flags, METH_NOARGS },
-    { "get_property", (PyCFunction) _wrap_g_function_info_get_property, METH_NOARGS },
-    { "get_vfunc", (PyCFunction) _wrap_g_function_info_get_vfunc, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
+        switch (info_type) {
+            case GI_INFO_TYPE_INTERFACE:
+                info = (GIBaseInfo *) g_interface_info_get_constant ( (GIInterfaceInfo *) self->info, i);
+                break;
+            case GI_INFO_TYPE_OBJECT:
+                info = (GIBaseInfo *) g_object_info_get_constant ( (GIObjectInfo *) self->info, i);
+                break;
+            default:
+                g_assert_not_reached();
+        }
+        g_assert (info != NULL);
 
-/* RegisteredTypeInfo */
-PYGLIB_DEFINE_TYPE ("gi.RegisteredTypeInfo", PyGIRegisteredTypeInfo_Type, PyGIBaseInfo);
+        py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_registered_type_info_get_type_name (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_registered_type_info_get_type_name);
-}
+        g_base_info_unref (info);
 
-static PyObject *
-_wrap_g_registered_type_info_get_type_init (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_registered_type_info_get_type_init);
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyObject *
-_wrap_g_registered_type_info_get_g_type (PyGIBaseInfo *self)
+_get_vfuncs (PyGIBaseInfo *self, GIInfoType info_type)
 {
-    GType type;
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-    type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *) self->info);
+    switch (info_type) {
+        case GI_INFO_TYPE_INTERFACE:
+            n_infos = g_interface_info_get_n_vfuncs ( (GIInterfaceInfo *) self->info);
+            break;
+        case GI_INFO_TYPE_OBJECT:
+            n_infos = g_object_info_get_n_vfuncs ( (GIObjectInfo *) self->info);
+            break;
+        default:
+            g_assert_not_reached();
+    }
 
-    return pyg_type_wrapper_new (type);
-}
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
 
-static PyMethodDef _PyGIRegisteredTypeInfo_methods[] = {
-    { "get_type_name", (PyCFunction) _wrap_g_registered_type_info_get_type_name, METH_NOARGS },
-    { "get_type_init", (PyCFunction) _wrap_g_registered_type_info_get_type_init, METH_NOARGS },
-    { "get_g_type", (PyCFunction) _wrap_g_registered_type_info_get_g_type, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
 
+        switch (info_type) {
+            case GI_INFO_TYPE_INTERFACE:
+                info = (GIBaseInfo *) g_interface_info_get_vfunc ( (GIInterfaceInfo *) self->info, i);
+                break;
+            case GI_INFO_TYPE_OBJECT:
+                info = (GIBaseInfo *) g_object_info_get_vfunc ( (GIObjectInfo *) self->info, i);
+                break;
+            default:
+                g_assert_not_reached();
+        }
+        g_assert (info != NULL);
 
-/* GIStructInfo */
-PYGLIB_DEFINE_TYPE ("StructInfo", PyGIStructInfo_Type, PyGIBaseInfo);
+        py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_struct_info_get_fields (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_struct_info_get_n_fields, g_struct_info_get_field);
-}
+        g_base_info_unref (info);
 
-static PyObject *
-_wrap_g_struct_info_get_methods (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_struct_info_get_n_methods, g_struct_info_get_method);
-}
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
 
-static PyObject *
-_wrap_g_struct_info_get_size (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromSize_t (g_struct_info_get_size (self->info));
-}
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
 
-static PyObject *
-_wrap_g_struct_info_get_alignment (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromSize_t (g_struct_info_get_alignment (self->info));
+    return infos;
 }
 
 static PyObject *
-_wrap_g_struct_info_is_gtype_struct (PyGIBaseInfo *self)
+_wrap_g_struct_info_get_fields (PyGIBaseInfo *self)
 {
-    return PyBool_FromLong (g_struct_info_is_gtype_struct (self->info));
+    return _get_fields (self, GI_INFO_TYPE_STRUCT);
 }
 
 static PyObject *
-_wrap_g_struct_info_is_foreign (PyGIBaseInfo *self)
+_wrap_g_struct_info_get_methods (PyGIBaseInfo *self)
 {
-    return PyBool_FromLong (g_struct_info_is_foreign (self->info));
+    return _get_methods (self, GI_INFO_TYPE_STRUCT);
 }
 
 static PyMethodDef _PyGIStructInfo_methods[] = {
     { "get_fields", (PyCFunction) _wrap_g_struct_info_get_fields, METH_NOARGS },
     { "get_methods", (PyCFunction) _wrap_g_struct_info_get_methods, METH_NOARGS },
-    { "get_size", (PyCFunction) _wrap_g_struct_info_get_size, METH_NOARGS },
-    { "get_alignment", (PyCFunction) _wrap_g_struct_info_get_alignment, METH_NOARGS },
-    { "is_gtype_struct", (PyCFunction) _wrap_g_struct_info_is_gtype_struct, METH_NOARGS },
-    { "is_foreign", (PyCFunction) _wrap_g_struct_info_is_foreign, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -1346,11 +787,11 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
     for (i = 0; i < n_field_infos && is_simple; i++) {
         GIFieldInfo *field_info;
         GITypeInfo *field_type_info;
-        GITypeTag field_type_tag;
 
         field_info = g_struct_info_get_field (struct_info, i);
         field_type_info = g_field_info_get_type (field_info);
 
+        GITypeTag field_type_tag;
 
         field_type_tag = g_type_info_get_tag (field_type_info);
 
@@ -1433,9 +874,6 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
                 g_base_info_unref (info);
                 break;
             }
-            default:
-                g_assert_not_reached();
-                break;
         }
 
         g_base_info_unref ( (GIBaseInfo *) field_type_info);
@@ -1452,7 +890,37 @@ PYGLIB_DEFINE_TYPE ("gi.EnumInfo", PyGIEnumInfo_Type, PyGIBaseInfo);
 static PyObject *
 _wrap_g_enum_info_get_values (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_enum_info_get_n_values, g_enum_info_get_value);
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
+
+    n_infos = g_enum_info_get_n_values ( (GIEnumInfo *) self->info);
+
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
+
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
+
+        info = (GIBaseInfo *) g_enum_info_get_value ( (GIEnumInfo *) self->info, i);
+        g_assert (info != NULL);
+
+        py_info = _pygi_info_new (info);
+
+        g_base_info_unref (info);
+
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyObject *
@@ -1469,23 +937,9 @@ _wrap_g_enum_info_is_flags (PyGIBaseInfo *self)
     }
 }
 
-static PyObject *
-_wrap_g_enum_info_get_methods (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_enum_info_get_n_methods, g_enum_info_get_method);
-}
-
-static PyObject *
-_wrap_g_enum_info_get_storage_type (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_enum_info_get_storage_type ((GIBaseInfo *) self->info));
-}
-
 static PyMethodDef _PyGIEnumInfo_methods[] = {
     { "get_values", (PyCFunction) _wrap_g_enum_info_get_values, METH_NOARGS },
     { "is_flags", (PyCFunction) _wrap_g_enum_info_is_flags, METH_NOARGS },
-    { "get_methods", (PyCFunction) _wrap_g_enum_info_get_methods, METH_NOARGS },
-    { "get_storage_type", (PyCFunction) _wrap_g_enum_info_get_storage_type, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -1496,138 +950,89 @@ PYGLIB_DEFINE_TYPE ("ObjectInfo", PyGIObjectInfo_Type, PyGIBaseInfo);
 static PyObject *
 _wrap_g_object_info_get_parent (PyGIBaseInfo *self)
 {
-    return _get_child_info (self, g_object_info_get_parent);
-}
+    GIBaseInfo *info;
+    PyObject *py_info;
 
-static PyObject *
-_wrap_g_object_info_get_methods (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_object_info_get_n_methods, g_object_info_get_method);
-}
+    info = (GIBaseInfo *) g_object_info_get_parent ( (GIObjectInfo*) self->info);
 
-static PyObject *
-_wrap_g_object_info_find_method (PyGIBaseInfo *self, PyObject *py_name)
-{
-    return _get_child_info_by_name (self, py_name, g_object_info_find_method);
-}
+    if (info == NULL) {
+        Py_RETURN_NONE;
+    }
 
-static PyObject *
-_wrap_g_object_info_get_fields (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_object_info_get_n_fields, g_object_info_get_field);
-}
+    py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_object_info_get_properties (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_object_info_get_n_properties, g_object_info_get_property);
-}
+    g_base_info_unref (info);
 
-static PyObject *
-_wrap_g_object_info_get_signals (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_object_info_get_n_signals, g_object_info_get_signal);
+    return py_info;
 }
 
 static PyObject *
-_wrap_g_object_info_get_interfaces (PyGIBaseInfo *self)
+_wrap_g_object_info_get_methods (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_object_info_get_n_interfaces, g_object_info_get_interface);
+    return _get_methods (self, GI_INFO_TYPE_OBJECT);
 }
 
 static PyObject *
-_wrap_g_object_info_get_constants (PyGIBaseInfo *self)
+_wrap_g_object_info_get_fields (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_object_info_get_n_constants, g_object_info_get_constant);
+    return _get_fields (self, GI_INFO_TYPE_OBJECT);
 }
 
 static PyObject *
-_wrap_g_object_info_get_vfuncs (PyGIBaseInfo *self)
+_wrap_g_object_info_get_interfaces (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_object_info_get_n_vfuncs, g_object_info_get_vfunc);
-}
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-static PyObject *
-_wrap_g_object_info_get_abstract (PyGIBaseInfo *self)
-{
-    gboolean is_abstract  = g_object_info_get_abstract ( (GIObjectInfo*) self->info);
-    return PyBool_FromLong (is_abstract);
-}
+    n_infos = g_object_info_get_n_interfaces ( (GIObjectInfo *) self->info);
 
-static PyObject *
-_wrap_g_object_info_get_type_name (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_object_info_get_type_name);
-}
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
 
-static PyObject *
-_wrap_g_object_info_get_type_init (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_object_info_get_type_init);
-}
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
 
-static PyObject *
-_wrap_g_object_info_get_fundamental (PyGIBaseInfo *self)
-{
-    return PyBool_FromLong (g_object_info_get_fundamental ( (GIObjectInfo*) self->info));
-}
+        info = (GIBaseInfo *) g_object_info_get_interface ( (GIObjectInfo *) self->info, i);
+        g_assert (info != NULL);
 
-static PyObject *
-_wrap_g_object_info_get_class_struct (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_object_info_get_class_struct);
-}
+        py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_object_info_find_vfunc (PyGIBaseInfo *self, PyObject *py_name)
-{
-    return _get_child_info_by_name (self, py_name, g_object_info_find_vfunc);
-}
+        g_base_info_unref (info);
 
-static PyObject *
-_wrap_g_object_info_get_unref_function (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_object_info_get_unref_function);
-}
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
 
-static PyObject *
-_wrap_g_object_info_get_ref_function (PyGIBaseInfo *self)
-{
-    return _get_info_string (self, g_object_info_get_ref_function);
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyObject *
-_wrap_g_object_info_get_set_value_function (PyGIBaseInfo *self)
+_wrap_g_object_info_get_constants (PyGIBaseInfo *self)
 {
-    return _get_info_string (self, g_object_info_get_set_value_function);
+    return _get_constants (self, GI_INFO_TYPE_OBJECT);
 }
 
 static PyObject *
-_wrap_g_object_info_get_get_value_function (PyGIBaseInfo *self)
+_wrap_g_object_info_get_vfuncs (PyGIBaseInfo *self)
 {
-    return _get_info_string (self, g_object_info_get_get_value_function);
+    return _get_vfuncs (self, GI_INFO_TYPE_OBJECT);
 }
 
 static PyMethodDef _PyGIObjectInfo_methods[] = {
     { "get_parent", (PyCFunction) _wrap_g_object_info_get_parent, METH_NOARGS },
     { "get_methods", (PyCFunction) _wrap_g_object_info_get_methods, METH_NOARGS },
-    { "find_method", (PyCFunction) _wrap_g_object_info_find_method, METH_O },
     { "get_fields", (PyCFunction) _wrap_g_object_info_get_fields, METH_NOARGS },
-    { "get_properties", (PyCFunction) _wrap_g_object_info_get_properties, METH_NOARGS },
-    { "get_signals", (PyCFunction) _wrap_g_object_info_get_signals, METH_NOARGS },
     { "get_interfaces", (PyCFunction) _wrap_g_object_info_get_interfaces, METH_NOARGS },
     { "get_constants", (PyCFunction) _wrap_g_object_info_get_constants, METH_NOARGS },
     { "get_vfuncs", (PyCFunction) _wrap_g_object_info_get_vfuncs, METH_NOARGS },
-    { "find_vfunc", (PyCFunction) _wrap_g_object_info_find_vfunc, METH_O },
-    { "get_abstract", (PyCFunction) _wrap_g_object_info_get_abstract, METH_NOARGS },
-    { "get_type_name", (PyCFunction) _wrap_g_object_info_get_type_name, METH_NOARGS },
-    { "get_type_init", (PyCFunction) _wrap_g_object_info_get_type_init, METH_NOARGS },
-    { "get_fundamental", (PyCFunction) _wrap_g_object_info_get_fundamental, METH_NOARGS },
-    { "get_class_struct", (PyCFunction) _wrap_g_object_info_get_class_struct, METH_NOARGS },
-    { "get_unref_function", (PyCFunction) _wrap_g_object_info_get_unref_function, METH_NOARGS },
-    { "get_ref_function", (PyCFunction) _wrap_g_object_info_get_ref_function, METH_NOARGS },
-    { "get_set_value_function", (PyCFunction) _wrap_g_object_info_get_set_value_function, METH_NOARGS },
-    { "get_get_value_function", (PyCFunction) _wrap_g_object_info_get_get_value_function, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -1638,74 +1043,55 @@ PYGLIB_DEFINE_TYPE ("InterfaceInfo", PyGIInterfaceInfo_Type, PyGIBaseInfo);
 static PyObject *
 _wrap_g_interface_info_get_methods (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_interface_info_get_n_methods, g_interface_info_get_method);
-}
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-static PyObject *
-_wrap_g_interface_info_find_method (PyGIBaseInfo *self, PyObject *py_name)
-{
-    return _get_child_info_by_name (self, py_name, g_interface_info_find_method);
-}
+    n_infos = g_interface_info_get_n_methods ( (GIInterfaceInfo *) self->info);
 
-static PyObject *
-_wrap_g_interface_info_get_constants (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_interface_info_get_n_constants, g_interface_info_get_constant);
-}
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
 
-static PyObject *
-_wrap_g_interface_info_get_vfuncs (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_interface_info_get_n_vfuncs, g_interface_info_get_vfunc);
-}
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
 
-static PyObject *
-_wrap_g_interface_info_find_vfunc (PyGIBaseInfo *self, PyObject *py_name)
-{
-    return _get_child_info_by_name (self, py_name, g_interface_info_find_vfunc);
-}
+        info = (GIBaseInfo *) g_interface_info_get_method ( (GIInterfaceInfo *) self->info, i);
+        g_assert (info != NULL);
 
-static PyObject *
-_wrap_g_interface_info_get_prerequisites (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_interface_info_get_n_prerequisites, g_interface_info_get_prerequisite);
-}
+        py_info = _pygi_info_new (info);
 
-static PyObject *
-_wrap_g_interface_info_get_properties (PyGIBaseInfo *self)
-{
-    return _make_infos_tuple (self, g_interface_info_get_n_properties, g_interface_info_get_property);
-}
+        g_base_info_unref (info);
 
-static PyObject *
-_wrap_g_interface_info_get_iface_struct (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_interface_info_get_iface_struct);
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyObject *
-_wrap_g_interface_info_get_signals (PyGIBaseInfo *self)
+_wrap_g_interface_info_get_constants (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_interface_info_get_n_signals, g_interface_info_get_signal);
+    return _get_constants (self, GI_INFO_TYPE_INTERFACE);
 }
 
 static PyObject *
-_wrap_g_interface_info_find_signal (PyGIBaseInfo *self, PyObject *py_name)
+_wrap_g_interface_info_get_vfuncs (PyGIBaseInfo *self)
 {
-    return _get_child_info_by_name (self, py_name, g_interface_info_find_signal);
+    return _get_vfuncs (self, GI_INFO_TYPE_INTERFACE);
 }
 
 static PyMethodDef _PyGIInterfaceInfo_methods[] = {
-    { "get_prerequisites", (PyCFunction) _wrap_g_interface_info_get_prerequisites, METH_NOARGS },
-    { "get_properties", (PyCFunction) _wrap_g_interface_info_get_properties, METH_NOARGS },
     { "get_methods", (PyCFunction) _wrap_g_interface_info_get_methods, METH_NOARGS },
-    { "find_method", (PyCFunction) _wrap_g_interface_info_find_method, METH_O },
-    { "get_signals", (PyCFunction) _wrap_g_interface_info_get_signals, METH_NOARGS },
-    { "find_signal", (PyCFunction) _wrap_g_interface_info_find_signal, METH_O },
-    { "get_vfuncs", (PyCFunction) _wrap_g_interface_info_get_vfuncs, METH_NOARGS },
     { "get_constants", (PyCFunction) _wrap_g_interface_info_get_constants, METH_NOARGS },
-    { "get_iface_struct", (PyCFunction) _wrap_g_interface_info_get_iface_struct, METH_NOARGS },
-    { "find_vfunc", (PyCFunction) _wrap_g_interface_info_find_vfunc, METH_O },
+    { "get_vfuncs", (PyCFunction) _wrap_g_interface_info_get_vfuncs, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -1716,9 +1102,8 @@ static PyObject *
 _wrap_g_constant_info_get_value (PyGIBaseInfo *self)
 {
     GITypeInfo *type_info;
-    GIArgument value = {0};
+    GIArgument value;
     PyObject *py_value;
-    gboolean free_array = FALSE;
 
     if (g_constant_info_get_value ( (GIConstantInfo *) self->info, &value) < 0) {
         PyErr_SetString (PyExc_RuntimeError, "unable to get value");
@@ -1727,16 +1112,7 @@ _wrap_g_constant_info_get_value (PyGIBaseInfo *self)
 
     type_info = g_constant_info_get_type ( (GIConstantInfo *) self->info);
 
-    if (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ARRAY) {
-        value.v_pointer = _pygi_argument_to_array (&value, NULL, NULL, NULL,
-                                                   type_info, &free_array);
-    }
-
     py_value = _pygi_argument_to_object (&value, type_info, GI_TRANSFER_NOTHING);
-    
-    if (free_array) {
-        g_array_free (value.v_pointer, FALSE);
-    }
 
     g_constant_info_free_value (self->info, &value);
     g_base_info_unref ( (GIBaseInfo *) type_info);
@@ -1772,132 +1148,6 @@ static PyMethodDef _PyGIValueInfo_methods[] = {
 /* GIFieldInfo */
 PYGLIB_DEFINE_TYPE ("gi.FieldInfo", PyGIFieldInfo_Type, PyGIBaseInfo);
 
-static gssize
-_struct_field_array_length_marshal (gsize length_index,
-                                    void *container_ptr,
-                                    void *struct_data_ptr)
-{
-    gssize array_len = -1;
-    GIFieldInfo *array_len_field = NULL;
-    GIArgument arg = {0};
-    GIBaseInfo *container_info = (GIBaseInfo *)container_ptr;
-
-    switch (g_base_info_get_type (container_info)) {
-        case GI_INFO_TYPE_UNION:
-            array_len_field = g_union_info_get_field ((GIUnionInfo *)container_info, length_index);
-            break;
-        case GI_INFO_TYPE_STRUCT:
-            array_len_field = g_struct_info_get_field ((GIStructInfo *)container_info, length_index);
-            break;
-        case GI_INFO_TYPE_OBJECT:
-            array_len_field = g_object_info_get_field ((GIObjectInfo *)container_info, length_index);
-            break;
-        default:
-            /* Other types don't have fields. */
-            g_assert_not_reached();
-    }
-
-    if (array_len_field == NULL) {
-        return -1;
-    }
-
-    if (g_field_info_get_field (array_len_field, struct_data_ptr, &arg)) {
-        GITypeInfo *array_len_type_info;
-
-        array_len_type_info = g_field_info_get_type (array_len_field);
-        if (array_len_type_info == NULL) {
-            goto out;
-        }
-
-        if (!pygi_argument_to_gssize (&arg,
-                                      g_type_info_get_tag (array_len_type_info),
-                                      &array_len)) {
-            array_len = -1;
-        }
-
-        g_base_info_unref (array_len_type_info);
-    }
-
-out:
-    g_base_info_unref (array_len_field);
-    return array_len;
-}
-
-static gint
-_pygi_g_registered_type_info_check_object (GIRegisteredTypeInfo *info,
-                                           gboolean              is_instance,
-                                           PyObject             *object)
-{
-    gint retval;
-
-    GType g_type;
-    PyObject *py_type;
-    gchar *type_name_expected = NULL;
-    GIInfoType interface_type;
-
-    interface_type = g_base_info_get_type (info);
-    if ( (interface_type == GI_INFO_TYPE_STRUCT) &&
-            (g_struct_info_is_foreign ( (GIStructInfo*) info))) {
-        /* TODO: Could we check is the correct foreign type? */
-        return 1;
-    }
-
-    g_type = g_registered_type_info_get_g_type (info);
-    if (g_type != G_TYPE_NONE) {
-        py_type = _pygi_type_get_from_g_type (g_type);
-    } else {
-        py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) info);
-    }
-
-    if (py_type == NULL) {
-        return 0;
-    }
-
-    g_assert (PyType_Check (py_type));
-
-    if (is_instance) {
-        retval = PyObject_IsInstance (object, py_type);
-        if (!retval) {
-            type_name_expected = _pygi_g_base_info_get_fullname (
-                                     (GIBaseInfo *) info);
-        }
-    } else {
-        if (!PyObject_Type (py_type)) {
-            type_name_expected = "type";
-            retval = 0;
-        } else if (!PyType_IsSubtype ( (PyTypeObject *) object,
-                                       (PyTypeObject *) py_type)) {
-            type_name_expected = _pygi_g_base_info_get_fullname (
-                                     (GIBaseInfo *) info);
-            retval = 0;
-        } else {
-            retval = 1;
-        }
-    }
-
-    Py_DECREF (py_type);
-
-    if (!retval) {
-        PyTypeObject *object_type;
-
-        if (type_name_expected == NULL) {
-            return -1;
-        }
-
-        object_type = (PyTypeObject *) PyObject_Type (object);
-        if (object_type == NULL) {
-            return -1;
-        }
-
-        PyErr_Format (PyExc_TypeError, "Must be %s, not %s",
-                      type_name_expected, object_type->tp_name);
-
-        g_free (type_name_expected);
-    }
-
-    return retval;
-}
-
 static PyObject *
 _wrap_g_field_info_get_value (PyGIBaseInfo *self,
                               PyObject     *args)
@@ -1909,7 +1159,6 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
     GITypeInfo *field_type_info;
     GIArgument value;
     PyObject *py_value = NULL;
-    gboolean free_array = FALSE;
 
     memset(&value, 0, sizeof(GIArgument));
 
@@ -1971,7 +1220,7 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
 
                 offset = g_field_info_get_offset ( (GIFieldInfo *) self->info);
 
-                value.v_pointer = (char*) pointer + offset;
+                value.v_pointer = pointer + offset;
 
                 goto argument_to_object;
             }
@@ -1986,19 +1235,18 @@ _wrap_g_field_info_get_value (PyGIBaseInfo *self,
         goto out;
     }
 
-    if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) {
-        value.v_pointer = _pygi_argument_to_array (&value,
-                                                   _struct_field_array_length_marshal,
-                                                   container_info,
-                                                   pointer,
-                                                   field_type_info,
-                                                   &free_array);
+    if ( (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) &&
+            (g_type_info_get_array_type (field_type_info) == GI_ARRAY_TYPE_C)) {
+        value.v_pointer = _pygi_argument_to_array (&value, NULL,
+                                                   field_type_info, FALSE);
     }
 
 argument_to_object:
     py_value = _pygi_argument_to_object (&value, field_type_info, GI_TRANSFER_NOTHING);
 
-    if (free_array) {
+    if ( (value.v_pointer != NULL) &&
+            (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_ARRAY) &&
+               (g_type_info_get_array_type (field_type_info) == GI_ARRAY_TYPE_C)) {
         g_array_free (value.v_pointer, FALSE);
     }
 
@@ -2051,6 +1299,21 @@ _wrap_g_field_info_set_value (PyGIBaseInfo *self,
 
     field_type_info = g_field_info_get_type ( (GIFieldInfo *) self->info);
 
+    /* Check the value. */
+    {
+        gboolean retval;
+
+        retval = _pygi_g_type_info_check_object (field_type_info, py_value, TRUE);
+        if (retval < 0) {
+            goto out;
+        }
+
+        if (!retval) {
+            _PyGI_ERROR_PREFIX ("argument 2: ");
+            goto out;
+        }
+    }
+
     /* Set the field's value. */
     /* A few types are not handled by g_field_info_set_field, so do it here. */
     if (!g_type_info_is_pointer (field_type_info)
@@ -2096,7 +1359,7 @@ _wrap_g_field_info_set_value (PyGIBaseInfo *self,
                 size = g_struct_info_get_size ( (GIStructInfo *) info);
                 g_assert (size > 0);
 
-                g_memmove ((char*) pointer + offset, value.v_pointer, size);
+                g_memmove (pointer + offset, value.v_pointer, size);
 
                 g_base_info_unref (info);
 
@@ -2110,16 +1373,15 @@ _wrap_g_field_info_set_value (PyGIBaseInfo *self,
 
         g_base_info_unref (info);
     } else if (g_type_info_is_pointer (field_type_info)
-            && (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_VOID
-                || g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_UTF8)) {
+            && g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_VOID) {
         int offset;
-        value = _pygi_argument_from_object (py_value, field_type_info, GI_TRANSFER_NOTHING);
-        if (PyErr_Occurred()) {
-            goto out;
-        }
 
         offset = g_field_info_get_offset ((GIFieldInfo *) self->info);
+        value = _pygi_argument_from_object (py_value, field_type_info, GI_TRANSFER_NOTHING);
+
+        Py_XDECREF(G_STRUCT_MEMBER (gpointer, pointer, offset));
         G_STRUCT_MEMBER (gpointer, pointer, offset) = (gpointer)value.v_pointer;
+        Py_XINCREF(py_value);
 
         retval = Py_None;
         goto out;
@@ -2145,37 +1407,9 @@ out:
     return retval;
 }
 
-static PyObject *
-_wrap_g_field_info_get_flags (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_field_info_get_flags (self->info));
-}
-
-static PyObject *
-_wrap_g_field_info_get_size (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_field_info_get_size (self->info));
-}
-
-static PyObject *
-_wrap_g_field_info_get_offset (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_field_info_get_offset (self->info));
-}
-
-static PyObject *
-_wrap_g_field_info_get_type (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_field_info_get_type);
-}
-
 static PyMethodDef _PyGIFieldInfo_methods[] = {
     { "get_value", (PyCFunction) _wrap_g_field_info_get_value, METH_VARARGS },
     { "set_value", (PyCFunction) _wrap_g_field_info_set_value, METH_VARARGS },
-    { "get_flags", (PyCFunction) _wrap_g_field_info_get_flags, METH_VARARGS },
-    { "get_size", (PyCFunction) _wrap_g_field_info_get_size, METH_VARARGS },
-    { "get_offset", (PyCFunction) _wrap_g_field_info_get_offset, METH_VARARGS },
-    { "get_type", (PyCFunction) _wrap_g_field_info_get_type, METH_VARARGS },
     { NULL, NULL, 0 }
 };
 
@@ -2188,36 +1422,24 @@ static PyMethodDef _PyGIUnresolvedInfo_methods[] = {
 };
 
 /* GIVFuncInfo */
-PYGLIB_DEFINE_TYPE ("gi.VFuncInfo", PyGIVFuncInfo_Type, PyGICallableInfo);
+PYGLIB_DEFINE_TYPE ("gi.VFuncInfo", PyGIVFuncInfo_Type, PyGIBaseInfo);
 
 static PyObject *
-_wrap_g_vfunc_info_get_flags (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromLong (g_vfunc_info_get_flags ((GIVFuncInfo *) self->info));
-}
-
-static PyObject *
-_wrap_g_vfunc_info_get_offset (PyGIBaseInfo *self)
+_wrap_g_vfunc_info_get_invoker (PyGIBaseInfo *self)
 {
-    return PYGLIB_PyLong_FromLong (g_vfunc_info_get_offset ((GIVFuncInfo *) self->info));
-}
+    PyObject *result = Py_None;
+    GIBaseInfo *info;
 
-static PyObject *
-_wrap_g_vfunc_info_get_signal (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_vfunc_info_get_signal);
-}
+    info = (GIBaseInfo *) g_vfunc_info_get_invoker ( (GIVFuncInfo *) self->info );
+    if (info)
+        result = _pygi_info_new(info);
+    else
+        Py_INCREF(Py_None);
 
-static PyObject *
-_wrap_g_vfunc_info_get_invoker (PyGIBaseInfo *self)
-{
-    return _get_child_info (self, g_vfunc_info_get_invoker);
+    return result;
 }
 
 static PyMethodDef _PyGIVFuncInfo_methods[] = {
-    { "get_flags", (PyCFunction) _wrap_g_vfunc_info_get_flags, METH_NOARGS },
-    { "get_offset", (PyCFunction) _wrap_g_vfunc_info_get_offset, METH_NOARGS },
-    { "get_signal", (PyCFunction) _wrap_g_vfunc_info_get_signal, METH_NOARGS },
     { "get_invoker", (PyCFunction) _wrap_g_vfunc_info_get_invoker, METH_NOARGS },
     { NULL, NULL, 0 }
 };
@@ -2229,25 +1451,78 @@ PYGLIB_DEFINE_TYPE ("gi.UnionInfo", PyGIUnionInfo_Type, PyGIBaseInfo);
 static PyObject *
 _wrap_g_union_info_get_fields (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_union_info_get_n_fields, g_union_info_get_field);
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
+
+    n_infos = g_union_info_get_n_fields ( (GIUnionInfo *) self->info);
+
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
+
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
+
+        info = (GIBaseInfo *) g_union_info_get_field ( (GIUnionInfo *) self->info, i);
+        g_assert (info != NULL);
+
+        py_info = _pygi_info_new (info);
+
+        g_base_info_unref (info);
+
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyObject *
 _wrap_g_union_info_get_methods (PyGIBaseInfo *self)
 {
-    return _make_infos_tuple (self, g_union_info_get_n_methods, g_union_info_get_method);
-}
+    gssize n_infos;
+    PyObject *infos;
+    gssize i;
 
-static PyObject *
-_wrap_g_union_info_get_size (PyGIBaseInfo *self)
-{
-    return PYGLIB_PyLong_FromSize_t (g_union_info_get_size (self->info));
+    n_infos = g_union_info_get_n_methods ( (GIUnionInfo *) self->info);
+
+    infos = PyTuple_New (n_infos);
+    if (infos == NULL) {
+        return NULL;
+    }
+
+    for (i = 0; i < n_infos; i++) {
+        GIBaseInfo *info;
+        PyObject *py_info;
+
+        info = (GIBaseInfo *) g_union_info_get_method ( (GIUnionInfo *) self->info, i);
+        g_assert (info != NULL);
+
+        py_info = _pygi_info_new (info);
+
+        g_base_info_unref (info);
+
+        if (py_info == NULL) {
+            Py_CLEAR (infos);
+            break;
+        }
+
+        PyTuple_SET_ITEM (infos, i, py_info);
+    }
+
+    return infos;
 }
 
 static PyMethodDef _PyGIUnionInfo_methods[] = {
     { "get_fields", (PyCFunction) _wrap_g_union_info_get_fields, METH_NOARGS },
     { "get_methods", (PyCFunction) _wrap_g_union_info_get_methods, METH_NOARGS },
-    { "get_size", (PyCFunction) _wrap_g_union_info_get_size, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -2263,12 +1538,12 @@ _pygi_g_base_info_get_fullname (GIBaseInfo *info)
     if (container_info != NULL) {
         fullname = g_strdup_printf ("%s.%s.%s",
                                     g_base_info_get_namespace (container_info),
-                                    _safe_base_info_get_name (container_info),
-                                    _safe_base_info_get_name (info));
+                                    g_base_info_get_name (container_info),
+                                    g_base_info_get_name (info));
     } else {
         fullname = g_strdup_printf ("%s.%s",
                                     g_base_info_get_namespace (info),
-                                    _safe_base_info_get_name (info));
+                                    g_base_info_get_name (info));
     }
 
     if (fullname == NULL) {
@@ -2278,7 +1553,6 @@ _pygi_g_base_info_get_fullname (GIBaseInfo *info)
     return fullname;
 }
 
-
 void
 _pygi_info_register_types (PyObject *m)
 {
@@ -2297,59 +1571,54 @@ _pygi_info_register_types (PyObject *m)
 
     PyGIBaseInfo_Type.tp_dealloc = (destructor) _base_info_dealloc;
     PyGIBaseInfo_Type.tp_repr = (reprfunc) _base_info_repr;
-    PyGIBaseInfo_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+    PyGIBaseInfo_Type.tp_flags = (Py_TPFLAGS_DEFAULT | 
+                                   Py_TPFLAGS_BASETYPE  | 
+                                   Py_TPFLAGS_HAVE_GC);
+    PyGIBaseInfo_Type.tp_traverse = (traverseproc) _base_info_traverse;
     PyGIBaseInfo_Type.tp_weaklistoffset = offsetof(PyGIBaseInfo, inst_weakreflist);
-    PyGIBaseInfo_Type.tp_methods = _PyGIBaseInfo_methods;
+    PyGIBaseInfo_Type.tp_methods = _PyGIBaseInfo_methods; 
     PyGIBaseInfo_Type.tp_richcompare = (richcmpfunc)_base_info_richcompare;
-    PyGIBaseInfo_Type.tp_getset = _base_info_getsets;
-    PyGIBaseInfo_Type.tp_getattro = (getattrofunc) _base_info_getattro;
 
     if (PyType_Ready(&PyGIBaseInfo_Type))
-        return;
+        return;   
     if (PyModule_AddObject(m, "BaseInfo", (PyObject *)&PyGIBaseInfo_Type))
         return;
 
-    _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, CallableInfo,
-                         PyGIBaseInfo_Type);
-    PyGICallableInfo_Type.tp_call = (ternaryfunc) _callable_info_call;
-    PyGICallableInfo_Type.tp_dealloc = (destructor) _callable_info_dealloc;
-
-    _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, FunctionInfo,
-                         PyGICallableInfo_Type);
-    PyGIFunctionInfo_Type.tp_call = (ternaryfunc) _function_info_call;
-    PyGIFunctionInfo_Type.tp_descr_get = (descrgetfunc) _function_info_descr_get;
-
-    _PyGI_REGISTER_TYPE (m, PyGIVFuncInfo_Type, VFuncInfo,
-                         PyGICallableInfo_Type);
-    PyGIVFuncInfo_Type.tp_descr_get = (descrgetfunc) _vfunc_info_descr_get;
-
-    _PyGI_REGISTER_TYPE (m, PyGISignalInfo_Type, SignalInfo,
-                         PyGICallableInfo_Type);
-
     _PyGI_REGISTER_TYPE (m, PyGIUnresolvedInfo_Type, UnresolvedInfo,
                          PyGIBaseInfo_Type);
+    _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, CallableInfo, 
+                         PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGICallbackInfo_Type, CallbackInfo,
+                         PyGIBaseInfo_Type);
+    _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, FunctionInfo, 
                          PyGICallableInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, RegisteredTypeInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, RegisteredTypeInfo, 
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, StructInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, StructInfo, 
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, EnumInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, EnumInfo, 
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, ObjectInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, ObjectInfo, 
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, InterfaceInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, InterfaceInfo, 
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, ConstantInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, ConstantInfo, 
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, ValueInfo,
+    _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, ValueInfo, 
                          PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIFieldInfo_Type, FieldInfo,
                          PyGIBaseInfo_Type);
+    _PyGI_REGISTER_TYPE (m, PyGIVFuncInfo_Type, VFuncInfo,
+                         PyGICallableInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIUnionInfo_Type, UnionInfo,
                          PyGIRegisteredTypeInfo_Type);
+    _PyGI_REGISTER_TYPE (m, PyGIBoxedInfo_Type, BoxedInfo,
+                         PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIErrorDomainInfo_Type, ErrorDomainInfo,
                          PyGIBaseInfo_Type);
+    _PyGI_REGISTER_TYPE (m, PyGISignalInfo_Type, SignalInfo,
+                         PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIPropertyInfo_Type, PropertyInfo,
                          PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIArgInfo_Type, ArgInfo,
@@ -2357,147 +1626,6 @@ _pygi_info_register_types (PyObject *m)
     _PyGI_REGISTER_TYPE (m, PyGITypeInfo_Type, TypeInfo,
                          PyGIBaseInfo_Type);
 
-#undef _PyGI_REGISTER_TYPE
-
-#define _PyGI_ENUM_BEGIN(name) \
-        { \
-            const char *__enum_name = #name; \
-            PyObject *__enum_value = NULL; \
-            PyObject *__new_enum_cls = NULL; \
-            PyObject *__enum_instance_dict = PyDict_New(); \
-            PyObject *__module_name = PyObject_GetAttrString (m, "__name__"); \
-            PyDict_SetItemString (__enum_instance_dict, "__module__", __module_name); \
-            Py_DECREF (__module_name);
-
-#define _PyGI_ENUM_ADD_VALUE(prefix, name) \
-            __enum_value = PYGLIB_PyLong_FromLong (prefix##_##name); \
-            if (PyDict_SetItemString(__enum_instance_dict, #name, __enum_value)) { \
-                Py_DECREF (__enum_instance_dict); \
-                Py_DECREF (__enum_value); \
-                return; \
-            } \
-            Py_DECREF (__enum_value);
-
-#define _PyGI_ENUM_END \
-            __new_enum_cls = PyObject_CallFunction ((PyObject *)&PyType_Type, "s(O)O", \
-                                                    __enum_name, (PyObject *)&PyType_Type, \
-                                                    __enum_instance_dict); \
-            Py_DECREF (__enum_instance_dict); \
-            PyModule_AddObject (m, __enum_name, __new_enum_cls); /* steals ref */ \
-        }
-
-
-    /* GIDirection */
-    _PyGI_ENUM_BEGIN (Direction)
-        _PyGI_ENUM_ADD_VALUE (GI_DIRECTION, IN)
-        _PyGI_ENUM_ADD_VALUE (GI_DIRECTION, OUT)
-        _PyGI_ENUM_ADD_VALUE (GI_DIRECTION, INOUT)
-    _PyGI_ENUM_END
-
-
-    /* GITransfer */
-    _PyGI_ENUM_BEGIN (Transfer)
-        _PyGI_ENUM_ADD_VALUE (GI_TRANSFER, NOTHING)
-        _PyGI_ENUM_ADD_VALUE (GI_TRANSFER, CONTAINER)
-        _PyGI_ENUM_ADD_VALUE (GI_TRANSFER, EVERYTHING)
-    _PyGI_ENUM_END
-
-    /* GIArrayType */
-    _PyGI_ENUM_BEGIN (ArrayType)
-        _PyGI_ENUM_ADD_VALUE (GI_ARRAY_TYPE, C)
-        _PyGI_ENUM_ADD_VALUE (GI_ARRAY_TYPE, ARRAY)
-        _PyGI_ENUM_ADD_VALUE (GI_ARRAY_TYPE, PTR_ARRAY)
-        _PyGI_ENUM_ADD_VALUE (GI_ARRAY_TYPE, BYTE_ARRAY)
-    _PyGI_ENUM_END
-
-    /* GIScopeType */
-    _PyGI_ENUM_BEGIN (ScopeType)
-        _PyGI_ENUM_ADD_VALUE (GI_SCOPE_TYPE, INVALID)
-        _PyGI_ENUM_ADD_VALUE (GI_SCOPE_TYPE, CALL)
-        _PyGI_ENUM_ADD_VALUE (GI_SCOPE_TYPE, ASYNC)
-        _PyGI_ENUM_ADD_VALUE (GI_SCOPE_TYPE, NOTIFIED)
-    _PyGI_ENUM_END
-
-    /* GIVFuncInfoFlags */
-    _PyGI_ENUM_BEGIN (VFuncInfoFlags)
-        _PyGI_ENUM_ADD_VALUE (GI_VFUNC_MUST, CHAIN_UP)
-        _PyGI_ENUM_ADD_VALUE (GI_VFUNC_MUST, OVERRIDE)
-        _PyGI_ENUM_ADD_VALUE (GI_VFUNC_MUST, NOT_OVERRIDE)
-    _PyGI_ENUM_END
-
-    /* GIFieldInfoFlags */
-    _PyGI_ENUM_BEGIN (FieldInfoFlags)
-        _PyGI_ENUM_ADD_VALUE (GI_FIELD, IS_READABLE)
-        _PyGI_ENUM_ADD_VALUE (GI_FIELD, IS_WRITABLE)
-    _PyGI_ENUM_END
-
-    /* GIFunctionInfoFlags */
-    _PyGI_ENUM_BEGIN (FunctionInfoFlags)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, IS_METHOD)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, IS_CONSTRUCTOR)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, IS_GETTER)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, IS_SETTER)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, WRAPS_VFUNC)
-        _PyGI_ENUM_ADD_VALUE (GI_FUNCTION, THROWS)
-    _PyGI_ENUM_END
-
-    /* GITypeTag */
-    _PyGI_ENUM_BEGIN (TypeTag)
-        /* Basic types */
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, VOID)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, BOOLEAN)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, INT8)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UINT8)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, INT16)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UINT16)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, INT32)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UINT32)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, INT64)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UINT64)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, FLOAT)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, DOUBLE)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, GTYPE)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UTF8)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, FILENAME)
-
-        /* Non-basic types; compare with G_TYPE_TAG_IS_BASIC */
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, ARRAY)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, INTERFACE)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, GLIST)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, GSLIST)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, GHASH)
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, ERROR)
-
-        /* Another basic type */
-        _PyGI_ENUM_ADD_VALUE (GI_TYPE_TAG, UNICHAR)
-    _PyGI_ENUM_END
-
-    /* GIInfoType */
-    _PyGI_ENUM_BEGIN (InfoType)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, INVALID)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, FUNCTION)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, CALLBACK)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, STRUCT)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, BOXED)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, ENUM)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, FLAGS)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, OBJECT)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, INTERFACE)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, CONSTANT)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, INVALID_0)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, UNION)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, VALUE)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, SIGNAL)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, VFUNC)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, PROPERTY)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, FIELD)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, ARG)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, TYPE)
-        _PyGI_ENUM_ADD_VALUE (GI_INFO_TYPE, UNRESOLVED)
-    _PyGI_ENUM_END
-
-#undef _PyGI_ENUM_BEGIN
-#undef _PyGI_ENUM_ADD_VALUE
-#undef _PyGI_ENUM_END
 
+#undef _PyGI_REGISTER_TYPE
 }
index 16371c8..afd65dc 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_INFO_H__
 #include <Python.h>
 
 #include <girepository.h>
-#include "pygi-cache.h"
 
 G_BEGIN_DECLS
 
-typedef struct {
-    PyObject_HEAD
-    GIBaseInfo *info;
-    PyObject *inst_weakreflist;
-    PyGICallableCache *cache;
-} PyGIBaseInfo;
-
-typedef struct {
-    PyGIBaseInfo base;
-
-    /* Reference the unbound version of this struct.
-     * We use this for the actual call to invoke because it manages the cache.
-     */
-    struct PyGICallableInfo *py_unbound_info;
-
-    /* Holds bound argument for instance, class, and vfunc methods. */
-    PyObject *py_bound_arg;
-
-} PyGICallableInfo;
-
-
 gboolean pygi_g_struct_info_is_simple (GIStructInfo *struct_info);
 
 
@@ -88,8 +68,6 @@ gsize _pygi_g_type_info_size (GITypeInfo *type_info);
 
 void _pygi_info_register_types (PyObject *m);
 
-gboolean _pygi_is_python_keyword (const gchar *name);
-
 G_END_DECLS
 
 #endif /* __PYGI_INFO_H__ */
index 64711cb..f5a3d3e 100644 (file)
@@ -7,57 +7,38 @@
 
 G_BEGIN_DECLS
 
-typedef struct _PyGIInvokeArgState
-{
-    /* Holds memory for the C value of arguments marshaled "to" or "from" Python. */
-    GIArgument arg_value;
-
-    /* Holds pointers to values in arg_values or a caller allocated chunk of
-     * memory via arg_pointer.v_pointer.
-     */
-    GIArgument arg_pointer;
-
-    /* Holds from_py marshaler cleanup data. */
-    gpointer arg_cleanup_data;
-
-} PyGIInvokeArgState;
-
-
 typedef struct _PyGIInvokeState
 {
     PyObject *py_in_args;
     gssize n_py_in_args;
-
-    /* Number of arguments the ffi wrapped C function takes. Used as the exact
-     * count for argument related arrays held in this struct.
-     */
-    gssize n_args;
-
-    /* List of arguments passed to ffi. Elements can point directly to values held in
-     * arg_values for "in/from Python" or indirectly via arg_pointers for
-     * "out/inout/to Python". In the latter case, the args[x].arg_pointer.v_pointer
-     * member points to memory for the value storage.
+    gssize current_arg;
+
+    GType implementor_gtype;
+
+    GIArgument **args;
+    GIArgument *in_args;
+
+    /* Out args and out values
+     * In order to pass a parameter and get something back out in C
+     * we need to pass a pointer to the value, e.g.
+     *    int *out_integer;
+     *
+     * so while out_args == out_integer, out_value == *out_integer
+     * or in other words out_args = &out_values
+     *
+     * We do all of our processing on out_values but we pass out_args to 
+     * the actual function.
      */
-    GIArgument **ffi_args;
-
-    /* Array of size n_args containing per argument state */
-    PyGIInvokeArgState *args;
+    GIArgument *out_args;
+    GIArgument *out_values;
 
-    /* Memory to receive the result of the C ffi function call. */
     GIArgument return_arg;
 
-    /* A GError exception which is indirectly bound into the last position of
-     * the "args" array if the callable caches "throws" member is set.
-     */
     GError *error;
 
     gboolean failed;
 
     gpointer user_data;
-
-    /* Function pointer to call with ffi. */
-    gpointer function_ptr;
-
 } PyGIInvokeState;
 
 G_END_DECLS
index fd9e474..cabdab9 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #include <pyglib.h>
 #include "pygi-invoke.h"
 #include "pygi-marshal-cleanup.h"
-#include "pygi-error.h"
-#include "pygi-resulttuple.h"
-#include "pygi-foreign.h"
-#include "pygi-boxed.h"
 
-extern PyObject *_PyGIDefaultArgPlaceholder;
+static inline gboolean
+_invoke_callable (PyGIInvokeState *state,
+                  PyGICallableCache *cache,
+                  GICallableInfo *callable_info,
+                  GCallback function_ptr)
+{
+    GError *error;
+    gint retval;
+
+    error = NULL;
+
+    pyg_begin_allow_threads;
+
+    /* FIXME: use this for now but we can streamline the calls */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_VFUNC)
+        retval = g_vfunc_info_invoke ( callable_info,
+                                       state->implementor_gtype,
+                                       state->in_args,
+                                       cache->n_from_py_args,
+                                       state->out_args,
+                                       cache->n_to_py_args,
+                                      &state->return_arg,
+                                      &error);
+    else if (g_base_info_get_type (callable_info) == GI_INFO_TYPE_CALLBACK)
+        retval = g_callable_info_invoke (callable_info,
+                                         function_ptr,
+                                         state->in_args,
+                                         cache->n_from_py_args,
+                                         state->out_args,
+                                         cache->n_to_py_args,
+                                         &state->return_arg,
+                                         FALSE,
+                                         FALSE,
+                                         &error);
+    else
+        retval = g_function_info_invoke ( callable_info,
+                                          state->in_args,
+                                          cache->n_from_py_args,
+                                          state->out_args,
+                                          cache->n_to_py_args,
+                                         &state->return_arg,
+                                         &error);
+    pyg_end_allow_threads;
+
+    if (!retval) {
+        g_assert (error != NULL);
+        pyglib_error_check (&error);
+
+        /* It is unclear if the error occured before or after the C
+         * function was invoked so for now assume success
+         * We eventually should marshal directly to FFI so we no longer
+         * have to use the reference implementation
+         */
+        pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
+
+        return FALSE;
+    }
+
+    if (state->error != NULL) {
+        if (pyglib_error_check (&(state->error))) {
+            /* even though we errored out, the call itself was successful,
+               so we assume the call processed all of the parameters */
+            pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
+            return FALSE;
+        }
+    }
+
+    return TRUE;
+}
 
 static gboolean
-_check_for_unexpected_kwargs (PyGICallableCache *cache,
+_check_for_unexpected_kwargs (const gchar *function_name,
                               GHashTable  *arg_name_hash,
                               PyObject    *py_kwargs)
 {
@@ -54,18 +120,12 @@ _check_for_unexpected_kwargs (PyGICallableCache *cache,
             }
         }
 
-        /* Use extended lookup because it returns whether or not the key actually
-         * exists in the hash table. g_hash_table_lookup returns NULL for keys not
-         * found which maps to index 0 for our hash lookup.
-         */
-        if (!g_hash_table_lookup_extended (arg_name_hash, PyBytes_AsString(key), NULL, NULL)) {
-            char *full_name = pygi_callable_cache_get_full_name (cache);
+        if (g_hash_table_lookup (arg_name_hash, PyBytes_AsString(key)) == NULL) {
             PyErr_Format (PyExc_TypeError,
                           "%.200s() got an unexpected keyword argument '%.400s'",
-                          full_name,
+                          function_name,
                           PyBytes_AsString (key));
             Py_DECREF (key);
-            g_free (full_name);
             return FALSE;
         }
 
@@ -76,20 +136,28 @@ _check_for_unexpected_kwargs (PyGICallableCache *cache,
 
 /**
  * _py_args_combine_and_check_length:
- * @cache: PyGICallableCache
- * @py_args: the tuple of positional arguments.
+ * @function_name: the name of the function being called. Used for error messages.
+ * @arg_name_list: a list of the string names for each argument. The length
+ *                 of this list is the number of required arguments for the
+ *                 function. If an argument has no name, NULL is put in its
+ *                 position in the list.
+ * @py_args: the tuple of positional arguments. A referece is stolen, and this
+             tuple will be either decreffed or returned as is.
  * @py_kwargs: the dict of keyword arguments to be merged with py_args.
+ *             A reference is borrowed.
  *
- * Returns: New value reference to the combined py_args and py_kwargs.
+ * Returns: The py_args and py_kwargs combined into one tuple.
  */
 static PyObject *
-_py_args_combine_and_check_length (PyGICallableCache *cache,
+_py_args_combine_and_check_length (const gchar *function_name,
+                                   GSList      *arg_name_list,
+                                   GHashTable  *arg_name_hash,
                                    PyObject    *py_args,
                                    PyObject    *py_kwargs)
 {
     PyObject *combined_py_args = NULL;
     Py_ssize_t n_py_args, n_py_kwargs, i;
-    gssize n_expected_args = cache->n_py_args;
+    guint n_expected_args;
     GSList *l;
 
     n_py_args = PyTuple_GET_SIZE (py_args);
@@ -98,37 +166,28 @@ _py_args_combine_and_check_length (PyGICallableCache *cache,
     else
         n_py_kwargs = PyDict_Size (py_kwargs);
 
-    /* Fast path, we already have the exact number of args and not kwargs. */
-    if (n_py_kwargs == 0 && n_py_args == n_expected_args && cache->user_data_varargs_index < 0) {
-        Py_INCREF (py_args);
+    n_expected_args = g_slist_length (arg_name_list);
+    if (n_py_kwargs == 0 && n_py_args == n_expected_args) {
         return py_args;
     }
 
-    if (cache->user_data_varargs_index < 0 && n_expected_args < n_py_args) {
-        char *full_name = pygi_callable_cache_get_full_name (cache);
+    if (n_expected_args < n_py_args) {
         PyErr_Format (PyExc_TypeError,
-                      "%.200s() takes exactly %zd %sargument%s (%zd given)",
-                      full_name,
+                      "%.200s() takes exactly %d %sargument%s (%zd given)",
+                      function_name,
                       n_expected_args,
                       n_py_kwargs > 0 ? "non-keyword " : "",
                       n_expected_args == 1 ? "" : "s",
                       n_py_args);
-        g_free (full_name);
-        return NULL;
-    }
 
-    if (cache->user_data_varargs_index >= 0 && n_py_kwargs > 0 && n_expected_args < n_py_args) {
-        char *full_name = pygi_callable_cache_get_full_name (cache);
-        PyErr_Format (PyExc_TypeError,
-                      "%.200s() cannot use variable user data arguments with keyword arguments",
-                      full_name);
-        g_free (full_name);
+        Py_DECREF (py_args);
         return NULL;
     }
 
-    if (n_py_kwargs > 0 && !_check_for_unexpected_kwargs (cache,
-                                                          cache->arg_name_hash,
+    if (n_py_kwargs > 0 && !_check_for_unexpected_kwargs (function_name,
+                                                          arg_name_hash,
                                                           py_kwargs)) {
+        Py_DECREF (py_args);
         return NULL;
     }
 
@@ -136,84 +195,48 @@ _py_args_combine_and_check_length (PyGICallableCache *cache,
      * when they are combined into a single tuple */
     combined_py_args = PyTuple_New (n_expected_args);
 
-    for (i = 0, l = cache->arg_name_list; i < n_expected_args && l; i++, l = l->next) {
-        PyObject *py_arg_item = NULL;
-        PyObject *kw_arg_item = NULL;
-        const gchar *arg_name = l->data;
-        int arg_cache_index = -1;
-        gboolean is_varargs_user_data = FALSE;
+    for (i = 0; i < n_py_args; i++) {
+        PyObject *item = PyTuple_GET_ITEM (py_args, i);
+        Py_INCREF (item);
+        PyTuple_SET_ITEM (combined_py_args, i, item);
+    }
 
-        if (arg_name != NULL)
-            arg_cache_index = GPOINTER_TO_INT (g_hash_table_lookup (cache->arg_name_hash, arg_name));
+    Py_CLEAR(py_args);
 
-        is_varargs_user_data = cache->user_data_varargs_index >= 0 &&
-                                arg_cache_index == cache->user_data_varargs_index;
+    for (i = 0, l = arg_name_list; i < n_expected_args && l; i++, l = l->next) {
+        PyObject *py_arg_item, *kw_arg_item = NULL;
+        const gchar *arg_name = l->data;
 
         if (n_py_kwargs > 0 && arg_name != NULL) {
             /* NULL means this argument has no keyword name */
             /* ex. the first argument to a method or constructor */
             kw_arg_item = PyDict_GetItemString (py_kwargs, arg_name);
         }
+        py_arg_item = PyTuple_GET_ITEM (combined_py_args, i);
 
-        /* use a bounded retrieval of the original input */
-        if (i < n_py_args)
-            py_arg_item = PyTuple_GET_ITEM (py_args, i);
-
-        if (kw_arg_item == NULL && py_arg_item != NULL) {
-            if (is_varargs_user_data) {
-                /* For tail end user_data varargs, pull a slice off and we are done. */
-                PyObject *user_data = PyTuple_GetSlice (py_args, i, PY_SSIZE_T_MAX);
-                PyTuple_SET_ITEM (combined_py_args, i, user_data);
-                return combined_py_args;
-            } else {
-                Py_INCREF (py_arg_item);
-                PyTuple_SET_ITEM (combined_py_args, i, py_arg_item);
-            }
-        } else if (kw_arg_item != NULL && py_arg_item == NULL) {
-            if (is_varargs_user_data) {
-                /* Special case where user_data is passed as a keyword argument (user_data=foo)
-                 * Wrap the value in a tuple to represent variable args for marshaling later on.
-                 */
-                PyObject *user_data = Py_BuildValue("(O)", kw_arg_item, NULL);
-                PyTuple_SET_ITEM (combined_py_args, i, user_data);
-            } else {
-                Py_INCREF (kw_arg_item);
-                PyTuple_SET_ITEM (combined_py_args, i, kw_arg_item);
-            }
+        if (kw_arg_item != NULL && py_arg_item == NULL) {
+            Py_INCREF (kw_arg_item);
+            PyTuple_SET_ITEM (combined_py_args, i, kw_arg_item);
 
         } else if (kw_arg_item == NULL && py_arg_item == NULL) {
-            if (is_varargs_user_data) {
-                /* For varargs user_data, pass an empty tuple when nothing is given. */
-                PyTuple_SET_ITEM (combined_py_args, i, PyTuple_New (0));
-            } else if (arg_cache_index >= 0 && _pygi_callable_cache_get_arg (cache, arg_cache_index)->has_default) {
-                /* If the argument supports a default, use a place holder in the
-                 * argument tuple, this will be checked later during marshaling.
-                 */
-                Py_INCREF (_PyGIDefaultArgPlaceholder);
-                PyTuple_SET_ITEM (combined_py_args, i, _PyGIDefaultArgPlaceholder);
-            } else {
-                char *full_name = pygi_callable_cache_get_full_name (cache);
-                PyErr_Format (PyExc_TypeError,
-                              "%.200s() takes exactly %zd %sargument%s (%zd given)",
-                              full_name,
-                              n_expected_args,
-                              n_py_kwargs > 0 ? "non-keyword " : "",
-                              n_expected_args == 1 ? "" : "s",
-                              n_py_args);
-                g_free (full_name);
-
-                Py_DECREF (combined_py_args);
-                return NULL;
-            }
+            PyErr_Format (PyExc_TypeError,
+                          "%.200s() takes exactly %d %sargument%s (%zd given)",
+                          function_name,
+                          n_expected_args,
+                          n_py_kwargs > 0 ? "non-keyword " : "",
+                          n_expected_args == 1 ? "" : "s",
+                          n_py_args);
+
+            Py_DECREF (combined_py_args);
+            return NULL;
+
         } else if (kw_arg_item != NULL && py_arg_item != NULL) {
-            char *full_name = pygi_callable_cache_get_full_name (cache);
             PyErr_Format (PyExc_TypeError,
                           "%.200s() got multiple values for keyword argument '%.200s'",
-                          full_name,
+                          function_name,
                           arg_name);
 
             Py_DECREF (combined_py_args);
-            g_free (full_name);
             return NULL;
         }
     }
@@ -221,81 +244,64 @@ _py_args_combine_and_check_length (PyGICallableCache *cache,
     return combined_py_args;
 }
 
-/* To reduce calls to g_slice_*() we (1) allocate all the memory depended on
- * the argument count in one go and (2) keep one version per argument count
- * around for faster reuse.
- */
-
-#define PyGI_INVOKE_ARG_STATE_SIZE(n)   (n * (sizeof (PyGIInvokeArgState) + sizeof (GIArgument *)))
-#define PyGI_INVOKE_ARG_STATE_N_MAX     10
-static gpointer free_arg_state[PyGI_INVOKE_ARG_STATE_N_MAX];
-
-/**
- * _pygi_invoke_arg_state_init:
- * Sets PyGIInvokeState.args and PyGIInvokeState.ffi_args.
- * On error returns FALSE and sets an exception.
- */
-gboolean
-_pygi_invoke_arg_state_init (PyGIInvokeState *state) {
-
-    gpointer mem;
+static inline gboolean
+_invoke_state_init_from_callable_cache (PyGIInvokeState *state,
+                                        PyGICallableCache *cache,
+                                        PyObject *py_args,
+                                        PyObject *kwargs)
+{
+    state->implementor_gtype = 0;
 
-    if (state->n_args < PyGI_INVOKE_ARG_STATE_N_MAX && (mem = free_arg_state[state->n_args]) != NULL) {
-        free_arg_state[state->n_args] = NULL;
-        memset (mem, 0, PyGI_INVOKE_ARG_STATE_SIZE (state->n_args));
-    } else {
-        mem = g_slice_alloc0 (PyGI_INVOKE_ARG_STATE_SIZE (state->n_args));
-    }
+    /* TODO: We don't use the class parameter sent in by  the structure
+     * so we remove it from the py_args tuple but we can keep it 
+     * around if we want to call actual gobject constructors
+     * in the future instead of calling g_object_new
+     */
+    if (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR) {
+        PyObject *constructor_class;
+        constructor_class = PyTuple_GetItem (py_args, 0);
 
-    if (mem == NULL && state->n_args != 0) {
-        PyErr_NoMemory();
-        return FALSE;
-    }
+        if (constructor_class == NULL) {
+            PyErr_Clear ();
+            PyErr_Format (PyExc_TypeError,
+                          "Constructors require the class to be passed in as an argument, "
+                          "No arguments passed to the %s constructor.",
+                          cache->name);
 
-    if (mem != NULL) {
-        state->args = mem;
-        state->ffi_args = (gpointer)((gchar *)mem + state->n_args * sizeof (PyGIInvokeArgState));
-    }
+            return FALSE;
+        }
+    } else if (cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
+        PyObject *py_gtype;
+        py_gtype = PyTuple_GetItem (py_args, 0);
+        if (py_gtype == NULL) {
+            PyErr_SetString (PyExc_TypeError,
+                             "need the GType of the implementor class");
+            return FALSE;
+        }
 
-    return TRUE;
-}
+        state->implementor_gtype = pyg_type_from_object (py_gtype);
 
-/**
- * _pygi_invoke_arg_state_free:
- * Frees PyGIInvokeState.args and PyGIInvokeState.ffi_args
- */
-void
-_pygi_invoke_arg_state_free(PyGIInvokeState *state) {
-    if (state->n_args < PyGI_INVOKE_ARG_STATE_N_MAX && free_arg_state[state->n_args] == NULL) {
-        free_arg_state[state->n_args] = state->args;
-        return;
+        if (state->implementor_gtype == 0)
+            return FALSE;
     }
 
-    g_slice_free1 (PyGI_INVOKE_ARG_STATE_SIZE (state->n_args), state->args);
-}
+    if  (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR ||
+            cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) {
 
-static gboolean
-_invoke_state_init_from_cache (PyGIInvokeState *state,
-                               PyGIFunctionCache *function_cache,
-                               PyObject *py_args,
-                               PyObject *kwargs)
-{
-    PyGICallableCache *cache = (PyGICallableCache *) function_cache;
-
-    state->n_args = _pygi_callable_cache_args_len (cache);
-
-    if (cache->throws) {
-        state->n_args++;
+        /* we could optimize this by using offsets instead of modifying the tuple but it makes the
+         * code more error prone and confusing so don't do that unless profiling shows
+         * significant gain
+         */
+        state->py_in_args = PyTuple_GetSlice (py_args, 1, PyTuple_Size (py_args));
+    } else {
+        state->py_in_args = py_args;
+        Py_INCREF (state->py_in_args);
     }
 
-    /* Copy the function pointer to the state for the normal case. For vfuncs,
-     * this has already been filled out based on the implementor's GType.
-     */
-    if (state->function_ptr == NULL)
-        state->function_ptr = function_cache->invoker.native_address;
-
-    state->py_in_args = _py_args_combine_and_check_length (cache,
-                                                           py_args,
+    state->py_in_args = _py_args_combine_and_check_length (cache->name,
+                                                           cache->arg_name_list,
+                                                           cache->arg_name_hash,
+                                                           state->py_in_args,
                                                            kwargs);
 
     if (state->py_in_args == NULL) {
@@ -303,148 +309,132 @@ _invoke_state_init_from_cache (PyGIInvokeState *state,
     }
     state->n_py_in_args = PyTuple_Size (state->py_in_args);
 
-    if (!_pygi_invoke_arg_state_init (state)) {
+    state->args = g_slice_alloc0 (cache->n_args * sizeof (GIArgument *));
+    if (state->args == NULL && cache->n_args != 0) {
+        PyErr_NoMemory();
         return FALSE;
     }
 
-    state->error = NULL;
+    state->in_args = g_slice_alloc0 (cache->n_from_py_args * sizeof(GIArgument));
+    if (state->in_args == NULL && cache->n_from_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
+
+    state->out_values = g_slice_alloc0 (cache->n_to_py_args * sizeof(GIArgument));
+    if (state->out_values == NULL && cache->n_to_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
 
-    if (cache->throws) {
-        gssize error_index = state->n_args - 1;
-        /* The ffi argument for GError needs to be a triple pointer. */
-        state->args[error_index].arg_pointer.v_pointer = &state->error;
-        state->ffi_args[error_index] = &(state->args[error_index].arg_pointer);
+    state->out_args = g_slice_alloc0 (cache->n_to_py_args * sizeof(GIArgument));
+    if (state->out_args == NULL && cache->n_to_py_args != 0) {
+        PyErr_NoMemory ();
+        return FALSE;
     }
 
+    state->error = NULL;
+
     return TRUE;
 }
 
-static void
-_invoke_state_clear (PyGIInvokeState *state, PyGIFunctionCache *function_cache)
+static inline void
+_invoke_state_clear (PyGIInvokeState *state, PyGICallableCache *cache)
 {
-    _pygi_invoke_arg_state_free (state);
+    g_slice_free1 (cache->n_args * sizeof(GIArgument *), state->args);
+    g_slice_free1 (cache->n_from_py_args * sizeof(GIArgument), state->in_args);
+    g_slice_free1 (cache->n_to_py_args * sizeof(GIArgument), state->out_args);
+    g_slice_free1 (cache->n_to_py_args * sizeof(GIArgument), state->out_values);
+
     Py_XDECREF (state->py_in_args);
 }
 
-static gboolean
-_caller_alloc (PyGIArgCache *arg_cache, GIArgument *arg)
+static gboolean _caller_alloc (PyGIInvokeState *state,
+                               PyGIArgCache *arg_cache,
+                               gssize arg_count,
+                               gssize out_count)
 {
-    if (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
-        PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-        arg->v_pointer = NULL;
-        if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
-            arg->v_pointer =
-                _pygi_boxed_alloc (iface_cache->interface_info, NULL);
-        } else if (iface_cache->g_type == G_TYPE_VALUE) {
-            arg->v_pointer = g_slice_new0 (GValue);
-        } else if (iface_cache->is_foreign) {
-            PyObject *foreign_struct =
-                pygi_struct_foreign_convert_from_g_argument (
-                    iface_cache->interface_info,
-                    GI_TRANSFER_NOTHING,
-                    NULL);
-
-                pygi_struct_foreign_convert_to_g_argument (foreign_struct,
-                                                           iface_cache->interface_info,
-                                                           GI_TRANSFER_EVERYTHING,
-                                                           arg);
-        } else {
-                gssize size = g_struct_info_get_size(
-                    (GIStructInfo *)iface_cache->interface_info);
-                arg->v_pointer = g_malloc0 (size);
-        }
-    } else if (arg_cache->type_tag == GI_TYPE_TAG_ARRAY) {
-        PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
-
-        arg->v_pointer = g_array_new (TRUE, TRUE, array_cache->item_size);
+    PyGIInterfaceCache *iface_cache;
+
+    g_assert (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE);
+
+    iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    state->out_args[out_count].v_pointer = NULL;
+    state->args[arg_count] = &state->out_args[out_count];
+    if (iface_cache->g_type == G_TYPE_BOXED) {
+        state->args[arg_count]->v_pointer =
+            _pygi_boxed_alloc (iface_cache->interface_info, NULL);
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        state->args[arg_count]->v_pointer = g_slice_new0 (GValue);
+    } else if (iface_cache->is_foreign) {
+        PyObject *foreign_struct =
+            pygi_struct_foreign_convert_from_g_argument (
+                iface_cache->interface_info,
+                NULL);
+
+            pygi_struct_foreign_convert_to_g_argument (foreign_struct,
+                                                       iface_cache->interface_info,
+                                                       GI_TRANSFER_EVERYTHING,
+                                                       state->args[arg_count]);
     } else {
-        return FALSE;
+            gssize size = g_struct_info_get_size(
+                (GIStructInfo *)iface_cache->interface_info);
+            state->args[arg_count]->v_pointer = g_malloc0 (size);
     }
 
-    if (arg->v_pointer == NULL)
+    if (state->args[arg_count]->v_pointer == NULL)
         return FALSE;
 
 
     return TRUE;
 }
 
-/* pygi_invoke_marshal_in_args:
- *
- * Fills out the state struct argument lists. arg_values will always hold
- * actual values marshaled either to or from Python and C. arg_pointers will
- * hold pointers (via v_pointer) to auxilary value storage. This will normally
- * point to values stored in arg_values. In the case of caller allocated
- * out args, arg_pointers[x].v_pointer will point to newly allocated memory.
- * arg_pointers inserts a level of pointer indirection between arg_values
- * and the argument list ffi receives when dealing with non-caller allocated
- * out arguments.
- *
- * For example:
- * [[
- *  void callee (int *i, int j) { *i = 50 - j; }
- *  void caller () {
- *    int i = 0;
- *    callee (&i, 8);
- *  }
- *
- *  args[0] == &arg_pointers[0];
- *  arg_pointers[0].v_pointer == &arg_values[0];
- *  arg_values[0].v_int == 42;
- *
- *  args[1] == &arg_values[1];
- *  arg_values[1].v_int == 8;
- * ]]
- *
- */
-static gboolean
-_invoke_marshal_in_args (PyGIInvokeState *state, PyGIFunctionCache *function_cache)
+static inline gboolean
+_invoke_marshal_in_args (PyGIInvokeState *state, PyGICallableCache *cache)
 {
-    PyGICallableCache *cache = (PyGICallableCache *) function_cache;
-    gssize i;
+    gssize i, in_count, out_count;
+    in_count = 0;
+    out_count = 0;
 
     if (state->n_py_in_args > cache->n_py_args) {
-        char *full_name = pygi_callable_cache_get_full_name (cache);
         PyErr_Format (PyExc_TypeError,
                       "%s() takes exactly %zd argument(s) (%zd given)",
-                      full_name,
+                      cache->name,
                       cache->n_py_args,
                       state->n_py_in_args);
-        g_free (full_name);
         return FALSE;
     }
 
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (cache); i++) {
-        GIArgument *c_arg = &state->args[i].arg_value;
-        PyGIArgCache *arg_cache = g_ptr_array_index (cache->args_cache, i);
+    for (i = 0; i < cache->n_args; i++) {
+        GIArgument *c_arg;
+        PyGIArgCache *arg_cache = cache->args_cache[i];
         PyObject *py_arg = NULL;
 
         switch (arg_cache->direction) {
             case PYGI_DIRECTION_FROM_PYTHON:
-                /* The ffi argument points directly at memory in arg_values. */
-                state->ffi_args[i] = c_arg;
+                state->args[i] = &(state->in_args[in_count]);
+                in_count++;
 
                 if (arg_cache->meta_type == PYGI_META_ARG_TYPE_CLOSURE) {
-                    state->ffi_args[i]->v_pointer = state->user_data;
+                    state->args[i]->v_pointer = state->user_data;
                     continue;
                 } else if (arg_cache->meta_type != PYGI_META_ARG_TYPE_PARENT)
                     continue;
 
                 if (arg_cache->py_arg_index >= state->n_py_in_args) {
-                    char *full_name = pygi_callable_cache_get_full_name (cache);
                     PyErr_Format (PyExc_TypeError,
                                   "%s() takes exactly %zd argument(s) (%zd given)",
-                                   full_name,
+                                   cache->name,
                                    cache->n_py_args,
                                    state->n_py_in_args);
-                    g_free (full_name);
 
                     /* clean up all of the args we have already marshalled,
                      * since invoke will not be called
                      */
                     pygi_marshal_cleanup_args_from_py_parameter_fail (state,
                                                                       cache,
-                                                                      i);
+                                                                      i - 1);
                     return FALSE;
                 }
 
@@ -454,18 +444,23 @@ _invoke_marshal_in_args (PyGIInvokeState *state, PyGIFunctionCache *function_cac
 
                 break;
             case PYGI_DIRECTION_BIDIRECTIONAL:
+                /* this will be filled in if it is an child value */
+                if (state->in_args[in_count].v_pointer != NULL)
+                    state->out_values[out_count] = state->in_args[in_count];
+
+                state->in_args[in_count].v_pointer = &state->out_values[out_count];
+                in_count++;
+
                 if (arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD) {
                     if (arg_cache->py_arg_index >= state->n_py_in_args) {
-                        char *full_name = pygi_callable_cache_get_full_name (cache);
                         PyErr_Format (PyExc_TypeError,
                                       "%s() takes exactly %zd argument(s) (%zd given)",
-                                       full_name,
+                                       cache->name,
                                        cache->n_py_args,
                                        state->n_py_in_args);
-                        g_free (full_name);
                         pygi_marshal_cleanup_args_from_py_parameter_fail (state,
                                                                           cache,
-                                                                          i);
+                                                                          i - 1);
                         return FALSE;
                     }
 
@@ -473,56 +468,27 @@ _invoke_marshal_in_args (PyGIInvokeState *state, PyGIFunctionCache *function_cac
                         PyTuple_GET_ITEM (state->py_in_args,
                                           arg_cache->py_arg_index);
                 }
-                /* Fall through */
-
             case PYGI_DIRECTION_TO_PYTHON:
-                /* arg_pointers always stores a pointer to the data to be marshaled "to python"
-                 * even in cases where arg_pointers is not being used as indirection between
-                 * ffi and arg_values. This gives a guarantee that out argument marshaling
-                 * (_invoke_marshal_out_args) can always rely on arg_pointers pointing to
-                 * the correct chunk of memory to marshal.
-                 */
-                state->args[i].arg_pointer.v_pointer = c_arg;
-
                 if (arg_cache->is_caller_allocates) {
-                    /* In the case of caller allocated out args, we don't use
-                     * an extra level of indirection and state->args will point
-                     * directly at the data to be marshaled. However, as noted
-                     * above, arg_pointers will also point to this caller allocated
-                     * chunk of memory used by out argument marshaling.
-                     */
-                    state->ffi_args[i] = c_arg;
-
-                    if (!_caller_alloc (arg_cache, c_arg)) {
-                        char *full_name = pygi_callable_cache_get_full_name (cache);
+                    if (!_caller_alloc (state, arg_cache, i, out_count)) {
                         PyErr_Format (PyExc_TypeError,
                                       "Could not caller allocate argument %zd of callable %s",
-                                      i, full_name);
-                        g_free (full_name);
+                                      i, cache->name);
                         pygi_marshal_cleanup_args_from_py_parameter_fail (state,
                                                                           cache,
-                                                                          i);
+                                                                          i - 1);
                         return FALSE;
                     }
                 } else {
-                    /* Non-caller allocated out args will use arg_pointers as an
-                     * extra level of indirection */
-                    state->ffi_args[i] = &state->args[i].arg_pointer;
+                    state->out_args[out_count].v_pointer = &state->out_values[out_count];
+                    state->args[i] = &state->out_values[out_count];
                 }
-
-                break;
-            default:
-                g_assert_not_reached();
+                out_count++;
                 break;
         }
 
-        if (py_arg == _PyGIDefaultArgPlaceholder) {
-            *c_arg = arg_cache->default_value;
-        } else if (arg_cache->from_py_marshaller != NULL &&
-                   arg_cache->meta_type != PYGI_META_ARG_TYPE_CHILD) {
-            gboolean success;
-            gpointer cleanup_data = NULL;
-
+        c_arg = state->args[i];
+        if (arg_cache->from_py_marshaller != NULL) {
             if (!arg_cache->allow_none && py_arg == Py_None) {
                 PyErr_Format (PyExc_TypeError,
                               "Argument %zd does not allow None as a value",
@@ -530,21 +496,18 @@ _invoke_marshal_in_args (PyGIInvokeState *state, PyGIFunctionCache *function_cac
 
                  pygi_marshal_cleanup_args_from_py_parameter_fail (state,
                                                                    cache,
-                                                                   i);
+                                                                   i - 1);
                  return FALSE;
             }
-            success = arg_cache->from_py_marshaller (state,
-                                                     cache,
-                                                     arg_cache,
-                                                     py_arg,
-                                                     c_arg,
-                                                     &cleanup_data);
-            state->args[i].arg_cleanup_data = cleanup_data;
-
+            gboolean success = arg_cache->from_py_marshaller (state,
+                                                              cache,
+                                                              arg_cache,
+                                                              py_arg,
+                                                              c_arg);
             if (!success) {
                 pygi_marshal_cleanup_args_from_py_parameter_fail (state,
                                                                   cache,
-                                                                  i);
+                                                                  i - 1);
                 return FALSE;
             }
 
@@ -555,16 +518,25 @@ _invoke_marshal_in_args (PyGIInvokeState *state, PyGIFunctionCache *function_cac
     return TRUE;
 }
 
-static PyObject *
-_invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_cache)
+static inline PyObject *
+_invoke_marshal_out_args (PyGIInvokeState *state, PyGICallableCache *cache)
 {
-    PyGICallableCache *cache = (PyGICallableCache *) function_cache;
     PyObject *py_out = NULL;
     PyObject *py_return = NULL;
-    gssize n_out_args = cache->n_to_py_args - cache->n_to_py_child_args;
+    gssize total_out_args = cache->n_to_py_args;
+    gboolean has_return = FALSE;
 
     if (cache->return_cache) {
         if (!cache->return_cache->is_skipped) {
+            if (cache->function_type == PYGI_FUNCTION_TYPE_CONSTRUCTOR) {
+                if (state->return_arg.v_pointer == NULL) {
+                    PyErr_SetString (PyExc_TypeError, "constructor returned NULL");
+                    pygi_marshal_cleanup_args_return_fail (state,
+                                                       cache);
+                    return NULL;
+                }
+            }
+
             py_return = cache->return_cache->to_py_marshaller ( state,
                                                                 cache,
                                                                 cache->return_cache,
@@ -574,6 +546,12 @@ _invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_ca
                                                        cache);
                 return NULL;
             }
+
+
+            if (cache->return_cache->type_tag != GI_TYPE_TAG_VOID) {
+                total_out_args++;
+                has_return = TRUE;
+            }
         } else {
             if (cache->return_cache->transfer == GI_TRANSFER_EVERYTHING) {
                 PyGIMarshalCleanupFunc to_py_cleanup =
@@ -582,14 +560,15 @@ _invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_ca
                 if (to_py_cleanup != NULL)
                     to_py_cleanup ( state,
                                     cache->return_cache,
-                                    NULL,
                                    &state->return_arg,
                                     FALSE);
             }
         }
     }
 
-    if (n_out_args == 0) {
+    total_out_args -= cache->n_to_py_child_args;
+
+    if (cache->n_to_py_args - cache->n_to_py_child_args  == 0) {
         if (cache->return_cache->is_skipped && state->error == NULL) {
             /* we skip the return value and have no (out) arguments to return,
              * so py_return should be NULL. But we must not return NULL,
@@ -601,13 +580,13 @@ _invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_ca
         }
 
         py_out = py_return;
-    } else if (!cache->has_return && n_out_args == 1) {
+    } else if (total_out_args == 1) {
         /* if we get here there is one out arg an no return */
         PyGIArgCache *arg_cache = (PyGIArgCache *)cache->to_py_args->data;
         py_out = arg_cache->to_py_marshaller (state,
                                               cache,
                                               arg_cache,
-                                              state->args[arg_cache->c_arg_index].arg_pointer.v_pointer);
+                                              state->args[arg_cache->c_arg_index]);
         if (py_out == NULL) {
             pygi_marshal_cleanup_args_to_py_parameter_fail (state,
                                                             cache,
@@ -616,36 +595,26 @@ _invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_ca
         }
 
     } else {
-        /* return a tuple */
         gssize py_arg_index = 0;
         GSList *cache_item = cache->to_py_args;
-        gssize tuple_len = cache->has_return + n_out_args;
-
-        py_out = pygi_resulttuple_new (cache->resulttuple_type, tuple_len);
-
-        if (py_out == NULL) {
-            pygi_marshal_cleanup_args_to_py_parameter_fail (state,
-                                                            cache,
-                                                            py_arg_index);
-            return NULL;
-        }
-
-        if (cache->has_return) {
+        /* return a tuple */
+        py_out = PyTuple_New (total_out_args);
+        if (has_return) {
             PyTuple_SET_ITEM (py_out, py_arg_index, py_return);
             py_arg_index++;
         }
 
-        for (; py_arg_index < tuple_len; py_arg_index++) {
+        for(; py_arg_index < total_out_args; py_arg_index++) {
             PyGIArgCache *arg_cache = (PyGIArgCache *)cache_item->data;
             PyObject *py_obj = arg_cache->to_py_marshaller (state,
                                                             cache,
                                                             arg_cache,
-                                                            state->args[arg_cache->c_arg_index].arg_pointer.v_pointer);
+                                                            state->args[arg_cache->c_arg_index]);
 
             if (py_obj == NULL) {
-                if (cache->has_return)
+                if (has_return)
                     py_arg_index--;
-
                 pygi_marshal_cleanup_args_to_py_parameter_fail (state,
                                                                 cache,
                                                                 py_arg_index);
@@ -661,103 +630,44 @@ _invoke_marshal_out_args (PyGIInvokeState *state, PyGIFunctionCache *function_ca
 }
 
 PyObject *
-pygi_invoke_c_callable (PyGIFunctionCache *function_cache,
-                        PyGIInvokeState *state,
-                        PyObject *py_args,
-                        PyObject *py_kwargs)
+pygi_callable_info_invoke (GIBaseInfo *info, PyObject *py_args,
+                           PyObject *kwargs, PyGICallableCache *cache,
+                           GCallback function_ptr, gpointer user_data)
 {
-    PyGICallableCache *cache = (PyGICallableCache *) function_cache;
-    GIFFIReturnValue ffi_return_value = {0};
+    PyGIInvokeState state = { 0, };
     PyObject *ret = NULL;
 
-    if (!_invoke_state_init_from_cache (state, function_cache,
-                                        py_args, py_kwargs))
-         goto err;
-
-    if (!_invoke_marshal_in_args (state, function_cache))
-         goto err;
+    if (!_invoke_state_init_from_callable_cache (&state, cache, py_args, kwargs))
+        goto err;
 
-    Py_BEGIN_ALLOW_THREADS;
+    if (cache->function_type == PYGI_FUNCTION_TYPE_CCALLBACK)
+        state.user_data = user_data;
 
-        ffi_call (&function_cache->invoker.cif,
-                  state->function_ptr,
-                  (void *) &ffi_return_value,
-                  (void **) state->ffi_args);
+    if (!_invoke_marshal_in_args (&state, cache))
+        goto err;
 
-    Py_END_ALLOW_THREADS;
+    if (!_invoke_callable (&state, cache, info, function_ptr))
+        goto err;
 
-    /* If the callable throws, the address of state->error will be bound into
-     * the state->args as the last value. When the callee sets an error using
-     * the state->args passed, it will have the side effect of setting
-     * state->error allowing for easy checking here.
-     */
-    if (state->error != NULL) {
-        if (pygi_error_check (&state->error)) {
-            /* even though we errored out, the call itself was successful,
-               so we assume the call processed all of the parameters */
-            pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
-            goto err;
-        }
-    }
-
-    if (cache->return_cache) {
-        gi_type_info_extract_ffi_return_value (cache->return_cache->type_info,
-                                               &ffi_return_value,
-                                               &state->return_arg);
-    }
-
-    ret = _invoke_marshal_out_args (state, function_cache);
-    pygi_marshal_cleanup_args_from_py_marshal_success (state, cache);
-
-    if (ret != NULL)
-        pygi_marshal_cleanup_args_to_py_marshal_success (state, cache);
+    pygi_marshal_cleanup_args_from_py_marshal_success (&state, cache);
 
+    ret = _invoke_marshal_out_args (&state, cache);
+    if (ret)
+        pygi_marshal_cleanup_args_to_py_marshal_success (&state, cache);
 err:
-    _invoke_state_clear (state, function_cache);
+    _invoke_state_clear (&state, cache);
     return ret;
 }
 
 PyObject *
-pygi_callable_info_invoke (GIBaseInfo *info, PyObject *py_args,
-                           PyObject *kwargs, PyGICallableCache *cache,
-                           gpointer user_data)
-{
-    return pygi_function_cache_invoke ((PyGIFunctionCache *) cache,
-                                       py_args, kwargs);
-}
-
-PyObject *
 _wrap_g_callable_info_invoke (PyGIBaseInfo *self, PyObject *py_args,
                               PyObject *kwargs)
 {
     if (self->cache == NULL) {
-        PyGIFunctionCache *function_cache;
-        GIInfoType type = g_base_info_get_type (self->info);
-
-        if (type == GI_INFO_TYPE_FUNCTION) {
-            GIFunctionInfoFlags flags;
-
-            flags = g_function_info_get_flags ( (GIFunctionInfo *)self->info);
-
-            if (flags & GI_FUNCTION_IS_CONSTRUCTOR) {
-                function_cache = pygi_constructor_cache_new (self->info);
-            } else if (flags & GI_FUNCTION_IS_METHOD) {
-                function_cache = pygi_method_cache_new (self->info);
-            } else {
-                function_cache = pygi_function_cache_new (self->info);
-            }
-        } else if (type == GI_INFO_TYPE_VFUNC) {
-            function_cache = pygi_vfunc_cache_new (self->info);
-        } else if (type == GI_INFO_TYPE_CALLBACK) {
-            g_error ("Cannot invoke callback types");
-        } else {
-            function_cache = pygi_method_cache_new (self->info);
-        }
-
-        self->cache = (PyGICallableCache *)function_cache;
+        self->cache = _pygi_callable_cache_new (self->info, FALSE);
         if (self->cache == NULL)
             return NULL;
     }
 
-    return pygi_callable_info_invoke (self->info, py_args, kwargs, self->cache, NULL);
+    return pygi_callable_info_invoke (self->info, py_args, kwargs, self->cache, NULL, NULL);
 }
index aa51f3f..051bc8d 100644 (file)
@@ -14,7 +14,9 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_INVOKE_H__
 
 #include <girepository.h>
 
-#include "pygi-info.h"
+#include "pygi-private.h"
 #include "pygi-invoke-state-struct.h"
-
 G_BEGIN_DECLS
 
-PyObject *pygi_invoke_c_callable    (PyGIFunctionCache *function_cache,
-                                     PyGIInvokeState *state,
-                                     PyObject *py_args, PyObject *py_kwargs);
 PyObject *pygi_callable_info_invoke (GIBaseInfo *info, PyObject *py_args,
                                      PyObject *kwargs, PyGICallableCache *cache,
-                                     gpointer user_data);
+                                     GCallback function_ptr, gpointer user_data);
 PyObject *_wrap_g_callable_info_invoke (PyGIBaseInfo *self, PyObject *py_args,
                                         PyObject *kwargs);
 
-gboolean _pygi_invoke_arg_state_init (PyGIInvokeState *state);
-
-void _pygi_invoke_arg_state_free     (PyGIInvokeState *state);
-
 G_END_DECLS
 
 #endif /* __PYGI_INVOKE_H__ */
diff --git a/gi/pygi-list.c b/gi/pygi-list.c
deleted file mode 100644 (file)
index 72a3d20..0000000
+++ /dev/null
@@ -1,475 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include "pygi-list.h"
-#include "pygi-argument.h"
-#include "pygi-util.h"
-
-typedef PyGISequenceCache PyGIArgGList;
-
-/*
- * GList and GSList from Python
- */
-static gboolean
-_pygi_marshal_from_py_glist (PyGIInvokeState   *state,
-                             PyGICallableCache *callable_cache,
-                             PyGIArgCache      *arg_cache,
-                             PyObject          *py_arg,
-                             GIArgument        *arg,
-                             gpointer          *cleanup_data)
-{
-    PyGIMarshalFromPyFunc from_py_marshaller;
-    int i;
-    Py_ssize_t length;
-    GList *list_ = NULL;
-    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (!PySequence_Check (py_arg)) {
-        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    length = PySequence_Length (py_arg);
-    if (length < 0)
-        return FALSE;
-
-    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
-    for (i = 0; i < length; i++) {
-        GIArgument item = {0};
-        gpointer item_cleanup_data = NULL;
-        PyObject *py_item = PySequence_GetItem (py_arg, i);
-        if (py_item == NULL)
-            goto err;
-
-        if (!from_py_marshaller ( state,
-                                  callable_cache,
-                                  sequence_cache->item_cache,
-                                  py_item,
-                                 &item,
-                                 &item_cleanup_data))
-            goto err;
-
-        Py_DECREF (py_item);
-        list_ = g_list_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_info));
-        continue;
-err:
-        /* FIXME: clean up list
-        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
-            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
-        }
-        */
-        Py_XDECREF (py_item);
-        g_list_free (list_);
-        _PyGI_ERROR_PREFIX ("Item %i: ", i);
-        return FALSE;
-    }
-
-    arg->v_pointer = g_list_reverse (list_);
-
-    if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
-        /* Free everything in cleanup. */
-        *cleanup_data = arg->v_pointer;
-    } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
-        /* Make a shallow copy so we can free the elements later in cleanup
-         * because it is possible invoke will free the list before our cleanup. */
-        *cleanup_data = g_list_copy (arg->v_pointer);
-    } else { /* GI_TRANSFER_EVERYTHING */
-        /* No cleanup, everything is given to the callee. */
-        *cleanup_data = NULL;
-    }
-    return TRUE;
-}
-
-
-static gboolean
-_pygi_marshal_from_py_gslist (PyGIInvokeState   *state,
-                              PyGICallableCache *callable_cache,
-                              PyGIArgCache      *arg_cache,
-                              PyObject          *py_arg,
-                              GIArgument        *arg,
-                              gpointer          *cleanup_data)
-{
-    PyGIMarshalFromPyFunc from_py_marshaller;
-    int i;
-    Py_ssize_t length;
-    GSList *list_ = NULL;
-    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (!PySequence_Check (py_arg)) {
-        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    length = PySequence_Length (py_arg);
-    if (length < 0)
-        return FALSE;
-
-    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
-    for (i = 0; i < length; i++) {
-        GIArgument item = {0};
-        gpointer item_cleanup_data = NULL;
-        PyObject *py_item = PySequence_GetItem (py_arg, i);
-        if (py_item == NULL)
-            goto err;
-
-        if (!from_py_marshaller ( state,
-                             callable_cache,
-                             sequence_cache->item_cache,
-                             py_item,
-                            &item,
-                            &item_cleanup_data))
-            goto err;
-
-        Py_DECREF (py_item);
-        list_ = g_slist_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_info));
-        continue;
-err:
-        /* FIXME: Clean up list
-        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
-            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
-        }
-        */
-
-        Py_XDECREF (py_item);
-        g_slist_free (list_);
-        _PyGI_ERROR_PREFIX ("Item %i: ", i);
-        return FALSE;
-    }
-
-    arg->v_pointer = g_slist_reverse (list_);
-
-    if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
-        /* Free everything in cleanup. */
-        *cleanup_data = arg->v_pointer;
-    } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
-        /* Make a shallow copy so we can free the elements later in cleanup
-         * because it is possible invoke will free the list before our cleanup. */
-        *cleanup_data = g_slist_copy (arg->v_pointer);
-    } else { /* GI_TRANSFER_EVERYTHING */
-        /* No cleanup, everything is given to the callee. */
-        *cleanup_data = NULL;
-    }
-
-    return TRUE;
-}
-
-static void
-_pygi_marshal_cleanup_from_py_glist  (PyGIInvokeState *state,
-                                      PyGIArgCache    *arg_cache,
-                                      PyObject        *py_arg,
-                                      gpointer         data,
-                                      gboolean         was_processed)
-{
-    if (was_processed) {
-        GSList *list_;
-        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
-        list_ = (GSList *)data;
-
-        /* clean up items first */
-        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
-            PyGIMarshalCleanupFunc cleanup_func =
-                sequence_cache->item_cache->from_py_cleanup;
-            GSList *node = list_;
-            gsize i = 0;
-            while (node != NULL) {
-                PyObject *py_item = PySequence_GetItem (py_arg, i);
-                cleanup_func (state,
-                              sequence_cache->item_cache,
-                              py_item,
-                              node->data,
-                              TRUE);
-                Py_XDECREF (py_item);
-                node = node->next;
-                i++;
-            }
-        }
-
-        if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
-            g_list_free ( (GList *)list_);
-        } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
-            g_slist_free (list_);
-        } else {
-            g_assert_not_reached();
-        }
-    }
-}
-
-
-/*
- * GList and GSList to Python
- */
-static PyObject *
-_pygi_marshal_to_py_glist (PyGIInvokeState   *state,
-                           PyGICallableCache *callable_cache,
-                           PyGIArgCache      *arg_cache,
-                           GIArgument        *arg)
-{
-    GList *list_;
-    gsize length;
-    gsize i;
-
-    PyGIMarshalToPyFunc item_to_py_marshaller;
-    PyGIArgCache *item_arg_cache;
-    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
-
-    PyObject *py_obj = NULL;
-
-    list_ = arg->v_pointer;
-    length = g_list_length (list_);
-
-    py_obj = PyList_New (length);
-    if (py_obj == NULL)
-        return NULL;
-
-    item_arg_cache = seq_cache->item_cache;
-    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
-    for (i = 0; list_ != NULL; list_ = g_list_next (list_), i++) {
-        GIArgument item_arg;
-        PyObject *py_item;
-
-        item_arg.v_pointer = list_->data;
-        _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_info);
-        py_item = item_to_py_marshaller (state,
-                                         callable_cache,
-                                         item_arg_cache,
-                                         &item_arg);
-
-        if (py_item == NULL) {
-            Py_CLEAR (py_obj);
-            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
-            return NULL;
-        }
-
-        PyList_SET_ITEM (py_obj, i, py_item);
-    }
-
-    return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_gslist (PyGIInvokeState   *state,
-                            PyGICallableCache *callable_cache,
-                            PyGIArgCache      *arg_cache,
-                            GIArgument        *arg)
-{
-    GSList *list_;
-    gsize length;
-    gsize i;
-
-    PyGIMarshalToPyFunc item_to_py_marshaller;
-    PyGIArgCache *item_arg_cache;
-    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
-
-    PyObject *py_obj = NULL;
-
-    list_ = arg->v_pointer;
-    length = g_slist_length (list_);
-
-    py_obj = PyList_New (length);
-    if (py_obj == NULL)
-        return NULL;
-
-    item_arg_cache = seq_cache->item_cache;
-    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
-    for (i = 0; list_ != NULL; list_ = g_slist_next (list_), i++) {
-        GIArgument item_arg;
-        PyObject *py_item;
-
-        item_arg.v_pointer = list_->data;
-        _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_info);
-        py_item = item_to_py_marshaller (state,
-                                        callable_cache,
-                                        item_arg_cache,
-                                        &item_arg);
-
-        if (py_item == NULL) {
-            Py_CLEAR (py_obj);
-            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
-            return NULL;
-        }
-
-        PyList_SET_ITEM (py_obj, i, py_item);
-    }
-
-    return py_obj;
-}
-
-static void
-_pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
-                                   PyGIArgCache    *arg_cache,
-                                   PyObject        *dummy,
-                                   gpointer         data,
-                                   gboolean         was_processed)
-{
-    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
-            arg_cache->transfer == GI_TRANSFER_CONTAINER) {
-        GSList *list_ = (GSList *)data;
-
-        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
-            PyGIMarshalCleanupFunc cleanup_func =
-                sequence_cache->item_cache->to_py_cleanup;
-            GSList *node = list_;
-
-            while (node != NULL) {
-                cleanup_func (state,
-                              sequence_cache->item_cache,
-                              NULL,
-                              node->data,
-                              was_processed);
-                node = node->next;
-            }
-        }
-
-        if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
-            g_list_free ( (GList *)list_);
-        } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
-            g_slist_free (list_);
-        } else {
-            g_assert_not_reached();
-        }
-    }
-}
-
-static void
-_arg_cache_from_py_glist_setup (PyGIArgCache *arg_cache,
-                                GITransfer transfer)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_glist;
-    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
-}
-
-static void
-_arg_cache_to_py_glist_setup (PyGIArgCache *arg_cache,
-                              GITransfer transfer)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_glist;
-    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
-}
-
-static void
-_arg_cache_from_py_gslist_setup (PyGIArgCache *arg_cache,
-                                 GITransfer transfer)
-{
-    arg_cache->from_py_marshaller = _pygi_marshal_from_py_gslist;
-    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
-}
-
-static void
-_arg_cache_to_py_gslist_setup (PyGIArgCache *arg_cache,
-                                 GITransfer transfer)
-{
-    arg_cache->to_py_marshaller = _pygi_marshal_to_py_gslist;
-    arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
-}
-
-
-/*
- * GList/GSList Interface
- */
-
-static gboolean
-pygi_arg_glist_setup_from_info (PyGIArgCache      *arg_cache,
-                                GITypeInfo        *type_info,
-                                GIArgInfo         *arg_info,
-                                GITransfer         transfer,
-                                PyGIDirection      direction,
-                                PyGICallableCache *callable_cache)
-{
-    GITypeTag type_tag = g_type_info_get_tag (type_info);
-
-    if (!pygi_arg_sequence_setup ((PyGISequenceCache *)arg_cache,
-                                  type_info,
-                                  arg_info,
-                                  transfer,
-                                  direction,
-                                  callable_cache))
-        return FALSE;
-
-    switch (type_tag) {
-        case GI_TYPE_TAG_GLIST:
-            {
-                if (direction & PYGI_DIRECTION_FROM_PYTHON)
-                    _arg_cache_from_py_glist_setup (arg_cache, transfer);
-
-                if (direction & PYGI_DIRECTION_TO_PYTHON)
-                    _arg_cache_to_py_glist_setup (arg_cache, transfer);
-                break;
-            }
-        case GI_TYPE_TAG_GSLIST:
-            {
-                if (direction & PYGI_DIRECTION_FROM_PYTHON)
-                    _arg_cache_from_py_gslist_setup (arg_cache, transfer);
-
-                if (direction & PYGI_DIRECTION_TO_PYTHON)
-                    _arg_cache_to_py_gslist_setup (arg_cache, transfer);
-
-                break;
-             }
-       default:
-           g_assert_not_reached ();
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_glist_new_from_info (GITypeInfo        *type_info,
-                              GIArgInfo         *arg_info,
-                              GITransfer         transfer,
-                              PyGIDirection      direction,
-                              PyGICallableCache *callable_cache)
-{
-    gboolean res = FALSE;
-
-    PyGIArgCache *arg_cache = (PyGIArgCache *) g_slice_new0 (PyGIArgGList);
-    if (arg_cache == NULL)
-        return NULL;
-
-    res = pygi_arg_glist_setup_from_info (arg_cache,
-                                          type_info,
-                                          arg_info,
-                                          transfer,
-                                          direction,
-                                          callable_cache);
-    if (res) {
-        return arg_cache;
-    } else {
-        pygi_arg_cache_free (arg_cache);
-        return NULL;
-    }
-}
diff --git a/gi/pygi-list.h b/gi/pygi-list.h
deleted file mode 100644 (file)
index f22e024..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_LIST_H__
-#define __PYGI_LIST_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-PyGIArgCache *pygi_arg_glist_new_from_info  (GITypeInfo        *type_info,
-                                             GIArgInfo         *arg_info,   /* may be null */
-                                             GITransfer         transfer,
-                                             PyGIDirection      direction,
-                                             PyGICallableCache *callable_cache);
-
-/* Internally dispatches GList and GSList */
-#define pygi_arg_gslist_new_from_info  pygi_arg_glist_new_from_info
-
-G_END_DECLS
-
-#endif /*__PYGI_LIST_H__*/
index 906be58..0f27ba7 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
-
-#include "pygi-marshal-cleanup.h"
-#include "pygi-foreign.h"
-#include <glib.h>
-
+ #include "pygi-marshal-cleanup.h"
+ #include <glib.h>
 static inline void
 _cleanup_caller_allocates (PyGIInvokeState    *state,
                            PyGIArgCache       *cache,
-                           PyObject           *py_obj,
-                           gpointer            data,
-                           gboolean            was_processed)
+                           gpointer            data)
 {
     PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)cache;
 
-    /* check GValue first because GValue is also a boxed sub-type */
-    if (g_type_is_a (iface_cache->g_type, G_TYPE_VALUE)) {
-        if (was_processed)
-            g_value_unset (data);
-        g_slice_free (GValue, data);
-    } else if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
+    if (iface_cache->g_type == G_TYPE_BOXED) {
         gsize size;
-        if (was_processed)
-            return; /* will be cleaned up at deallocation */
         size = g_struct_info_get_size (iface_cache->interface_info);
         g_slice_free1 (size, data);
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        g_slice_free (GValue, data);
     } else if (iface_cache->is_foreign) {
-        if (was_processed)
-            return; /* will be cleaned up at deallocation */
         pygi_struct_foreign_release ((GIBaseInfo *)iface_cache->interface_info,
                                      data);
     } else {
-        if (was_processed)
-            return; /* will be cleaned up at deallocation */
         g_free (data);
     }
 }
@@ -94,23 +83,15 @@ pygi_marshal_cleanup_args_from_py_marshal_success (PyGIInvokeState   *state,
 {
     gssize i;
 
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (cache); i++) {
-        PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (cache, i);
+    /* For in success, call cleanup for all GI_DIRECTION_IN values only. */
+    for (i = 0; i < cache->n_args; i++) {
+        PyGIArgCache *arg_cache = cache->args_cache[i];
         PyGIMarshalCleanupFunc cleanup_func = arg_cache->from_py_cleanup;
-        gpointer cleanup_data = state->args[i].arg_cleanup_data;
-
-        /* Only cleanup using args_cleanup_data when available.
-         * It is the responsibility of the various "from_py" marshalers to return
-         * cleanup_data which is then passed into their respective cleanup function.
-         * PyGIInvokeState.args_cleanup_data stores this data (via _invoke_marshal_in_args)
-         * for the duration of the invoke up until this point.
-         */
-        if (cleanup_func && cleanup_data != NULL && arg_cache->py_arg_index >= 0 &&
-                arg_cache->direction & PYGI_DIRECTION_FROM_PYTHON) {
-            PyObject *py_arg = PyTuple_GET_ITEM (state->py_in_args, arg_cache->py_arg_index);
-            cleanup_func (state, arg_cache, py_arg, cleanup_data, TRUE);
-            state->args[i].arg_cleanup_data = NULL;
-        }
+
+        if (cleanup_func &&
+                arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON &&
+                    state->args[i]->v_pointer != NULL)
+            cleanup_func (state, arg_cache, state->args[i]->v_pointer, TRUE);
     }
 }
 
@@ -118,38 +99,28 @@ void
 pygi_marshal_cleanup_args_to_py_marshal_success (PyGIInvokeState   *state,
                                                  PyGICallableCache *cache)
 {
-    GSList *cache_item;
     /* clean up the return if available */
     if (cache->return_cache != NULL) {
         PyGIMarshalCleanupFunc cleanup_func = cache->return_cache->to_py_cleanup;
         if (cleanup_func && state->return_arg.v_pointer != NULL)
             cleanup_func (state,
                           cache->return_cache,
-                          NULL,
                           state->return_arg.v_pointer,
                           TRUE);
     }
 
     /* Now clean up args */
-    cache_item = cache->to_py_args;
+    GSList *cache_item = cache->to_py_args;
     while (cache_item) {
         PyGIArgCache *arg_cache = (PyGIArgCache *) cache_item->data;
         PyGIMarshalCleanupFunc cleanup_func = arg_cache->to_py_cleanup;
-        gpointer data = state->args[arg_cache->c_arg_index].arg_value.v_pointer;
+        gpointer data = state->args[arg_cache->c_arg_index]->v_pointer;
 
         if (cleanup_func != NULL && data != NULL)
             cleanup_func (state,
                           arg_cache,
-                          NULL,
                           data,
                           TRUE);
-        else if (arg_cache->is_caller_allocates && data != NULL) {
-            _cleanup_caller_allocates (state,
-                                       arg_cache,
-                                       NULL,
-                                       data,
-                                       TRUE);
-        }
 
         cache_item = cache_item->next;
     }
@@ -164,33 +135,24 @@ pygi_marshal_cleanup_args_from_py_parameter_fail (PyGIInvokeState   *state,
 
     state->failed = TRUE;
 
-    for (i = 0; (gsize)i < _pygi_callable_cache_args_len (cache)  && i <= failed_arg_index; i++) {
-        PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (cache, i);
+    for (i = 0; i < cache->n_args  && i <= failed_arg_index; i++) {
+        PyGIArgCache *arg_cache = cache->args_cache[i];
         PyGIMarshalCleanupFunc cleanup_func = arg_cache->from_py_cleanup;
-        gpointer cleanup_data = state->args[i].arg_cleanup_data;
-        PyObject *py_arg = NULL;
-
-        if (arg_cache->py_arg_index < 0) {
-            continue;
-        }
-        py_arg = PyTuple_GET_ITEM (state->py_in_args, arg_cache->py_arg_index);
+        gpointer data = state->args[i]->v_pointer;
 
-        if (cleanup_func && cleanup_data != NULL &&
-                arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON) {
+        if (cleanup_func &&
+                arg_cache->direction == PYGI_DIRECTION_FROM_PYTHON &&
+                    data != NULL) {
             cleanup_func (state,
                           arg_cache,
-                          py_arg,
-                          cleanup_data,
+                          data,
                           i < failed_arg_index);
 
-        } else if (arg_cache->is_caller_allocates && cleanup_data != NULL) {
+        } else if (arg_cache->is_caller_allocates && data != NULL) {
             _cleanup_caller_allocates (state,
                                        arg_cache,
-                                       py_arg,
-                                       cleanup_data,
-                                       FALSE);
+                                       data);
         }
-        state->args[i].arg_cleanup_data = NULL;
     }
 }
 
@@ -208,3 +170,392 @@ pygi_marshal_cleanup_args_to_py_parameter_fail (PyGIInvokeState   *state,
 {
     state->failed = TRUE;
 }
+
+void 
+_pygi_marshal_cleanup_closure_unref (PyGIInvokeState *state,
+                                     PyGIArgCache    *arg_cache,
+                                     gpointer         data,
+                                     gboolean         was_processed)
+{
+    g_closure_unref ( (GClosure *)data);
+}
+
+void
+_pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
+                                    PyGIArgCache    *arg_cache,
+                                    gpointer         data,
+                                    gboolean         was_processed)
+{
+    /* We strdup strings so always free if we have processed this
+       parameter for input */
+    if (was_processed)
+        g_free (data);
+}
+
+void
+_pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
+                                  PyGIArgCache    *arg_cache,
+                                  gpointer         data,
+                                  gboolean         was_processed)
+{
+    /* Python copies the string so we need to free it
+       if the interface is transfering ownership, 
+       whether or not it has been processed yet */
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_free (data);
+}
+
+void
+_pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
+                                                PyGIArgCache    *arg_cache,
+                                                gpointer         data,
+                                                gboolean         was_processed)
+{
+    /* If we processed the parameter but fail before invoking the method,
+       we need to remove the ref we added */
+    if (was_processed && state->failed && data != NULL &&
+            arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_unref (G_OBJECT(data));
+}
+
+void
+_pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
+                                              PyGIArgCache    *arg_cache,
+                                              gpointer         data,
+                                              gboolean         was_processed)
+{
+    /* If we error out and the object is not marshalled into a PyGObject
+       we must take care of removing the ref */
+    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_unref (G_OBJECT(data));
+}
+
+void 
+_pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
+                                                       PyGIArgCache    *arg_cache,
+                                                       gpointer         data,
+                                                       gboolean         was_processed)
+{
+    if (was_processed) {
+        PyObject *py_arg = PyTuple_GET_ITEM (state->py_in_args,
+                                             arg_cache->py_arg_index);
+        GType py_object_type =
+            pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+
+        if (py_object_type != G_TYPE_VALUE) {
+            g_value_unset ((GValue *) data);
+            g_slice_free (GValue, data);
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                        PyGIArgCache    *arg_cache,
+                                                        gpointer         data,
+                                                        gboolean         was_processed)
+{
+    if (state->failed && was_processed)
+        pygi_struct_foreign_release (
+            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+            data);
+}
+
+void
+_pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                      PyGIArgCache    *arg_cache,
+                                                      gpointer         data,
+                                                      gboolean         was_processed)
+{
+    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        pygi_struct_foreign_release ( 
+            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+            data);
+}
+
+static GArray*
+_wrap_c_array (PyGIInvokeState   *state,
+               PyGISequenceCache *sequence_cache,
+               gpointer           data)
+{
+    GArray *array_;
+    gsize   len = 0;
+  
+    if (sequence_cache->fixed_size >= 0) {
+        len = sequence_cache->fixed_size;
+    } else if (sequence_cache->is_zero_terminated) {
+        len = g_strv_length ((gchar **)data);
+    } else if (sequence_cache->len_arg_index >= 0) {
+        GIArgument *len_arg = state->args[sequence_cache->len_arg_index];
+        len = len_arg->v_long;
+    }
+
+    array_ = g_array_new (FALSE,
+                          FALSE,
+                          sequence_cache->item_size);
+
+    if (array_ == NULL)
+        return NULL;
+
+    g_free (array_->data);
+    array_->data = data;
+    array_->len = len;
+
+    return array_;
+}
+
+void
+_pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
+                                     PyGIArgCache    *arg_cache,
+                                     gpointer         data,
+                                     gboolean         was_processed)
+{
+    if (was_processed) {
+        GArray *array_ = NULL;
+        GPtrArray *ptr_array_ = NULL;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        /* If this isn't a garray create one to help process variable sized
+           array elements */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            array_ = _wrap_c_array (state, sequence_cache, data);
+            
+            if (array_ == NULL)
+                return;
+            
+        } else if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+            ptr_array_ = (GPtrArray *) data;
+        } else {
+            array_ = (GArray *) data;
+        }
+
+        /* clean up items first */
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            gsize i;
+            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+
+            for (i = 0; i < len; i++) {
+                gpointer item;
+
+                /* case 1: GPtrArray */
+                if (ptr_array_ != NULL)
+                    item = g_ptr_array_index (ptr_array_, i);
+                /* case 2: C array or GArray with object pointers */
+                else if (sequence_cache->item_cache->is_pointer)
+                    item = g_array_index (array_, gpointer, i);
+                /* case 3: C array or GArray with simple types or structs */
+                else
+                    item = array_->data + i * sequence_cache->item_size;
+
+                cleanup_func (state, sequence_cache->item_cache, item, TRUE);
+            }
+        }
+
+        /* Only free the array when we didn't transfer ownership */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            g_array_free (array_, arg_cache->transfer == GI_TRANSFER_NOTHING);
+        } else if (state->failed ||
+                   arg_cache->transfer == GI_TRANSFER_NOTHING) {
+            if (array_ != NULL)
+                g_array_free (array_, TRUE);
+            else
+                g_ptr_array_free (ptr_array_, TRUE);
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+        arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+        GArray *array_ = NULL;
+        GPtrArray *ptr_array_ = NULL;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        /* If this isn't a garray create one to help process variable sized
+           array elements */
+        if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+            array_ = _wrap_c_array (state, sequence_cache, data);
+            
+            if (array_ == NULL)
+                return;
+
+        } else if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+            ptr_array_ = (GPtrArray *) data;
+        } else {
+            array_ = (GArray *) data;
+        }
+
+        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+            gsize i;
+            guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+
+            PyGIMarshalCleanupFunc cleanup_func = sequence_cache->item_cache->to_py_cleanup;
+            for (i = 0; i < len; i++) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              (array_ != NULL) ? g_array_index (array_, gpointer, i) : g_ptr_array_index (ptr_array_, i),
+                              was_processed);
+            }
+        }
+
+        if (array_ != NULL)
+            g_array_free (array_, TRUE);
+        else
+            g_ptr_array_free (ptr_array_, TRUE);
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_glist  (PyGIInvokeState *state,
+                                      PyGIArgCache    *arg_cache,
+                                      gpointer         data,
+                                      gboolean         was_processed)
+{
+    if (was_processed) {
+        GSList *list_;
+        PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+        list_ = (GSList *)data;
+
+        /* clean up items first */
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+            GSList *node = list_;
+            while (node != NULL) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              node->data,
+                              TRUE);
+                node = node->next;
+            }
+        }
+
+        if (state->failed ||
+               arg_cache->transfer == GI_TRANSFER_NOTHING ||
+                  arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+            switch (arg_cache->type_tag) {
+                case GI_TYPE_TAG_GLIST:
+                    g_list_free ( (GList *)list_);
+                    break;
+                case GI_TYPE_TAG_GSLIST:
+                    g_slist_free (list_);
+                    break;
+                default:
+                    g_assert_not_reached();
+            }
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+            arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+        GSList *list_ = (GSList *)data;
+
+        if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->to_py_cleanup;
+            GSList *node = list_;
+
+            while (node != NULL) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              node->data,
+                              was_processed);
+                node = node->next;
+            }
+        }
+
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+            switch (arg_cache->type_tag) {
+                case GI_TYPE_TAG_GLIST:
+                    g_list_free ( (GList *)list_);
+                    break;
+                case GI_TYPE_TAG_GSLIST:
+                    g_slist_free (list_);
+                    break;
+                default:
+                    g_assert_not_reached();
+            }
+        }
+    }
+}
+
+void
+_pygi_marshal_cleanup_from_py_ghash  (PyGIInvokeState *state,
+                                      PyGIArgCache    *arg_cache,
+                                      gpointer         data,
+                                      gboolean         was_processed)
+{
+    if (data == NULL)
+        return;
+
+    if (was_processed) {
+        GHashTable *hash_;
+        PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+        hash_ = (GHashTable *)data;
+
+        /* clean up keys and values first */
+        if (hash_cache->key_cache->from_py_cleanup != NULL ||
+                hash_cache->value_cache->from_py_cleanup != NULL) {
+            GHashTableIter hiter;
+            gpointer key;
+            gpointer value;
+
+            PyGIMarshalCleanupFunc key_cleanup_func =
+                hash_cache->key_cache->from_py_cleanup;
+            PyGIMarshalCleanupFunc value_cleanup_func =
+                hash_cache->value_cache->from_py_cleanup;
+
+            g_hash_table_iter_init (&hiter, hash_);
+            while (g_hash_table_iter_next (&hiter, &key, &value)) {
+                if (key != NULL && key_cleanup_func != NULL)
+                    key_cleanup_func (state,
+                                      hash_cache->key_cache,
+                                      key,
+                                      TRUE);
+                if (value != NULL && value_cleanup_func != NULL)
+                    value_cleanup_func (state,
+                                        hash_cache->value_cache,
+                                        value,
+                                        TRUE);
+            }
+        }
+
+        if (state->failed ||
+               arg_cache->transfer == GI_TRANSFER_NOTHING ||
+                  arg_cache->transfer == GI_TRANSFER_CONTAINER)
+            g_hash_table_destroy (hash_);
+
+    }
+}
+
+void
+_pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
+                                   PyGIArgCache    *arg_cache,
+                                   gpointer         data,
+                                   gboolean         was_processed)
+{
+    if (data == NULL)
+        return;
+
+    /* assume hashtable has boxed key and value */
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_hash_table_destroy ( (GHashTable *)data);
+}
index 18ba007..92027be 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_MARSHAL_CLEANUP_H__
 #define __PYGI_MARSHAL_CLEANUP_H__
 
-#include "pygi-struct.h"
-#include "pygi-invoke-state-struct.h"
-#include "pygi-cache.h"
+#include "pygi-private.h"
 
 G_BEGIN_DECLS
 
@@ -39,6 +39,59 @@ void pygi_marshal_cleanup_args_return_fail           (PyGIInvokeState   *state,
 void pygi_marshal_cleanup_args_to_py_parameter_fail  (PyGIInvokeState   *state,
                                                       PyGICallableCache *cache,
                                                       gssize failed_to_py_arg_index);
+
+void _pygi_marshal_cleanup_from_py_utf8                      (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_utf8                        (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_struct_gvalue   (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_struct_foreign  (PyGIInvokeState *state,
+                                                              PyGIArgCache    *arg_cache,
+                                                              gpointer         data,
+                                                              gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_object       (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_interface_object         (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_array                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_array                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_glist                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_glist                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_ghash                  (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
+void _pygi_marshal_cleanup_to_py_ghash                    (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
 G_END_DECLS
 
 #endif /* __PYGI_MARSHAL_CLEANUP_H__ */
diff --git a/gi/pygi-marshal-from-py.c b/gi/pygi-marshal-from-py.c
new file mode 100644 (file)
index 0000000..adb7152
--- /dev/null
@@ -0,0 +1,1578 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>,  Red Hat, Inc.
+ *
+ *   pygi-marshal-from-py.c: Functions to convert PyObjects to C types.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+#include <string.h>
+#include <time.h>
+#include <pygobject.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-cache.h"
+#include "pygi-marshal-cleanup.h"
+#include "pygi-marshal-from-py.h"
+
+/*
+ * _is_union_member - check to see if the py_arg is actually a member of the
+ * expected C union
+ */
+static gboolean
+_is_union_member (PyGIInterfaceCache *iface_cache, PyObject *py_arg) {
+    gint i;
+    gint n_fields;
+    GIUnionInfo *union_info;
+    GIInfoType info_type;
+    gboolean is_member = FALSE;
+
+    info_type = g_base_info_get_type (iface_cache->interface_info);
+
+    if (info_type != GI_INFO_TYPE_UNION)
+        return FALSE;
+
+    union_info = (GIUnionInfo *) iface_cache->interface_info;
+    n_fields = g_union_info_get_n_fields (union_info);
+
+    for (i = 0; i < n_fields; i++) {
+        GIFieldInfo *field_info;
+        GITypeInfo *field_type_info;
+
+        field_info = g_union_info_get_field (union_info, i);
+        field_type_info = g_field_info_get_type (field_info);
+
+        /* we can only check if the members are interfaces */
+        if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_INTERFACE) {
+            GIInterfaceInfo *field_iface_info;
+            PyObject *py_type;
+
+            field_iface_info = g_type_info_get_interface (field_type_info);
+            py_type = _pygi_type_import_by_gi_info ((GIBaseInfo *) field_iface_info);
+
+            if (py_type != NULL && PyObject_IsInstance (py_arg, py_type)) {
+                is_member = TRUE;
+            }
+
+            Py_XDECREF (py_type);
+            g_base_info_unref ( ( GIBaseInfo *) field_iface_info);
+        }
+
+        g_base_info_unref ( ( GIBaseInfo *) field_type_info);
+        g_base_info_unref ( ( GIBaseInfo *) field_info);
+
+        if (is_member)
+            break;
+    }
+
+    return is_member;
+}
+
+gboolean
+_pygi_marshal_from_py_void (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    g_warn_if_fail (arg_cache->transfer == GI_TRANSFER_NOTHING);
+
+    arg->v_pointer = py_arg;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_boolean (PyGIInvokeState   *state,
+                               PyGICallableCache *callable_cache,
+                               PyGIArgCache      *arg_cache,
+                               PyObject          *py_arg,
+                               GIArgument        *arg)
+{
+    arg->v_boolean = PyObject_IsTrue (py_arg);
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int8 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -128, 127);
+        return FALSE;
+    }
+
+    if (long_ < -128 || long_ > 127) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -128, 127);
+        return FALSE;
+    }
+
+    arg->v_int8 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint8 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    unsigned long long_;
+
+    if (PYGLIB_PyBytes_Check (py_arg)) {
+
+        if (PYGLIB_PyBytes_Size (py_arg) != 1) {
+            PyErr_Format (PyExc_TypeError, "Must be a single character");
+            return FALSE;
+        }
+
+        long_ = (unsigned char)(PYGLIB_PyBytes_AsString (py_arg)[0]);
+
+    } else if (PyNumber_Check (py_arg)) {
+        PyObject *py_long;
+        py_long = PYGLIB_PyNumber_Long (py_arg);
+        if (!py_long)
+            return FALSE;
+
+        long_ = PYGLIB_PyLong_AsLong (py_long);
+        Py_DECREF (py_long);
+
+        if (PyErr_Occurred ()) {
+            PyErr_Clear();
+
+            PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, 0, 255);
+            return FALSE;
+        }
+    } else {
+        PyErr_Format (PyExc_TypeError, "Must be number or single byte string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > 255) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, 0, 255);
+        return FALSE;
+    }
+
+    arg->v_uint8 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int16 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -32768, 32767);
+        return FALSE;
+    }
+
+    if (long_ < -32768 || long_ > 32767) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, -32768, 32767);
+        return FALSE;
+    }
+
+    arg->v_int16 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint16 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%li not in range %d to %d", long_, 0, 65535);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > 65535) {
+        PyErr_Format (PyExc_ValueError, "%li not in range %d to %d", long_, 0, 65535);
+        return FALSE;
+    }
+
+    arg->v_uint16 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int32 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+    long_ = PYGLIB_PyLong_AsLong (py_long);
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear();
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, G_MININT32, G_MAXINT32);
+        return FALSE;
+    }
+
+    if (long_ < G_MININT32 || long_ > G_MAXINT32) {
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, G_MININT32, G_MAXINT32);
+        return FALSE;
+    }
+
+    arg->v_int32 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint32 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long))
+        long_ = PyInt_AsLong (py_long);
+    else
+#endif
+        long_ = PyLong_AsLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%lli not in range %i to %u", long_, 0, G_MAXUINT32);
+        return FALSE;
+    }
+
+    if (long_ < 0 || long_ > G_MAXUINT32) {
+        PyErr_Format (PyExc_ValueError, "%lli not in range %i to %u", long_, 0, G_MAXUINT32);
+        return FALSE;
+    }
+
+    arg->v_uint32 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_int64 (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_long;
+    long long long_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long))
+        long_ = PyInt_AS_LONG (py_long);
+    else
+#endif
+        long_ = PyLong_AsLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        /* OverflowError occured but range errors should be returned as ValueError */
+        char *long_str;
+        PyObject *py_str;
+
+        PyErr_Clear ();
+
+        py_str = PyObject_Str (py_long);
+
+        if (PyUnicode_Check (py_str)) {
+            PyObject *py_bytes = PyUnicode_AsUTF8String (py_str);
+            if (py_bytes == NULL)
+                return FALSE;
+
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_bytes));
+            if (long_str == NULL) {
+                PyErr_NoMemory ();
+                return FALSE;
+            }
+
+            Py_DECREF (py_bytes);
+        } else {
+            long_str = g_strdup (PYGLIB_PyBytes_AsString(py_str));
+        }
+
+        Py_DECREF (py_str);
+        PyErr_Format (PyExc_ValueError, "%s not in range %ld to %ld",
+                      long_str, G_MININT64, G_MAXINT64);
+
+        g_free (long_str);
+        return FALSE;
+    }
+
+    if (long_ < G_MININT64 || long_ > G_MAXINT64) {
+        PyErr_Format (PyExc_ValueError, "%lld not in range %ld to %ld", long_, G_MININT64, G_MAXINT64);
+        return FALSE;
+    }
+
+    arg->v_int64 = long_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_uint64 (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_long;
+    guint64 ulong_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_long = PYGLIB_PyNumber_Long (py_arg);
+    if (!py_long)
+        return FALSE;
+
+#if PY_VERSION_HEX < 0x03000000
+    if (PyInt_Check (py_long)) {
+        long long_ = PyInt_AsLong (py_long);
+        if (long_ < 0) {
+            PyErr_Format (PyExc_ValueError, "%ld not in range %d to %lu",
+                          long_, 0, G_MAXUINT64);
+            return FALSE;
+        }
+        ulong_ = long_;
+    } else
+#endif
+        ulong_ = PyLong_AsUnsignedLongLong (py_long);
+
+    Py_DECREF (py_long);
+
+    if (PyErr_Occurred ()) {
+        /* OverflowError occured but range errors should be returned as ValueError */
+        char *long_str;
+        PyObject *py_str;
+
+        PyErr_Clear ();
+
+        py_str = PyObject_Str (py_long);
+
+        if (PyUnicode_Check (py_str)) {
+            PyObject *py_bytes = PyUnicode_AsUTF8String (py_str);
+            if (py_bytes == NULL)
+                return FALSE;
+
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_bytes));
+            if (long_str == NULL) {
+                PyErr_NoMemory ();
+                return FALSE;
+            }
+
+            Py_DECREF (py_bytes);
+        } else {
+            long_str = g_strdup (PYGLIB_PyBytes_AsString (py_str));
+        }
+
+        Py_DECREF (py_str);
+
+        PyErr_Format (PyExc_ValueError, "%s not in range %d to %lu",
+                      long_str, 0, G_MAXUINT64);
+
+        g_free (long_str);
+        return FALSE;
+    }
+
+    if (ulong_ > G_MAXUINT64) {
+        PyErr_Format (PyExc_ValueError, "%lu not in range %d to %lu", ulong_, 0, G_MAXUINT64);
+        return FALSE;
+    }
+
+    arg->v_uint64 = ulong_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_float (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyObject *py_float;
+    double double_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_float = PyNumber_Float (py_arg);
+    if (!py_float)
+        return FALSE;
+
+    double_ = PyFloat_AsDouble (py_float);
+    Py_DECREF (py_float);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXFLOAT, G_MAXFLOAT);
+        return FALSE;
+    }
+
+    if (double_ < -G_MAXFLOAT || double_ > G_MAXFLOAT) {
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXFLOAT, G_MAXFLOAT);
+        return FALSE;
+    }
+
+    arg->v_float = double_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_double (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyObject *py_float;
+    double double_;
+
+    if (!PyNumber_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    py_float = PyNumber_Float (py_arg);
+    if (!py_float)
+        return FALSE;
+
+    double_ = PyFloat_AsDouble (py_float);
+    Py_DECREF (py_float);
+
+    if (PyErr_Occurred ()) {
+        PyErr_Clear ();
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXDOUBLE, G_MAXDOUBLE);
+        return FALSE;
+    }
+
+    if (double_ < -G_MAXDOUBLE || double_ > G_MAXDOUBLE) {
+        PyErr_Format (PyExc_ValueError, "%f not in range %f to %f", double_, -G_MAXDOUBLE, G_MAXDOUBLE);
+        return FALSE;
+    }
+
+    arg->v_double = double_;
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_unichar (PyGIInvokeState   *state,
+                               PyGICallableCache *callable_cache,
+                               PyGIArgCache      *arg_cache,
+                               PyObject          *py_arg,
+                               GIArgument        *arg)
+{
+    Py_ssize_t size;
+    gchar *string_;
+
+    if (PyUnicode_Check (py_arg)) {
+       PyObject *py_bytes;
+
+       size = PyUnicode_GET_SIZE (py_arg);
+       py_bytes = PyUnicode_AsUTF8String (py_arg);
+       string_ = strdup(PYGLIB_PyBytes_AsString (py_bytes));
+       Py_DECREF (py_bytes);
+
+#if PY_VERSION_HEX < 0x03000000
+    } else if (PyString_Check (py_arg)) {
+       PyObject *pyuni = PyUnicode_FromEncodedObject (py_arg, "UTF-8", "strict");
+       if (!pyuni)
+           return FALSE;
+
+       size = PyUnicode_GET_SIZE (pyuni);
+       string_ = g_strdup (PyString_AsString(py_arg));
+       Py_DECREF (pyuni);
+#endif
+    } else {
+       PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                     py_arg->ob_type->tp_name);
+       return FALSE;
+    }
+
+    if (size != 1) {
+       PyErr_Format (PyExc_TypeError, "Must be a one character string, not %ld characters",
+                     size);
+       g_free (string_);
+       return FALSE;
+    }
+
+    arg->v_uint32 = g_utf8_get_char (string_);
+    g_free (string_);
+
+    return TRUE;
+}
+gboolean
+_pygi_marshal_from_py_gtype (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    long type_ = pyg_type_from_object (py_arg);
+
+    if (type_ == 0) {
+        PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_long = type_;
+    return TRUE;
+}
+gboolean
+_pygi_marshal_from_py_utf8 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            PyObject          *py_arg,
+                            GIArgument        *arg)
+{
+    gchar *string_;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (PyUnicode_Check (py_arg)) {
+        PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+        if (!pystr_obj)
+            return FALSE;
+
+        string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+        Py_DECREF (pystr_obj);
+    }
+#if PY_VERSION_HEX < 0x03000000
+    else if (PyString_Check (py_arg)) {
+        string_ = g_strdup (PyString_AsString (py_arg));
+    }
+#endif
+    else {
+        PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_string = string_;
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_filename (PyGIInvokeState   *state,
+                                PyGICallableCache *callable_cache,
+                                PyGIArgCache      *arg_cache,
+                                PyObject          *py_arg,
+                                GIArgument        *arg)
+{
+    gchar *string_;
+    GError *error = NULL;
+
+    if (PyUnicode_Check (py_arg)) {
+        PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+        if (!pystr_obj)
+            return FALSE;
+
+        string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+        Py_DECREF (pystr_obj);
+    }
+#if PY_VERSION_HEX < 0x03000000
+    else if (PyString_Check (py_arg)) {
+        string_ = g_strdup (PyString_AsString (py_arg));
+    }
+#endif
+    else {
+        PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_string = g_filename_from_utf8 (string_, -1, NULL, NULL, &error);
+    g_free (string_);
+
+    if (arg->v_string == NULL) {
+        PyErr_SetString (PyExc_Exception, error->message);
+        g_error_free (error);
+        /* TODO: Convert the error to an exception. */
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_array (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    gssize item_size;
+    gboolean is_ptr_array;
+    GArray *array_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    item_size = sequence_cache->item_size;
+    is_ptr_array = (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY);
+    if (is_ptr_array) {
+        array_ = (GArray *)g_ptr_array_new ();
+    } else {
+        array_ = g_array_sized_new (sequence_cache->is_zero_terminated,
+                                    FALSE,
+                                    item_size,
+                                    length);
+    }
+
+    if (array_ == NULL) {
+        PyErr_NoMemory ();
+        return FALSE;
+    }
+
+    if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8 &&
+        PYGLIB_PyBytes_Check (py_arg)) {
+        memcpy(array_->data, PYGLIB_PyBytes_AsString (py_arg), length);
+        if (sequence_cache->is_zero_terminated) {
+            /* If array_ has been created with zero_termination, space for the
+             * terminator is properly allocated, so we're not off-by-one here. */
+            array_->data[length] = '\0';
+        }
+        goto array_success;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                                  callable_cache,
+                                  sequence_cache->item_cache,
+                                  py_item,
+                                 &item))
+            goto err;
+
+        /* FIXME: it is much more efficent to have seperate marshaller
+         *        for ptr arrays than doing the evaluation
+         *        and casting each loop iteration
+         */
+        if (is_ptr_array) {
+            g_ptr_array_add((GPtrArray *)array_, item.v_pointer);
+        } else if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+            PyGIInterfaceCache *item_iface_cache = (PyGIInterfaceCache *) sequence_cache->item_cache;
+            GIBaseInfo *base_info = (GIBaseInfo *) item_iface_cache->interface_info;
+            GIInfoType info_type = g_base_info_get_type (base_info);
+
+            switch (info_type) {
+                case GI_INFO_TYPE_UNION:
+                case GI_INFO_TYPE_STRUCT:
+                {
+                    PyGIArgCache *item_arg_cache = (PyGIArgCache *)item_iface_cache;
+                    PyGIMarshalCleanupFunc from_py_cleanup = item_arg_cache->from_py_cleanup;
+                    gboolean is_boxed = g_type_is_a (item_iface_cache->g_type, G_TYPE_BOXED);
+                    gboolean is_gvalue = item_iface_cache->g_type == G_TYPE_VALUE;
+                    gboolean is_gvariant = item_iface_cache->g_type == G_TYPE_VARIANT;
+                    
+                    if (is_gvariant) {
+                        /* Item size will always be that of a pointer,
+                         * since GVariants are opaque hence always passed by ref */
+                        g_assert (item_size == sizeof (item.v_pointer));
+                        g_array_insert_val (array_, i, item.v_pointer);
+                    } else if (is_gvalue) {
+                        GValue* dest = (GValue*) (array_->data + (i * item_size));
+                        memset (dest, 0, item_size);
+                        if (item.v_pointer != NULL) {
+                            g_value_init (dest, G_VALUE_TYPE ((GValue*) item.v_pointer));
+                            g_value_copy ((GValue*) item.v_pointer, dest);
+                        }
+
+                        if (from_py_cleanup) {
+                            from_py_cleanup (state, item_arg_cache, item.v_pointer, TRUE);
+                            /* we freed the original copy already, the new one is a 
+                             * struct in an array. _pygi_marshal_cleanup_from_py_array()
+                             * must not free it again */
+                            item_arg_cache->from_py_cleanup = NULL;
+                        }
+                    } else if (!is_boxed) {
+                        /* HACK: Gdk.Atom is merely an integer wrapped in a pointer,
+                         * so we must not dereference it; just copy the pointer
+                         * value, and don't attempt to free it. TODO: find out
+                         * if there are other data types with similar behaviour
+                         * and generalize. */
+                        if (g_strcmp0 (item_iface_cache->type_name, "Gdk.Atom") == 0) {
+                            g_assert (item_size == sizeof (item.v_pointer));
+                            memcpy (array_->data + (i * item_size), &item.v_pointer, item_size);
+                        } else {
+                            memcpy (array_->data + (i * item_size), item.v_pointer, item_size);
+
+                            if (from_py_cleanup)
+                                from_py_cleanup (state, item_arg_cache, item.v_pointer, TRUE);
+                        }
+                    } else {
+                        g_array_insert_val (array_, i, item);
+                    }
+                    break;
+                }
+                default:
+                    g_array_insert_val (array_, i, item);
+            }
+        } else {
+            g_array_insert_val (array_, i, item);
+        }
+        continue;
+err:
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            gsize j;
+            PyGIMarshalCleanupFunc cleanup_func =
+                sequence_cache->item_cache->from_py_cleanup;
+
+            for(j = 0; j < i; j++) {
+                cleanup_func (state,
+                              sequence_cache->item_cache,
+                              g_array_index (array_, gpointer, j),
+                              TRUE);
+            }
+        }
+
+        if (is_ptr_array)
+            g_ptr_array_free ( ( GPtrArray *)array_, TRUE);
+        else
+            g_array_free (array_, TRUE);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+array_success:
+    if (sequence_cache->len_arg_index >= 0) {
+        /* we have an child arg to handle */
+        PyGIArgCache *child_cache =
+            callable_cache->args_cache[sequence_cache->len_arg_index];
+
+        if (child_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+            gint *len_arg = (gint *)state->in_args[child_cache->c_arg_index].v_pointer;
+            /* if we are not setup yet just set the in arg */
+            if (len_arg == NULL)
+                state->in_args[child_cache->c_arg_index].v_long = length;
+            else
+                *len_arg = length;
+        } else {
+            state->in_args[child_cache->c_arg_index].v_long = length;
+        }
+    }
+
+    if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
+        arg->v_pointer = array_->data;
+        g_array_free (array_, FALSE);
+    } else {
+        arg->v_pointer = array_;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_glist (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    GList *list_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                                  callable_cache,
+                                  sequence_cache->item_cache,
+                                  py_item,
+                                 &item))
+            goto err;
+
+        list_ = g_list_prepend (list_, item.v_pointer);
+        continue;
+err:
+        /* FIXME: clean up list
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+        }
+        */
+        g_list_free (list_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = g_list_reverse (list_);
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_gslist (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc from_py_marshaller;
+    int i;
+    Py_ssize_t length;
+    GSList *list_ = NULL;
+    PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PySequence_Check (py_arg)) {
+        PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PySequence_Length (py_arg);
+    if (length < 0)
+        return FALSE;
+
+    if (sequence_cache->fixed_size >= 0 &&
+        sequence_cache->fixed_size != length) {
+        PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+                      sequence_cache->fixed_size, length);
+
+        return FALSE;
+    }
+
+    from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+    for (i = 0; i < length; i++) {
+        GIArgument item;
+        PyObject *py_item = PySequence_GetItem (py_arg, i);
+        if (py_item == NULL)
+            goto err;
+
+        if (!from_py_marshaller ( state,
+                             callable_cache,
+                             sequence_cache->item_cache,
+                             py_item,
+                            &item))
+            goto err;
+
+        list_ = g_slist_prepend (list_, item.v_pointer);
+        continue;
+err:
+        /* FIXME: Clean up list
+        if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+            PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+        }
+        */
+
+        g_slist_free (list_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = g_slist_reverse (list_);
+    return TRUE;
+}
+
+static gpointer
+_pygi_arg_to_hash_pointer (const GIArgument *arg,
+                           GITypeTag        type_tag)
+{
+    switch (type_tag) {
+        case GI_TYPE_TAG_INT32:
+            return GINT_TO_POINTER(arg->v_int32);
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_INTERFACE:
+            return arg->v_pointer;
+        default:
+            g_critical("Unsupported type %s", g_type_tag_to_string(type_tag));
+            return arg->v_pointer;
+    }
+}
+
+gboolean
+_pygi_marshal_from_py_ghash (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             PyObject          *py_arg,
+                             GIArgument        *arg)
+{
+    PyGIMarshalFromPyFunc key_from_py_marshaller;
+    PyGIMarshalFromPyFunc value_from_py_marshaller;
+
+    int i;
+    Py_ssize_t length;
+    PyObject *py_keys, *py_values;
+
+    GHashFunc hash_func;
+    GEqualFunc equal_func;
+
+    GHashTable *hash_ = NULL;
+    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    py_keys = PyMapping_Keys (py_arg);
+    if (py_keys == NULL) {
+        PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
+                      py_arg->ob_type->tp_name);
+        return FALSE;
+    }
+
+    length = PyMapping_Length (py_arg);
+    if (length < 0) {
+        Py_DECREF (py_keys);
+        return FALSE;
+    }
+
+    py_values = PyMapping_Values (py_arg);
+    if (py_values == NULL) {
+        Py_DECREF (py_keys);
+        return FALSE;
+    }
+
+    key_from_py_marshaller = hash_cache->key_cache->from_py_marshaller;
+    value_from_py_marshaller = hash_cache->value_cache->from_py_marshaller;
+
+    switch (hash_cache->key_cache->type_tag) {
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+            hash_func = g_str_hash;
+            equal_func = g_str_equal;
+            break;
+        default:
+            hash_func = NULL;
+            equal_func = NULL;
+    }
+
+    hash_ = g_hash_table_new (hash_func, equal_func);
+    if (hash_ == NULL) {
+        PyErr_NoMemory ();
+        Py_DECREF (py_keys);
+        Py_DECREF (py_values);
+        return FALSE;
+    }
+
+    for (i = 0; i < length; i++) {
+        GIArgument key, value;
+        PyObject *py_key = PyList_GET_ITEM (py_keys, i);
+        PyObject *py_value = PyList_GET_ITEM (py_values, i);
+        if (py_key == NULL || py_value == NULL)
+            goto err;
+
+        if (!key_from_py_marshaller ( state,
+                                      callable_cache,
+                                      hash_cache->key_cache,
+                                      py_key,
+                                     &key))
+            goto err;
+
+        if (!value_from_py_marshaller ( state,
+                                        callable_cache,
+                                        hash_cache->value_cache,
+                                        py_value,
+                                       &value))
+            goto err;
+
+        g_hash_table_insert (hash_,
+                             _pygi_arg_to_hash_pointer (&key, hash_cache->key_cache->type_tag),
+                             _pygi_arg_to_hash_pointer (&value, hash_cache->value_cache->type_tag));
+        continue;
+err:
+        /* FIXME: cleanup hash keys and values */
+        Py_XDECREF (py_key);
+        Py_XDECREF (py_value);
+        Py_DECREF (py_keys);
+        Py_DECREF (py_values);
+        g_hash_table_unref (hash_);
+        _PyGI_ERROR_PREFIX ("Item %i: ", i);
+        return FALSE;
+    }
+
+    arg->v_pointer = hash_;
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_gerror (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              PyObject          *py_arg,
+                              GIArgument        *arg)
+{
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for GErrors is not implemented");
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
+                                          PyGICallableCache *callable_cache,
+                                          PyGIArgCache      *arg_cache,
+                                          PyObject          *py_arg,
+                                          GIArgument        *arg)
+{
+    GICallableInfo *callable_info;
+    PyGICClosure *closure;
+    PyGIArgCache *user_data_cache = NULL;
+    PyGIArgCache *destroy_cache = NULL;
+    PyGICallbackCache *callback_cache;
+    PyObject *py_user_data = NULL;
+
+    callback_cache = (PyGICallbackCache *)arg_cache;
+
+    if (callback_cache->user_data_index > 0) {
+        user_data_cache = callable_cache->args_cache[callback_cache->user_data_index];
+        if (user_data_cache->py_arg_index < state->n_py_in_args) {
+            py_user_data = PyTuple_GetItem (state->py_in_args, user_data_cache->py_arg_index);
+            if (!py_user_data)
+                return FALSE;
+        } else {
+            py_user_data = Py_None;
+            Py_INCREF (Py_None);
+        }
+    }
+
+    if (py_arg == Py_None && !(py_user_data == Py_None || py_user_data == NULL)) {
+        Py_DECREF (py_user_data);
+        PyErr_Format (PyExc_TypeError,
+                      "When passing None for a callback userdata must also be None");
+
+        return FALSE;
+    }
+
+    if (py_arg == Py_None) {
+        Py_XDECREF (py_user_data);
+        return TRUE;
+    }
+
+    if (!PyCallable_Check (py_arg)) {
+        Py_XDECREF (py_user_data);
+        PyErr_Format (PyExc_TypeError,
+                      "Callback needs to be a function or method not %s",
+                      py_arg->ob_type->tp_name);
+
+        return FALSE;
+    }
+
+    if (callback_cache->destroy_notify_index > 0)
+        destroy_cache = callable_cache->args_cache[callback_cache->destroy_notify_index];
+
+    callable_info = (GICallableInfo *)callback_cache->interface_info;
+
+    closure = _pygi_make_native_closure (callable_info, callback_cache->scope, py_arg, py_user_data);
+    arg->v_pointer = closure->closure;
+    if (user_data_cache != NULL) {
+        state->in_args[user_data_cache->c_arg_index].v_pointer = closure;
+    }
+
+    if (destroy_cache) {
+        PyGICClosure *destroy_notify = _pygi_destroy_notify_create ();
+        state->in_args[destroy_cache->c_arg_index].v_pointer = destroy_notify->closure;
+    }
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_enum (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      PyObject          *py_arg,
+                                      GIArgument        *arg)
+{
+    PyObject *int_;
+    gint is_instance;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+    int_ = PYGLIB_PyNumber_Long (py_arg);
+    if (int_ == NULL) {
+        PyErr_Clear();
+        goto err;
+    }
+
+    arg->v_long = PYGLIB_PyLong_AsLong (int_);
+    Py_DECREF (int_);
+
+    /* If this is not an instance of the Enum type that we want
+     * we need to check if the value is equivilant to one of the
+     * Enum's memebers */
+    if (!is_instance) {
+        int i;
+        gboolean is_found = FALSE;
+
+        for (i = 0; i < g_enum_info_get_n_values (iface_cache->interface_info); i++) {
+            GIValueInfo *value_info =
+                g_enum_info_get_value (iface_cache->interface_info, i);
+            glong enum_value = g_value_info_get_value (value_info);
+            g_base_info_unref ( (GIBaseInfo *)value_info);
+            if (arg->v_long == enum_value) {
+                is_found = TRUE;
+                break;
+            }
+        }
+
+        if (!is_found)
+            goto err;
+    }
+
+    return TRUE;
+
+err:
+    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+                  iface_cache->type_name, py_arg->ob_type->tp_name);
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_flags (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyObject *int_;
+    gint is_instance;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+    int_ = PYGLIB_PyNumber_Long (py_arg);
+    if (int_ == NULL) {
+        PyErr_Clear ();
+        goto err;
+    }
+
+    arg->v_long = PYGLIB_PyLong_AsLong (int_);
+    Py_DECREF (int_);
+
+    /* only 0 or argument of type Flag is allowed */
+    if (!is_instance && arg->v_long != 0)
+        goto err;
+
+    return TRUE;
+
+err:
+    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+                  iface_cache->type_name, py_arg->ob_type->tp_name);
+    return FALSE;
+
+}
+
+gboolean
+_pygi_marshal_from_py_interface_struct (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        PyObject          *py_arg,
+                                        GIArgument        *arg)
+{
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    /* FIXME: handle this large if statement in the cache
+     *        and set the correct marshaller
+     */
+
+    if (iface_cache->g_type == G_TYPE_CLOSURE) {
+        GClosure *closure;
+        GType object_gtype = pyg_type_from_object_strict (py_arg, FALSE);
+
+        if ( !(PyCallable_Check(py_arg) || 
+               g_type_is_a (object_gtype, G_TYPE_CLOSURE))) {
+            PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
+                          py_arg->ob_type->tp_name);
+            return FALSE;
+        }
+
+        if (g_type_is_a (object_gtype, G_TYPE_CLOSURE))
+            closure = (GClosure *)pyg_boxed_get (py_arg, void);
+        else
+            closure = pyg_closure_new (py_arg, NULL, NULL);
+
+        if (closure == NULL) {
+            PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
+            return FALSE;
+        }
+
+        arg->v_pointer = closure;
+        return TRUE;
+    } else if (iface_cache->g_type == G_TYPE_VALUE) {
+        GValue *value;
+        GType object_type;
+
+        object_type = pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+        if (object_type == G_TYPE_INVALID) {
+            PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
+            return FALSE;
+        }
+
+        /* if already a gvalue, use that, else marshal into gvalue */
+        if (object_type == G_TYPE_VALUE) {
+            value = (GValue *)( (PyGObject *)py_arg)->obj;
+        } else {
+            value = g_slice_new0 (GValue);
+            g_value_init (value, object_type);
+            if (pyg_value_from_pyobject (value, py_arg) < 0) {
+                g_slice_free (GValue, value);
+                PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GValue failed");
+                return FALSE;
+            }
+        }
+
+        arg->v_pointer = value;
+        return TRUE;
+    } else if (iface_cache->is_foreign) {
+        PyObject *success;
+        success = pygi_struct_foreign_convert_to_g_argument (py_arg,
+                                                             iface_cache->interface_info,
+                                                             arg_cache->transfer,
+                                                             arg);
+
+        return (success == Py_None);
+    } else if (!PyObject_IsInstance (py_arg, iface_cache->py_type)) {
+        /* first check to see if this is a member of the expected union */
+        if (!_is_union_member (iface_cache, py_arg)) {
+            if (!PyErr_Occurred())
+                PyErr_Format (PyExc_TypeError, "Expected %s, but got %s",
+                              iface_cache->type_name,
+                              iface_cache->py_type->ob_type->tp_name);
+
+            return FALSE;
+        }
+    }
+
+    if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
+        arg->v_pointer = pyg_boxed_get (py_arg, void);
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+            arg->v_pointer = g_boxed_copy (iface_cache->g_type, arg->v_pointer);
+        }
+    } else if (g_type_is_a (iface_cache->g_type, G_TYPE_POINTER) ||
+                   g_type_is_a (iface_cache->g_type, G_TYPE_VARIANT) ||
+                       iface_cache->g_type  == G_TYPE_NONE) {
+        arg->v_pointer = pyg_pointer_get (py_arg, void);
+    } else {
+        PyErr_Format (PyExc_NotImplementedError,
+                      "structure type '%s' is not supported yet",
+                      g_type_name(iface_cache->g_type));
+        return FALSE;
+    }
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_boxed (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return FALSE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_object (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        PyObject          *py_arg,
+                                        GIArgument        *arg)
+{
+    if (py_arg == Py_None) {
+        arg->v_pointer = NULL;
+        return TRUE;
+    }
+
+    if (!PyObject_IsInstance (py_arg, ( (PyGIInterfaceCache *)arg_cache)->py_type)) {
+        PyErr_Format (PyExc_TypeError, "Expected %s, but got %s",
+                      ( (PyGIInterfaceCache *)arg_cache)->type_name,
+                      ( (PyGIInterfaceCache *)arg_cache)->py_type->ob_type->tp_name);
+        return FALSE;
+    }
+
+    arg->v_pointer = pygobject_get(py_arg);
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_ref (arg->v_pointer);
+
+    return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_interface_union (PyGIInvokeState   *state,
+                                       PyGICallableCache *callable_cache,
+                                       PyGIArgCache      *arg_cache,
+                                       PyObject          *py_arg,
+                                       GIArgument        *arg)
+{
+    PyErr_Format(PyExc_NotImplementedError,
+                 "Marshalling for this type is not implemented yet");
+    return FALSE;
+}
+
+gboolean _pygi_marshal_from_py_interface_instance (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg)
+{
+    GIInfoType info_type;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    info_type = g_base_info_get_type (iface_cache->interface_info);
+    switch (info_type) {
+        case GI_INFO_TYPE_UNION:
+        case GI_INFO_TYPE_STRUCT:
+        {
+            GType type = iface_cache->g_type;
+
+            if (!PyObject_IsInstance (py_arg, iface_cache->py_type)) {
+                /* wait, we might be a member of a union so manually check */
+                if (!_is_union_member (iface_cache, py_arg)) {
+                    if (!PyErr_Occurred())
+                        PyErr_Format (PyExc_TypeError,
+                                      "Expected a %s, but got %s",
+                                      iface_cache->type_name,
+                                      py_arg->ob_type->tp_name);
+
+                    return FALSE;
+                }
+            }
+
+            if (g_type_is_a (type, G_TYPE_BOXED)) {
+                arg->v_pointer = pyg_boxed_get (py_arg, void);
+            } else if (g_type_is_a (type, G_TYPE_POINTER) ||
+                           g_type_is_a (type, G_TYPE_VARIANT) ||
+                               type == G_TYPE_NONE) {
+                arg->v_pointer = pyg_pointer_get (py_arg, void);
+            } else {
+                 PyErr_Format (PyExc_TypeError, "unable to convert an instance of '%s'", g_type_name (type));
+                 return FALSE;
+            }
+
+            break;
+        }
+        case GI_INFO_TYPE_OBJECT:
+        case GI_INFO_TYPE_INTERFACE:
+            arg->v_pointer = pygobject_get (py_arg);
+            if (arg->v_pointer != NULL) {
+                GType obj_type = G_OBJECT_TYPE (( GObject *)arg->v_pointer);
+                GType expected_type = iface_cache->g_type;
+
+                if (!g_type_is_a (obj_type, expected_type)) {
+                    PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+                                  iface_cache->type_name,
+                                  py_arg->ob_type->tp_name);
+                    return FALSE;
+                }
+            }
+            break;
+        default:
+            /* Other types don't have methods. */
+            g_assert_not_reached ();
+   }
+
+   return TRUE;
+}
diff --git a/gi/pygi-marshal-from-py.h b/gi/pygi-marshal-from-py.h
new file mode 100644 (file)
index 0000000..34511db
--- /dev/null
@@ -0,0 +1,186 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_MARSHAL_from_py_PY_H__
+#define __PYGI_MARSHAL_from_py_PY_H__
+
+#include <Python.h>
+
+#include <girepository.h>
+
+#include "pygi-private.h"
+
+G_BEGIN_DECLS
+
+gboolean _pygi_marshal_from_py_void        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_boolean     (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int8        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint8       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int16       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint16      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int32       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint32      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_int64       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_uint64      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_float       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_double      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_unichar     (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gtype       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_utf8        (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_filename    (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_array       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_glist       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gslist      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_ghash       (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_gerror      (PyGIInvokeState   *state,
+                                            PyGICallableCache *callable_cache,
+                                            PyGIArgCache      *arg_cache,
+                                            PyObject          *py_arg,
+                                            GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_enum     (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_flags    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_struct   (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_interface(PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_boxed    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_object   (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_union    (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+gboolean _pygi_marshal_from_py_interface_instance (PyGIInvokeState   *state,
+                                                   PyGICallableCache *callable_cache,
+                                                   PyGIArgCache      *arg_cache,
+                                                   PyObject          *py_arg,
+                                                   GIArgument        *arg);
+
+G_END_DECLS
+
+#endif /* __PYGI_MARSHAL_from_py_PY__ */
diff --git a/gi/pygi-marshal-to-py.c b/gi/pygi-marshal-to-py.c
new file mode 100644 (file)
index 0000000..3af443d
--- /dev/null
@@ -0,0 +1,814 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>,  Red Hat, Inc.
+ *
+ *   pygi-marshal-from-py.c: functions for converting C types to PyObject
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#include "pygi-private.h"
+
+#include <string.h>
+#include <time.h>
+
+#include <pyglib.h>
+#include <pygobject.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-cache.h"
+#include "pygi-marshal-cleanup.h"
+#include "pygi-marshal-to-py.h"
+
+PyObject *
+_pygi_marshal_to_py_void (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    if (arg_cache->is_pointer)
+        py_obj = arg->v_pointer;
+    else
+        py_obj = Py_None;
+
+    Py_XINCREF (py_obj);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_boolean (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             GIArgument        *arg)
+{
+    PyObject *py_obj = PyBool_FromLong (arg->v_boolean);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int8 (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = PYGLIB_PyLong_FromLong (arg->v_int8);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint8 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_uint8);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int16 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_int16);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint16 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj =  PYGLIB_PyLong_FromLong (arg->v_uint16);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int32 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PYGLIB_PyLong_FromLong (arg->v_int32);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint32 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromLongLong (arg->v_uint32);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_int64 (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromLongLong (arg->v_int64);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_uint64 (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyLong_FromUnsignedLongLong (arg->v_uint64);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_float (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = PyFloat_FromDouble (arg->v_float);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_double (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    PyObject *py_obj = PyFloat_FromDouble (arg->v_double);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_unichar (PyGIInvokeState   *state,
+                             PyGICallableCache *callable_cache,
+                             PyGIArgCache      *arg_cache,
+                             GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    /* Preserve the bidirectional mapping between 0 and "" */
+    if (arg->v_uint32 == 0) {
+        py_obj = PYGLIB_PyUnicode_FromString ("");
+    } else if (g_unichar_validate (arg->v_uint32)) {
+        gchar utf8[6];
+        gint bytes;
+
+        bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
+        py_obj = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
+    } else {
+        /* TODO: Convert the error to an exception. */
+        PyErr_Format (PyExc_TypeError,
+                      "Invalid unicode codepoint %" G_GUINT32_FORMAT,
+                      arg->v_uint32);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gtype (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    py_obj = pyg_type_wrapper_new ( (GType)arg->v_long);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_utf8 (PyGIInvokeState   *state,
+                          PyGICallableCache *callable_cache,
+                          PyGIArgCache      *arg_cache,
+                          GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    if (arg->v_string == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+     }
+
+    py_obj = PYGLIB_PyUnicode_FromString (arg->v_string);
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_filename (PyGIInvokeState   *state,
+                              PyGICallableCache *callable_cache,
+                              PyGIArgCache      *arg_cache,
+                              GIArgument        *arg)
+{
+    gchar *string;
+    PyObject *py_obj = NULL;
+    GError *error = NULL;
+
+    if (arg->v_string == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    string = g_filename_to_utf8 (arg->v_string, -1, NULL, NULL, &error);
+    if (string == NULL) {
+        PyErr_SetString (PyExc_Exception, error->message);
+        /* TODO: Convert the error to an exception. */
+        return NULL;
+    }
+
+    py_obj = PYGLIB_PyUnicode_FromString (string);
+    g_free (string);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_array (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GArray *array_;
+    PyObject *py_obj = NULL;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+    gsize processed_items = 0;
+
+     /* GArrays make it easier to iterate over arrays
+      * with different element sizes but requires that
+      * we allocate a GArray if the argument was a C array
+      */
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
+        gsize len;
+        if (seq_cache->fixed_size >= 0) {
+            g_assert(arg->v_pointer != NULL);
+            len = seq_cache->fixed_size;
+        } else if (seq_cache->is_zero_terminated) {
+            if (arg->v_pointer == NULL) {
+                len = 0;
+            } else if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+                len = strlen (arg->v_pointer);
+            } else {
+                len = g_strv_length ((gchar **)arg->v_pointer);
+            }
+        } else {
+            GIArgument *len_arg = state->args[seq_cache->len_arg_index];
+            len = len_arg->v_long;
+        }
+
+        array_ = g_array_new (FALSE,
+                              FALSE,
+                              seq_cache->item_size);
+        if (array_ == NULL) {
+            PyErr_NoMemory ();
+
+            if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && arg->v_pointer != NULL)
+                g_free (arg->v_pointer);
+
+            return NULL;
+        }
+
+        if (array_->data != NULL) 
+            g_free (array_->data);
+        array_->data = arg->v_pointer;
+        array_->len = len;
+    } else {
+        array_ = arg->v_pointer;
+    }
+
+    if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+        if (arg->v_pointer == NULL) {
+            py_obj = PYGLIB_PyBytes_FromString ("");
+        } else {
+            py_obj = PYGLIB_PyBytes_FromStringAndSize (array_->data, array_->len);
+        }
+    } else {
+        if (arg->v_pointer == NULL) {
+            py_obj = PyList_New (0);
+        } else {
+            int i;
+
+            gsize item_size;
+            PyGIMarshalToPyFunc item_to_py_marshaller;
+            PyGIArgCache *item_arg_cache;
+
+            py_obj = PyList_New (array_->len);
+            if (py_obj == NULL)
+                goto err;
+
+
+            item_arg_cache = seq_cache->item_cache;
+            item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+            item_size = g_array_get_element_size (array_);
+
+            for (i = 0; i < array_->len; i++) {
+                GIArgument item_arg;
+                PyObject *py_item;
+
+                if (seq_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+                    item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
+                } else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+                    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
+                    gboolean is_gvariant = iface_cache->g_type == G_TYPE_VARIANT;
+
+                    // FIXME: This probably doesn't work with boxed types or gvalues. See fx. _pygi_marshal_from_py_array()
+                    switch (g_base_info_get_type (iface_cache->interface_info)) {
+                        case GI_INFO_TYPE_STRUCT:
+                            if (is_gvariant) {
+                              g_assert (item_size == sizeof (gpointer));
+                              if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+                                item_arg.v_pointer = g_variant_ref_sink (g_array_index (array_, gpointer, i));
+                              else
+                                item_arg.v_pointer = g_array_index (array_, gpointer, i);
+                            } else if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+                                gpointer *_struct = g_malloc (item_size);
+                                memcpy (_struct, array_->data + i * item_size,
+                                        item_size);
+                                item_arg.v_pointer = _struct;
+                            } else
+                                item_arg.v_pointer = array_->data + i * item_size;
+                            break;
+                        default:
+                            item_arg.v_pointer = g_array_index (array_, gpointer, i);
+                            break;
+                    }
+                } else {
+                    memcpy (&item_arg, array_->data + i * item_size, item_size);
+                }
+
+                py_item = item_to_py_marshaller ( state,
+                                                callable_cache,
+                                                item_arg_cache,
+                                                &item_arg);
+
+                if (py_item == NULL) {
+                    Py_CLEAR (py_obj);
+
+                    if (seq_cache->array_type == GI_ARRAY_TYPE_C)
+                        g_array_unref (array_);
+
+                    goto err;
+                }
+                PyList_SET_ITEM (py_obj, i, py_item);
+                processed_items++;
+            }
+        }
+    }
+
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C)
+        g_array_free (array_, FALSE);
+
+    return py_obj;
+
+err:
+    if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
+        g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else {
+        /* clean up unprocessed items */
+        if (seq_cache->item_cache->to_py_cleanup != NULL) {
+            int j;
+            PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
+            for (j = processed_items; j < array_->len; j++) {
+                cleanup_func (state,
+                              seq_cache->item_cache,
+                              g_array_index (array_, gpointer, j),
+                              FALSE);
+            }
+        }
+
+        if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+            g_array_free (array_, TRUE);
+    }
+
+    return NULL;
+}
+
+PyObject *
+_pygi_marshal_to_py_glist (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GList *list_;
+    gsize length;
+    gsize i;
+
+    PyGIMarshalToPyFunc item_to_py_marshaller;
+    PyGIArgCache *item_arg_cache;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+    PyObject *py_obj = NULL;
+
+    list_ = arg->v_pointer;
+    length = g_list_length (list_);
+
+    py_obj = PyList_New (length);
+    if (py_obj == NULL)
+        return NULL;
+
+    item_arg_cache = seq_cache->item_cache;
+    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+    for (i = 0; list_ != NULL; list_ = g_list_next (list_), i++) {
+        GIArgument item_arg;
+        PyObject *py_item;
+
+        item_arg.v_pointer = list_->data;
+        py_item = item_to_py_marshaller ( state,
+                                        callable_cache,
+                                        item_arg_cache,
+                                       &item_arg);
+
+        if (py_item == NULL) {
+            Py_CLEAR (py_obj);
+            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+            return NULL;
+        }
+
+        PyList_SET_ITEM (py_obj, i, py_item);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gslist (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    GSList *list_;
+    gsize length;
+    gsize i;
+
+    PyGIMarshalToPyFunc item_to_py_marshaller;
+    PyGIArgCache *item_arg_cache;
+    PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+    PyObject *py_obj = NULL;
+
+    list_ = arg->v_pointer;
+    length = g_slist_length (list_);
+
+    py_obj = PyList_New (length);
+    if (py_obj == NULL)
+        return NULL;
+
+    item_arg_cache = seq_cache->item_cache;
+    item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+    for (i = 0; list_ != NULL; list_ = g_slist_next (list_), i++) {
+        GIArgument item_arg;
+        PyObject *py_item;
+
+        item_arg.v_pointer = list_->data;
+        py_item = item_to_py_marshaller ( state,
+                                        callable_cache,
+                                        item_arg_cache,
+                                       &item_arg);
+
+        if (py_item == NULL) {
+            Py_CLEAR (py_obj);
+            _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+            return NULL;
+        }
+
+        PyList_SET_ITEM (py_obj, i, py_item);
+    }
+
+    return py_obj;
+}
+
+static void
+_pygi_hash_pointer_to_arg (GIArgument *arg,
+                           GITypeTag  type_tag)
+{
+    switch (type_tag) {
+        case GI_TYPE_TAG_INT32:
+            arg->v_int32 = GPOINTER_TO_INT(arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_INTERFACE:
+            break;
+        default:
+            g_critical("Unsupported type %s", g_type_tag_to_string(type_tag));
+    }
+}
+
+PyObject *
+_pygi_marshal_to_py_ghash (PyGIInvokeState   *state,
+                           PyGICallableCache *callable_cache,
+                           PyGIArgCache      *arg_cache,
+                           GIArgument        *arg)
+{
+    GHashTable *hash_;
+    GHashTableIter hash_table_iter;
+
+    PyGIMarshalToPyFunc key_to_py_marshaller;
+    PyGIMarshalToPyFunc value_to_py_marshaller;
+
+    PyGIArgCache *key_arg_cache;
+    PyGIArgCache *value_arg_cache;
+    PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+    GIArgument key_arg;
+    GIArgument value_arg;
+
+    PyObject *py_obj = NULL;
+
+    hash_ = arg->v_pointer;
+
+    if (hash_ == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    py_obj = PyDict_New ();
+    if (py_obj == NULL)
+        return NULL;
+
+    key_arg_cache = hash_cache->key_cache;
+    key_to_py_marshaller = key_arg_cache->to_py_marshaller;
+
+    value_arg_cache = hash_cache->value_cache;
+    value_to_py_marshaller = value_arg_cache->to_py_marshaller;
+
+    g_hash_table_iter_init (&hash_table_iter, hash_);
+    while (g_hash_table_iter_next (&hash_table_iter,
+                                   &key_arg.v_pointer,
+                                   &value_arg.v_pointer)) {
+        PyObject *py_key;
+        PyObject *py_value;
+        int retval;
+
+
+        _pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_tag);
+        py_key = key_to_py_marshaller ( state,
+                                      callable_cache,
+                                      key_arg_cache,
+                                     &key_arg);
+
+        if (py_key == NULL) {
+            Py_CLEAR (py_obj);
+            return NULL;
+        }
+
+        _pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_tag);
+        py_value = value_to_py_marshaller ( state,
+                                          callable_cache,
+                                          value_arg_cache,
+                                         &value_arg);
+
+        if (py_value == NULL) {
+            Py_CLEAR (py_obj);
+            Py_DECREF(py_key);
+            return NULL;
+        }
+
+        retval = PyDict_SetItem (py_obj, py_key, py_value);
+
+        Py_DECREF (py_key);
+        Py_DECREF (py_value);
+
+        if (retval < 0) {
+            Py_CLEAR (py_obj);
+            return NULL;
+        }
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_gerror (PyGIInvokeState   *state,
+                            PyGICallableCache *callable_cache,
+                            PyGIArgCache      *arg_cache,
+                            GIArgument        *arg)
+{
+    GError *error = arg->v_pointer;
+    PyObject *py_obj = NULL;
+
+    py_obj = pyglib_error_marshal(&error);
+
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && error != NULL) {
+        g_error_free (error);
+    }
+
+    if (py_obj != NULL) {
+        return py_obj;
+    } else {
+        Py_RETURN_NONE;
+    }
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_callback (PyGIInvokeState   *state,
+                                        PyGICallableCache *callable_cache,
+                                        PyGIArgCache      *arg_cache,
+                                        GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling a callback to PyObject is not supported");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_enum (PyGIInvokeState   *state,
+                                    PyGICallableCache *callable_cache,
+                                    PyGIArgCache      *arg_cache,
+                                    GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    if (iface_cache->g_type == G_TYPE_NONE) {
+        py_obj = PyObject_CallFunction (iface_cache->py_type, "l", arg->v_long);
+    } else {
+        py_obj = pyg_enum_from_gtype (iface_cache->g_type, arg->v_long);
+    }
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_flags (PyGIInvokeState   *state,
+                                     PyGICallableCache *callable_cache,
+                                     PyGIArgCache      *arg_cache,
+                                     GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+    if (iface_cache->g_type == G_TYPE_NONE) {
+        /* An enum with a GType of None is an enum without GType */
+
+        PyObject *py_type = _pygi_type_import_by_gi_info (iface_cache->interface_info);
+        PyObject *py_args = NULL;
+
+        if (!py_type)
+            return NULL;
+
+        py_args = PyTuple_New (1);
+        if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (arg->v_long)) != 0) {
+            Py_DECREF (py_args);
+            Py_DECREF (py_type);
+            return NULL;
+        }
+
+        py_obj = PyObject_CallFunction (py_type, "l", arg->v_long);
+
+        Py_DECREF (py_args);
+        Py_DECREF (py_type);
+    } else {
+        py_obj = pyg_flags_from_gtype (iface_cache->g_type, arg->v_long);
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_struct (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+    GType type = iface_cache->g_type;
+
+    if (arg->v_pointer == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    if (g_type_is_a (type, G_TYPE_VALUE)) {
+        py_obj = pyg_value_as_pyobject (arg->v_pointer, FALSE);
+    } else if (iface_cache->is_foreign) {
+        py_obj = pygi_struct_foreign_convert_from_g_argument (iface_cache->interface_info,
+                                                              arg->v_pointer);
+    } else if (g_type_is_a (type, G_TYPE_BOXED)) {
+        py_obj = _pygi_boxed_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                  arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else if (g_type_is_a (type, G_TYPE_POINTER)) {
+        if (iface_cache->py_type == NULL ||
+                !PyType_IsSubtype ( (PyTypeObject *)iface_cache->py_type, &PyGIStruct_Type)) {
+            g_warn_if_fail(arg_cache->transfer == GI_TRANSFER_NOTHING);
+            py_obj = pyg_pointer_new (type, arg->v_pointer);
+        } else {
+            py_obj = _pygi_struct_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                       arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+        }
+    } else if (g_type_is_a (type, G_TYPE_VARIANT)) {
+         g_variant_ref_sink (arg->v_pointer);
+         py_obj = _pygi_struct_new ( (PyTypeObject *)iface_cache->py_type, arg->v_pointer, 
+                                    FALSE);
+    } else if (type == G_TYPE_NONE && iface_cache->is_foreign) {
+        py_obj = pygi_struct_foreign_convert_from_g_argument (iface_cache->interface_info, arg->v_pointer);
+    } else if (type == G_TYPE_NONE) {
+        py_obj = _pygi_struct_new ( (PyTypeObject *) iface_cache->py_type, arg->v_pointer, 
+                                   arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+    } else {
+        PyErr_Format (PyExc_NotImplementedError,
+                      "structure type '%s' is not supported yet",
+                      g_type_name (type));
+    }
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_interface (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_boxed (PyGIInvokeState   *state,
+                                     PyGICallableCache *callable_cache,
+                                     PyGIArgCache      *arg_cache,
+                                     GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_object (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj;
+
+    if (arg->v_pointer == NULL) {
+        py_obj = Py_None;
+        Py_INCREF (py_obj);
+        return py_obj;
+    }
+
+    py_obj = pygobject_new (arg->v_pointer);
+
+    if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+        g_object_unref (arg->v_pointer);
+
+    return py_obj;
+}
+
+PyObject *
+_pygi_marshal_to_py_interface_union  (PyGIInvokeState   *state,
+                                      PyGICallableCache *callable_cache,
+                                      PyGIArgCache      *arg_cache,
+                                      GIArgument        *arg)
+{
+    PyObject *py_obj = NULL;
+
+    PyErr_Format (PyExc_NotImplementedError,
+                  "Marshalling for this type is not implemented yet");
+    return py_obj;
+}
diff --git a/gi/pygi-marshal-to-py.h b/gi/pygi-marshal-to-py.h
new file mode 100644 (file)
index 0000000..a07a13e
--- /dev/null
@@ -0,0 +1,144 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_MARSHAL_TO_PY_H__
+#define __PYGI_MARSHAL_TO_PY_H__
+
+PyObject *_pygi_marshal_to_py_void      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_boolean   (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int8      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint8     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int16     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint16    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int32     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint32    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_int64     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_uint64    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_float     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_double    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_unichar   (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gtype     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_utf8      (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_filename  (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_array     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_glist     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gslist    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_ghash     (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_gerror    (PyGIInvokeState   *state,
+                                         PyGICallableCache *callable_cache,
+                                         PyGIArgCache      *arg_cache,
+                                         GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_callback(PyGIInvokeState   *state,
+                                                 PyGICallableCache *callable_cache,
+                                                 PyGIArgCache      *arg_cache,
+                                                 GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_enum   (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_flags  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_struct (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_interface(PyGIInvokeState   *state,
+                                                  PyGICallableCache *callable_cache,
+                                                  PyGIArgCache      *arg_cache,
+                                                  GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_boxed  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_object (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+PyObject *_pygi_marshal_to_py_interface_union  (PyGIInvokeState   *state,
+                                                PyGICallableCache *callable_cache,
+                                                PyGIArgCache      *arg_cache,
+                                                GIArgument        *arg);
+
+G_END_DECLS
+
+#endif /* __PYGI_MARSHAL_TO_PY_H__ */
diff --git a/gi/pygi-object.c b/gi/pygi-object.c
deleted file mode 100644 (file)
index 8fd8ee0..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include <glib.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-object.h"
-#include "pygobject-object.h"
-#include "pygparamspec.h"
-
-/*
- * GObject from Python
- */
-
-typedef gboolean (*PyGIObjectMarshalFromPyFunc) (PyObject *py_arg,
-                                                 GIArgument *arg,
-                                                 GITransfer transfer);
-
-/* _pygi_marshal_from_py_gobject:
- * py_arg: (in):
- * arg: (out):
- */
-static gboolean
-_pygi_marshal_from_py_gobject (PyObject *py_arg, /*in*/
-                               GIArgument *arg,  /*out*/
-                               GITransfer transfer) {
-    GObject *gobj;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (!pygobject_check (py_arg, &PyGObject_Type)) {
-        PyObject *repr = PyObject_Repr (py_arg);
-        PyErr_Format(PyExc_TypeError, "expected GObject but got %s",
-                     PYGLIB_PyUnicode_AsString (repr));
-        Py_DECREF (repr);
-        return FALSE;
-    }
-
-    gobj = pygobject_get (py_arg);
-    if (gobj == NULL) {
-        PyErr_Format(PyExc_RuntimeError, "object at %p of type %s is not initialized",
-                     py_arg, Py_TYPE(py_arg)->tp_name);
-        return FALSE;
-    }
-
-    if (transfer == GI_TRANSFER_EVERYTHING) {
-        /* For transfer everything, add a new ref that the callee will take ownership of.
-         * Pythons existing ref to the GObject will be managed with the PyGObject wrapper.
-         */
-        g_object_ref (gobj);
-    }
-
-    arg->v_pointer = gobj;
-    return TRUE;
-}
-
-/* pygi_arg_gobject_out_arg_from_py:
- * py_arg: (in):
- * arg: (out):
- *
- * A specialization for marshaling Python GObjects used for out/return values
- * from a Python implemented vfuncs, signals, or an assignment to a GObject property.
- */
-gboolean
-pygi_arg_gobject_out_arg_from_py (PyObject *py_arg, /*in*/
-                                  GIArgument *arg,  /*out*/
-                                  GITransfer transfer) {
-    GObject *gobj;
-    if (!_pygi_marshal_from_py_gobject (py_arg, arg, transfer)) {
-        return FALSE;
-    }
-
-    /* HACK: At this point the basic marshaling of the GObject was successful
-     * but we add some special case hacks for vfunc returns due to buggy APIs:
-     * https://bugzilla.gnome.org/show_bug.cgi?id=693393
-     */
-    gobj = arg->v_pointer;
-    if (py_arg->ob_refcnt == 1 && gobj->ref_count == 1) {
-        /* If both object ref counts are only 1 at this point (the reference held
-         * in a return tuple), we assume the GObject will be free'd before reaching
-         * its target and become invalid. So instead of getting invalid object errors
-         * we add a new GObject ref.
-         */
-        g_object_ref (gobj);
-
-        if (((PyGObject *)py_arg)->private_flags.flags & PYGOBJECT_GOBJECT_WAS_FLOATING) {
-            /*
-             * We want to re-float instances that were floating and the Python
-             * wrapper assumed ownership. With the additional caveat that there
-             * are not any strong references beyond the return tuple.
-             */
-            g_object_force_floating (gobj);
-
-        } else {
-            PyObject *repr = PyObject_Repr (py_arg);
-            gchar *msg = g_strdup_printf ("Expecting to marshal a borrowed reference for %s, "
-                                          "but nothing in Python is holding a reference to this object. "
-                                          "See: https://bugzilla.gnome.org/show_bug.cgi?id=687522",
-                                          PYGLIB_PyUnicode_AsString(repr));
-            Py_DECREF (repr);
-            if (PyErr_WarnEx (PyExc_RuntimeWarning, msg, 2)) {
-                g_free (msg);
-                return FALSE;
-            }
-            g_free (msg);
-        }
-    }
-
-    return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_interface_object (PyGIInvokeState             *state,
-                                        PyGICallableCache           *callable_cache,
-                                        PyGIArgCache                *arg_cache,
-                                        PyObject                    *py_arg,
-                                        GIArgument                  *arg,
-                                        gpointer                    *cleanup_data,
-                                        PyGIObjectMarshalFromPyFunc  func)
-{
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    if (PyObject_IsInstance (py_arg, iface_cache->py_type) ||
-            (pygobject_check (py_arg, &PyGObject_Type) &&
-             g_type_is_a (G_OBJECT_TYPE (pygobject_get (py_arg)), iface_cache->g_type))) {
-
-        gboolean res;
-        res = func (py_arg, arg, arg_cache->transfer);
-        *cleanup_data = arg->v_pointer;
-        return res;
-
-    } else {
-        PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
-
-        PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
-                      arg_cache->arg_name ? arg_cache->arg_name : "self",
-                      ( (PyGIInterfaceCache *)arg_cache)->type_name,
-                      module ? PYGLIB_PyUnicode_AsString(module) : "",
-                      module ? "." : "",
-                      py_arg->ob_type->tp_name);
-        if (module)
-            Py_DECREF (module);
-        return FALSE;
-    }
-}
-
-static gboolean
-_pygi_marshal_from_py_called_from_c_interface_object (PyGIInvokeState   *state,
-                                                      PyGICallableCache *callable_cache,
-                                                      PyGIArgCache      *arg_cache,
-                                                      PyObject          *py_arg,
-                                                      GIArgument        *arg,
-                                                      gpointer          *cleanup_data)
-{
-    return _pygi_marshal_from_py_interface_object (state,
-                                                   callable_cache,
-                                                   arg_cache,
-                                                   py_arg,
-                                                   arg,
-                                                   cleanup_data,
-                                                   pygi_arg_gobject_out_arg_from_py);
-}
-
-static gboolean
-_pygi_marshal_from_py_called_from_py_interface_object (PyGIInvokeState   *state,
-                                                       PyGICallableCache *callable_cache,
-                                                       PyGIArgCache      *arg_cache,
-                                                       PyObject          *py_arg,
-                                                       GIArgument        *arg,
-                                                       gpointer          *cleanup_data)
-{
-    return _pygi_marshal_from_py_interface_object (state,
-                                                   callable_cache,
-                                                   arg_cache,
-                                                   py_arg,
-                                                   arg,
-                                                   cleanup_data,
-                                                   _pygi_marshal_from_py_gobject);
-}
-
-static void
-_pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
-                                                PyGIArgCache    *arg_cache,
-                                                PyObject        *py_arg,
-                                                gpointer         data,
-                                                gboolean         was_processed)
-{
-    /* If we processed the parameter but fail before invoking the method,
-       we need to remove the ref we added */
-    if (was_processed && state->failed && data != NULL &&
-            arg_cache->transfer == GI_TRANSFER_EVERYTHING)
-        g_object_unref (G_OBJECT(data));
-}
-
-
-/*
- * GObject to Python
- */
-
-PyObject *
-pygi_arg_gobject_to_py (GIArgument *arg, GITransfer transfer) {
-    PyObject *pyobj;
-
-    if (arg->v_pointer == NULL) {
-        pyobj = Py_None;
-        Py_INCREF (pyobj);
-
-    } else if (G_IS_PARAM_SPEC(arg->v_pointer)) {
-        pyobj = pyg_param_spec_new (arg->v_pointer);
-        if (transfer == GI_TRANSFER_EVERYTHING)
-            g_param_spec_unref (arg->v_pointer);
-
-    } else {
-         pyobj = pygobject_new_full (arg->v_pointer,
-                                     /*steal=*/ transfer == GI_TRANSFER_EVERYTHING,
-                                     /*type=*/  NULL);
-    }
-
-    return pyobj;
-}
-
-PyObject *
-pygi_arg_gobject_to_py_called_from_c (GIArgument *arg,
-                                      GITransfer  transfer)
-{
-    PyObject *object;
-
-    /* HACK:
-     * The following hack is to work around GTK+ sending signals which
-     * contain floating widgets in them. This assumes control of how
-     * references are added by the PyGObject wrapper and avoids the sink
-     * behavior by explicitly passing GI_TRANSFER_EVERYTHING as the transfer
-     * mode and then re-forcing the object as floating afterwards.
-     *
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=693400
-     */
-    if (arg->v_pointer != NULL &&
-            transfer == GI_TRANSFER_NOTHING &&
-            !G_IS_PARAM_SPEC (arg->v_pointer) &&
-            g_object_is_floating (arg->v_pointer)) {
-
-        g_object_ref (arg->v_pointer);
-        object = pygi_arg_gobject_to_py (arg, GI_TRANSFER_EVERYTHING);
-        g_object_force_floating (arg->v_pointer);
-    } else {
-        object = pygi_arg_gobject_to_py (arg, transfer);
-    }
-
-    return object;
-}
-
-static PyObject *
-_pygi_marshal_to_py_called_from_c_interface_object_cache_adapter (PyGIInvokeState   *state,
-                                                                  PyGICallableCache *callable_cache,
-                                                                  PyGIArgCache      *arg_cache,
-                                                                  GIArgument        *arg)
-{
-    return pygi_arg_gobject_to_py_called_from_c (arg, arg_cache->transfer);
-}
-
-static PyObject *
-_pygi_marshal_to_py_called_from_py_interface_object_cache_adapter (PyGIInvokeState   *state,
-                                                                   PyGICallableCache *callable_cache,
-                                                                   PyGIArgCache      *arg_cache,
-                                                                   GIArgument        *arg)
-{
-    return pygi_arg_gobject_to_py (arg, arg_cache->transfer);
-}
-
-static void
-_pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
-                                              PyGIArgCache    *arg_cache,
-                                              PyObject        *dummy,
-                                              gpointer         data,
-                                              gboolean         was_processed)
-{
-    /* If we error out and the object is not marshalled into a PyGObject
-       we must take care of removing the ref */
-    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
-        g_object_unref (G_OBJECT(data));
-}
-
-static gboolean
-pygi_arg_gobject_setup_from_info (PyGIArgCache      *arg_cache,
-                                  GITypeInfo        *type_info,
-                                  GIArgInfo         *arg_info,
-                                  GITransfer         transfer,
-                                  PyGIDirection      direction,
-                                  PyGICallableCache *callable_cache)
-{
-    /* NOTE: usage of pygi_arg_interface_new_from_info already calls
-     * pygi_arg_interface_setup so no need to do it here.
-     */
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        if (callable_cache->calling_context == PYGI_CALLING_CONTEXT_IS_FROM_C) {
-            arg_cache->from_py_marshaller = _pygi_marshal_from_py_called_from_c_interface_object;
-        } else {
-            arg_cache->from_py_marshaller = _pygi_marshal_from_py_called_from_py_interface_object;
-        }
-
-        arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_object;
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        if (callable_cache->calling_context == PYGI_CALLING_CONTEXT_IS_FROM_C) {
-            arg_cache->to_py_marshaller = _pygi_marshal_to_py_called_from_c_interface_object_cache_adapter;
-        } else {
-            arg_cache->to_py_marshaller = _pygi_marshal_to_py_called_from_py_interface_object_cache_adapter;
-        }
-
-        arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_object;
-    }
-
-    return TRUE;
-}
-
-PyGIArgCache *
-pygi_arg_gobject_new_from_info (GITypeInfo        *type_info,
-                                GIArgInfo         *arg_info,
-                                GITransfer         transfer,
-                                PyGIDirection      direction,
-                                GIInterfaceInfo   *iface_info,
-                                PyGICallableCache *callable_cache)
-{
-    gboolean res = FALSE;
-    PyGIArgCache *cache = NULL;
-
-    cache = pygi_arg_interface_new_from_info (type_info,
-                                              arg_info,
-                                              transfer,
-                                              direction,
-                                              iface_info);
-    if (cache == NULL)
-        return NULL;
-
-    res = pygi_arg_gobject_setup_from_info (cache,
-                                            type_info,
-                                            arg_info,
-                                            transfer,
-                                            direction,
-                                            callable_cache);
-    if (res) {
-        return cache;
-    } else {
-        pygi_arg_cache_free (cache);
-        return NULL;
-    }
-}
diff --git a/gi/pygi-object.h b/gi/pygi-object.h
deleted file mode 100644 (file)
index 360bce1..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_OBJECT_H__
-#define __PYGI_OBJECT_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-gboolean
-pygi_arg_gobject_out_arg_from_py     (PyObject          *py_arg,     /* in */
-                                      GIArgument        *arg,        /* out */
-                                      GITransfer         transfer);
-
-PyObject *
-pygi_arg_gobject_to_py               (GIArgument        *arg,
-                                      GITransfer         transfer);
-
-PyObject *
-pygi_arg_gobject_to_py_called_from_c (GIArgument        *arg,
-                                      GITransfer         transfer);
-
-
-PyGIArgCache *
-pygi_arg_gobject_new_from_info       (GITypeInfo        *type_info,
-                                      GIArgInfo         *arg_info,   /* may be null */
-                                      GITransfer         transfer,
-                                      PyGIDirection      direction,
-                                      GIInterfaceInfo   *iface_info,
-                                      PyGICallableCache *callable_cache);
-
-G_END_DECLS
-
-#endif /*__PYGI_OBJECT_H__*/
similarity index 60%
rename from gi/pygi-util.h
rename to gi/pygi-private.h
index c7bc1d5..29ec131 100644 (file)
@@ -1,15 +1,39 @@
-#ifndef __PYGI_UTIL_H__
-#define __PYGI_UTIL_H__
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ */
+#ifndef __PYGI_PRIVATE_H__
+#define __PYGI_PRIVATE_H__
+
+#ifdef __PYGI_H__
+#   error "Import pygi.h or pygi-private.h, but not both"
+#endif
+
+#ifdef HAVE_CONFIG_H
+#   include <config.h>
+#endif
 
 #include <Python.h>
-#include <glib.h>
-#include "pygobject-internal.h"
-#include <pyglib-python-compat.h>
 
-G_BEGIN_DECLS
+#include "pygi.h"
 
-PyObject * pyg_integer_richcompare(PyObject *v, PyObject *w, int op);
+#include "pygobject-external.h"
 
+#include "pygi-repository.h"
+#include "pygi-info.h"
+#include "pygi-struct.h"
+#include "pygi-boxed.h"
+#include "pygi-argument.h"
+#include "pygi-type.h"
+#include "pygi-foreign.h"
+#include "pygi-closure.h"
+#include "pygi-ccallback.h"
+#include "pygi-callbacks.h"
+#include "pygi-property.h"
+#include "pygi-signal-closure.h"
+#include "pygi-invoke.h"
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
 #if PY_VERSION_HEX >= 0x03000000
 
 #define _PyGI_ERROR_PREFIX(format, ...) G_STMT_START { \
@@ -27,7 +51,6 @@ PyObject * pyg_integer_richcompare(PyObject *v, PyObject *w, int op);
             } \
         } \
         PyErr_Restore(py_error_type, py_error_value, py_error_traceback); \
-        Py_DECREF(py_error_prefix); \
     } \
 } G_STMT_END
 
@@ -51,6 +74,13 @@ PyObject * pyg_integer_richcompare(PyObject *v, PyObject *w, int op);
 
 #endif
 
+/* Redefine g_array_index because we want it to return the i-th element, casted
+ * to the type t, of the array a, and not the i-th element of the array a
+ * casted to the type t. */
+#define _g_array_index(a,t,i) \
+    *(t *)((a)->data + g_array_get_element_size(a) * (i))
+
+
 G_END_DECLS
 
-#endif /* __PYGI_UTIL_H__ */
+#endif /* __PYGI_PRIVATE_H__ */
index 9978585..f400820 100644 (file)
  * IN THE SOFTWARE.
  */
 
-#include "pygi-property.h"
-#include "pygi-value.h"
-#include "pygi-argument.h"
-#include "pygparamspec.h"
-#include "pygtype.h"
+#include "pygi-private.h"
 
 #include <girepository.h>
 
-static GIPropertyInfo *
-lookup_property_from_object_info (GIObjectInfo *info, const gchar *attr_name)
+/* Copied from glib */
+static void
+canonicalize_key (gchar *key)
 {
-    gssize n_infos;
-    gssize i;
-
-    n_infos = g_object_info_get_n_properties (info);
-    for (i = 0; i < n_infos; i++) {
-        GIPropertyInfo *property_info;
+    gchar *p;
 
-        property_info = g_object_info_get_property (info, i);
-        g_assert (info != NULL);
-
-        if (strcmp (attr_name, g_base_info_get_name (property_info)) == 0) {
-            return property_info;
-        }
+    for (p = key; *p != 0; p++)
+    {
+        gchar c = *p;
 
-        g_base_info_unref (property_info);
+        if (c != '-' &&
+            (c < '0' || c > '9') &&
+            (c < 'A' || c > 'Z') &&
+            (c < 'a' || c > 'z'))
+                *p = '-';
     }
-
-    return NULL;
 }
 
 static GIPropertyInfo *
-lookup_property_from_interface_info (GIInterfaceInfo *info,
-                                     const gchar *attr_name)
+_pygi_lookup_property_from_g_type (GType g_type, const gchar *attr_name)
 {
+    GIRepository *repository;
+    GIBaseInfo *info;
     gssize n_infos;
     gssize i;
+    GType parent;
 
-    n_infos = g_interface_info_get_n_properties (info);
+    repository = g_irepository_get_default();
+    info = g_irepository_find_by_gtype (repository, g_type);
+    if (info == NULL) {
+        return NULL;
+    }
+
+    n_infos = g_object_info_get_n_properties ( (GIObjectInfo *) info);
     for (i = 0; i < n_infos; i++) {
         GIPropertyInfo *property_info;
 
-        property_info = g_interface_info_get_property (info, i);
+        property_info = g_object_info_get_property ( (GIObjectInfo *) info, i);
         g_assert (info != NULL);
 
         if (strcmp (attr_name, g_base_info_get_name (property_info)) == 0) {
+            g_base_info_unref (info);
             return property_info;
         }
 
         g_base_info_unref (property_info);
     }
 
-    return NULL;
-}
-
-static GIPropertyInfo *
-_pygi_lookup_property_from_g_type (GType g_type, const gchar *attr_name)
-{
-    GIPropertyInfo *ret = NULL;
-    GIRepository *repository;
-    GIBaseInfo *info;
-
-    repository = g_irepository_get_default();
-    info = g_irepository_find_by_gtype (repository, g_type);
-    if (info == NULL)
-       return NULL;
-
-    if (GI_IS_OBJECT_INFO (info))
-        ret = lookup_property_from_object_info ((GIObjectInfo *) info,
-                                                attr_name);
-    else if (GI_IS_INTERFACE_INFO (info))
-        ret = lookup_property_from_interface_info ((GIInterfaceInfo *) info,
-                                                   attr_name);
-
     g_base_info_unref (info);
-    return ret;
-}
 
-PyObject *
-pygi_call_do_get_property (PyObject *instance, GParamSpec *pspec)
-{
-    PyObject *py_pspec;
-    PyObject *retval;
-
-    py_pspec = pyg_param_spec_new (pspec);
-    retval = PyObject_CallMethod (instance, "do_get_property", "O", py_pspec);
-    if (retval == NULL) {
-        PyErr_Print();
-    }
+    parent = g_type_parent (g_type);
+    if (parent > 0)
+        return _pygi_lookup_property_from_g_type (parent, attr_name);
 
-    Py_DECREF (py_pspec);
-    if (retval) {
-        return retval;
-    }
-
-    Py_RETURN_NONE;
+    return NULL;
 }
 
 PyObject *
-pygi_get_property_value (PyGObject *instance, GParamSpec *pspec)
+pygi_get_property_value_real (PyGObject *instance,
+                              const gchar *attr_name)
 {
+    GType g_type;
     GIPropertyInfo *property_info = NULL;
+    char *property_name = g_strdup (attr_name);
+    GParamSpec *pspec = NULL;
     GValue value = { 0, };
+    GIArgument arg = { 0, };
     PyObject *py_value = NULL;
-    GType fundamental;
+    GITypeInfo *type_info = NULL;
+    GITransfer transfer;
 
-    if (!(pspec->flags & G_PARAM_READABLE)) {
-        PyErr_Format(PyExc_TypeError, "property %s is not readable",
-                     g_param_spec_get_name (pspec));
-        return NULL;
-    }
+    canonicalize_key (property_name);
 
-    /* Fast path which calls the Python getter implementation directly.
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=723872 */
-    if (pyg_gtype_is_custom (pspec->owner_type)) {
-        return pygi_call_do_get_property ((PyObject *)instance, pspec);
-    }
+    g_type = pyg_type_from_object ((PyObject *)instance);
+    property_info = _pygi_lookup_property_from_g_type (g_type, property_name);
+
+    if (property_info == NULL)
+        goto out;
+
+    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (instance->obj),
+                                          attr_name);
+    if (pspec == NULL)
+        goto out;
 
-    Py_BEGIN_ALLOW_THREADS;
     g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
-    g_object_get_property (instance->obj, pspec->name, &value);
-    fundamental = G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (&value));
-    Py_END_ALLOW_THREADS;
+    g_object_get_property (instance->obj, attr_name, &value);
 
+    type_info = g_property_info_get_type (property_info);
+    transfer = g_property_info_get_ownership_transfer (property_info);
 
-    /* Fast path basic types which don't need GI type info. */
-    py_value = pygi_value_to_py_basic_type (&value, fundamental);
-    if (py_value) {
-        goto out;
-    }
+    GITypeTag type_tag = g_type_info_get_tag (type_info);
+    switch (type_tag) {
+        case GI_TYPE_TAG_BOOLEAN:
+            arg.v_boolean = g_value_get_boolean (&value);
+            break;
+        case GI_TYPE_TAG_INT8:
+            arg.v_int8 = g_value_get_schar (&value);
+            break;
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_INT32:
+            if (G_VALUE_HOLDS_LONG (&value))
+                arg.v_long = g_value_get_long (&value);
+            else
+                arg.v_int = g_value_get_int (&value);
+            break;
+        case GI_TYPE_TAG_INT64:
+            if (G_VALUE_HOLDS_LONG (&value))
+                arg.v_long = g_value_get_long (&value);
+            else
+                arg.v_int64 = g_value_get_int64 (&value);
+            break;
+        case GI_TYPE_TAG_UINT8:
+            arg.v_uint8 = g_value_get_uchar (&value);
+            break;
+        case GI_TYPE_TAG_UINT16:
+        case GI_TYPE_TAG_UINT32:
+            if (G_VALUE_HOLDS_ULONG (&value))
+                arg.v_ulong = g_value_get_ulong (&value);
+            else
+                arg.v_uint = g_value_get_uint (&value);
+            break;
+        case GI_TYPE_TAG_UINT64:
+            if (G_VALUE_HOLDS_ULONG (&value))
+                arg.v_ulong = g_value_get_ulong (&value);
+            else
+                arg.v_uint64 = g_value_get_uint64 (&value);
+            break;
+        case GI_TYPE_TAG_FLOAT:
+            arg.v_float = g_value_get_float (&value);
+            break;
+        case GI_TYPE_TAG_DOUBLE:
+            arg.v_double = g_value_get_double (&value);
+            break;
+        case GI_TYPE_TAG_GTYPE:
+            arg.v_size = g_value_get_gtype (&value);
+            break;
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+            arg.v_string = g_value_dup_string (&value);
+            break;
+        case GI_TYPE_TAG_INTERFACE:
+        {
+            GIBaseInfo *info;
+            GIInfoType info_type;
+            GType type;
 
-    /* Attempt to marshal through GI.
-     * The owner_type of the pspec gives us the exact type that introduced the
-     * property, even if it is a parent class of the instance in question. */
-    property_info = _pygi_lookup_property_from_g_type (pspec->owner_type, pspec->name);
-    if (property_info) {
-        GITypeInfo *type_info = NULL;
-        gboolean free_array = FALSE;
-        GIArgument arg = { 0, };
-
-        type_info = g_property_info_get_type (property_info);
-        arg = _pygi_argument_from_g_value (&value, type_info);
-
-        /* Arrays are special cased, see note in _pygi_argument_to_array. */
-        if (g_type_info_get_tag (type_info) == GI_TYPE_TAG_ARRAY) {
-            arg.v_pointer = _pygi_argument_to_array (&arg, NULL, NULL, NULL,
-                                                     type_info, &free_array);
-        }
+            info = g_type_info_get_interface (type_info);
+            type = g_registered_type_info_get_g_type (info);
+            info_type = g_base_info_get_type (info);
 
-        py_value = _pygi_argument_to_object (&arg, type_info, GI_TRANSFER_NOTHING);
+            g_base_info_unref (info);
 
-        if (free_array) {
-            g_array_free (arg.v_pointer, FALSE);
-        }
+            switch (info_type) {
+                case GI_INFO_TYPE_ENUM:
+                    arg.v_int32 = g_value_get_enum (&value);
+                    break;
+                case GI_INFO_TYPE_INTERFACE:
+                case GI_INFO_TYPE_OBJECT:
+                    arg.v_pointer = g_value_get_object (&value);
+                    break;
+                case GI_INFO_TYPE_BOXED:
+                case GI_INFO_TYPE_STRUCT:
+                case GI_INFO_TYPE_UNION:
 
-        g_base_info_unref (type_info);
-        g_base_info_unref (property_info);
+                    if (g_type_is_a (type, G_TYPE_BOXED)) {
+                        arg.v_pointer = g_value_get_boxed (&value);
+                    } else if (g_type_is_a (type, G_TYPE_POINTER)) {
+                        arg.v_pointer = g_value_get_pointer (&value);
+                    } else {
+                        PyErr_Format (PyExc_NotImplementedError,
+                                      "Retrieving properties of type '%s' is not implemented",
+                                      g_type_name (type));
+                    }
+                    break;
+                default:
+                    PyErr_Format (PyExc_NotImplementedError,
+                                  "Retrieving properties of type '%s' is not implemented",
+                                  g_type_name (type));
+                    goto out;
+            }
+            break;
+        }
+        case GI_TYPE_TAG_GHASH:
+            arg.v_pointer = g_value_get_boxed (&value);
+            break;
+        case GI_TYPE_TAG_GLIST:
+            arg.v_pointer = g_value_get_pointer (&value);
+            break;
+        default:
+            PyErr_Format (PyExc_NotImplementedError,
+                          "Retrieving properties of type %s is not implemented",
+                          g_type_tag_to_string (g_type_info_get_tag (type_info)));
+            goto out;
     }
 
-    /* Fallback to GValue marshalling. */
-    if (py_value == NULL) {
-        py_value = pyg_param_gvalue_as_pyobject (&value, TRUE, pspec);
-    }
+    py_value = _pygi_argument_to_object (&arg, type_info, transfer);
 
 out:
-    g_value_unset (&value);
-    return py_value;
-}
-
-PyObject *
-pygi_get_property_value_by_name (PyGObject *self, gchar *param_name)
-{
-    GParamSpec *pspec;
-
-    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS(self->obj),
-                                          param_name);
-    if (!pspec) {
-        PyErr_Format (PyExc_TypeError,
-                      "object of type `%s' does not have property `%s'",
-                      g_type_name (G_OBJECT_TYPE (self->obj)), param_name);
-        return NULL;
-    }
+    g_free (property_name);
+    if (property_info != NULL)
+        g_base_info_unref (property_info);
+    if (type_info != NULL)
+        g_base_info_unref (type_info);
 
-    return pygi_get_property_value (self, pspec);
+    return py_value;
 }
 
 gint
-pygi_set_property_value (PyGObject *instance,
-                         GParamSpec *pspec,
-                         PyObject *py_value)
+pygi_set_property_value_real (PyGObject *instance,
+                              const gchar *attr_name,
+                              PyObject *py_value)
 {
+    GType g_type;
     GIPropertyInfo *property_info = NULL;
+    char *property_name = g_strdup (attr_name);
     GITypeInfo *type_info = NULL;
     GITypeTag type_tag;
     GITransfer transfer;
     GValue value = { 0, };
     GIArgument arg = { 0, };
+    GParamSpec *pspec = NULL;
     gint ret_value = -1;
 
-    /* The owner_type of the pspec gives us the exact type that introduced the
-     * property, even if it is a parent class of the instance in question. */
-    property_info = _pygi_lookup_property_from_g_type (pspec->owner_type,
-                                                       pspec->name);
+    canonicalize_key (property_name);
+
+    g_type = pyg_type_from_object ((PyObject *)instance);
+    property_info = _pygi_lookup_property_from_g_type (g_type, property_name);
+
     if (property_info == NULL)
         goto out;
 
+    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (instance->obj),
+                                          attr_name);
+    if (pspec == NULL)
+        goto out;
+
     if (! (pspec->flags & G_PARAM_WRITABLE))
         goto out;
 
@@ -234,12 +268,9 @@ pygi_set_property_value (PyGObject *instance,
     transfer = g_property_info_get_ownership_transfer (property_info);
     arg = _pygi_argument_from_object (py_value, type_info, transfer);
 
-    if (PyErr_Occurred())
-        goto out;
-
     g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
 
-    /* FIXME: Lots of types still unhandled */
+    // FIXME: Lots of types still unhandled
     type_tag = g_type_info_get_tag (type_info);
     switch (type_tag) {
         case GI_TYPE_TAG_INTERFACE:
@@ -256,10 +287,7 @@ pygi_set_property_value (PyGObject *instance,
 
             switch (info_type) {
                 case GI_INFO_TYPE_ENUM:
-                    g_value_set_enum (&value, arg.v_int);
-                    break;
-                case GI_INFO_TYPE_FLAGS:
-                    g_value_set_flags (&value, arg.v_uint);
+                    g_value_set_enum (&value, arg.v_int32);
                     break;
                 case GI_INFO_TYPE_INTERFACE:
                 case GI_INFO_TYPE_OBJECT:
@@ -270,13 +298,10 @@ pygi_set_property_value (PyGObject *instance,
                 case GI_INFO_TYPE_UNION:
                     if (g_type_is_a (type, G_TYPE_BOXED)) {
                         g_value_set_boxed (&value, arg.v_pointer);
-                    } else if (g_type_is_a (type, G_TYPE_VARIANT)) {
-                        g_value_set_variant (&value, arg.v_pointer);
                     } else {
                         PyErr_Format (PyExc_NotImplementedError,
                                       "Setting properties of type '%s' is not implemented",
                                       g_type_name (type));
-                        goto out;
                     }
                     break;
                 default:
@@ -339,32 +364,8 @@ pygi_set_property_value (PyGObject *instance,
             g_value_set_boxed (&value, arg.v_pointer);
             break;
         case GI_TYPE_TAG_GLIST:
-            if (G_VALUE_HOLDS_BOXED(&value))
-                g_value_set_boxed (&value, arg.v_pointer);
-            else
-                g_value_set_pointer (&value, arg.v_pointer);
+            g_value_set_pointer (&value, arg.v_pointer);
             break;
-        case GI_TYPE_TAG_ARRAY:
-        {
-            /* This is assumes GI_TYPE_TAG_ARRAY is always a GStrv
-             * https://bugzilla.gnome.org/show_bug.cgi?id=688232
-             */
-            GArray *arg_items = (GArray*) arg.v_pointer;
-            gchar** strings;
-            guint i;
-
-            if (arg_items == NULL)
-                goto out;
-
-            strings = g_new0 (char*, arg_items->len + 1);
-            for (i = 0; i < arg_items->len; ++i) {
-                strings[i] = g_array_index (arg_items, GIArgument, i).v_string;
-            }
-            strings[arg_items->len] = NULL;
-            g_value_take_boxed (&value, strings);
-            g_array_free (arg_items, TRUE);
-            break;
-        }
         default:
             PyErr_Format (PyExc_NotImplementedError,
                           "Setting properties of type %s is not implemented",
@@ -372,12 +373,12 @@ pygi_set_property_value (PyGObject *instance,
             goto out;
     }
 
-    g_object_set_property (instance->obj, pspec->name, &value);
-    g_value_unset (&value);
+    g_object_set_property (instance->obj, attr_name, &value);
 
     ret_value = 0;
 
 out:
+    g_free (property_name);
     if (property_info != NULL)
         g_base_info_unref (property_info);
     if (type_info != NULL)
index d641b01..31d0e42 100644 (file)
 #include <Python.h>
 #include <girepository.h>
 
-#include "pygobject-internal.h"
+#include "pygi.h"
 
-PyObject *
-pygi_get_property_value (PyGObject *instance,
-                         GParamSpec *pspec);
+PyObject *pygi_get_property_value_real (PyGObject *instance,
+                                        const gchar *attr_name);
 
-PyObject *
-pygi_get_property_value_by_name (PyGObject *self,
-                                 gchar *param_name);
-PyObject *
-pygi_call_do_get_property       (PyObject *instance,
-                                 GParamSpec *pspec);
-
-gint
-pygi_set_property_value (PyGObject *instance,
-                         GParamSpec *pspec,
-                         PyObject *py_value);
+gint pygi_set_property_value_real (PyGObject *instance,
+                                   const gchar *attr_name,
+                                   PyObject *py_value);
 
 #endif /* __PYGI_PROPERTY_H__ */
index 62ef3b6..c48d2ce 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-repository.h"
-#include "pygi-info.h"
+#include "pygi-private.h"
 
 #include <pyglib-python-compat.h>
 
 PyObject *PyGIRepositoryError;
 
+static PyMethodDef _PyGIRepository_methods[];
+
 PYGLIB_DEFINE_TYPE("gi.Repository", PyGIRepository_Type, PyGIRepository);
 
 static PyObject *
@@ -86,6 +89,7 @@ _wrap_g_irepository_require (PyGIRepository *self,
     const char *version = NULL;
     PyObject *lazy = NULL;
     GIRepositoryLoadFlags flags = 0;
+    GTypelib *typelib;
     GError *error;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs, "s|zO:Repository.require",
@@ -98,7 +102,7 @@ _wrap_g_irepository_require (PyGIRepository *self,
     }
 
     error = NULL;
-    g_irepository_require (self->repository, namespace_, version, flags, &error);
+    typelib = g_irepository_require (self->repository, namespace_, version, flags, &error);
     if (error != NULL) {
         PyErr_SetString (PyGIRepositoryError, error->message);
         g_error_free (error);
@@ -109,24 +113,6 @@ _wrap_g_irepository_require (PyGIRepository *self,
 }
 
 static PyObject *
-_wrap_g_irepository_is_registered (PyGIRepository *self,
-                                   PyObject       *args,
-                                   PyObject       *kwargs)
-{
-    static char *kwlist[] = { "namespace", "version", NULL };
-    const char *namespace_;
-    const char *version = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs, "s|z:Repository.is_registered",
-                                      kwlist, &namespace_, &version)) {
-        return NULL;
-    }
-
-    return PyBool_FromLong (g_irepository_is_registered (self->repository,
-                                                         namespace_, version));
-}
-
-static PyObject *
 _wrap_g_irepository_find_by_name (PyGIRepository *self,
                                   PyObject       *args,
                                   PyObject       *kwargs)
@@ -137,29 +123,13 @@ _wrap_g_irepository_find_by_name (PyGIRepository *self,
     const char *name;
     GIBaseInfo *info;
     PyObject *py_info;
-    size_t len;
-    char *trimmed_name = NULL;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs,
                                       "ss:Repository.find_by_name", kwlist, &namespace_, &name)) {
         return NULL;
     }
 
-    /* If the given name ends with an underscore, it might be due to usage
-     * as an accessible replacement for something in GI with the same name
-     * as a Python keyword. Test for this and trim it out if necessary.
-     */
-    len = strlen (name);
-    if (len > 0 && name[len-1] == '_') {
-        trimmed_name = g_strndup (name, len-1);
-        if (_pygi_is_python_keyword (trimmed_name)) {
-            name = trimmed_name;
-        }
-    }
-
     info = g_irepository_find_by_name (self->repository, namespace_, name);
-    g_free (trimmed_name);
-
     if (info == NULL) {
         Py_RETURN_NONE;
     }
@@ -286,74 +256,6 @@ _wrap_g_irepository_get_loaded_namespaces (PyGIRepository *self)
     return py_namespaces;
 }
 
-static PyObject *
-_wrap_g_irepository_get_dependencies (PyGIRepository *self,
-                                      PyObject       *args,
-                                      PyObject       *kwargs)
-{
-    static char *kwlist[] = { "namespace", NULL };
-    const char *namespace_;
-    char **namespaces;
-    PyObject *py_namespaces;
-    gssize i;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                      "s:Repository.get_dependencies", kwlist, &namespace_)) {
-        return NULL;
-    }
-
-    py_namespaces = PyList_New (0);
-    /* Returns NULL in case of no dependencies */
-    namespaces = g_irepository_get_dependencies (self->repository, namespace_);
-    if (namespaces == NULL) {
-        return py_namespaces;
-    }
-
-    for (i = 0; namespaces[i] != NULL; i++) {
-        PyObject *py_namespace = PYGLIB_PyUnicode_FromString (namespaces[i]);
-        PyList_Append (py_namespaces, py_namespace);
-        Py_DECREF(py_namespace);
-    }
-
-    g_strfreev (namespaces);
-
-    return py_namespaces;
-}
-
-
-static PyObject *
-_wrap_g_irepository_get_immediate_dependencies (PyGIRepository *self,
-                                                PyObject       *args,
-                                                PyObject       *kwargs)
-{
-    static char *kwlist[] = { "namespace", NULL };
-    const char *namespace_;
-    char **namespaces;
-    PyObject *py_namespaces;
-    gssize i;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                      "s:Repository.get_immediate_dependencies",
-                                      kwlist, &namespace_)) {
-        return NULL;
-    }
-
-    py_namespaces = PyList_New (0);
-    namespaces = g_irepository_get_immediate_dependencies (self->repository,
-                                                           namespace_);
-
-    for (i = 0; namespaces[i] != NULL; i++) {
-        PyObject *py_namespace = PYGLIB_PyUnicode_FromString (namespaces[i]);
-        PyList_Append (py_namespaces, py_namespace);
-        Py_DECREF (py_namespace);
-    }
-
-    g_strfreev (namespaces);
-
-    return py_namespaces;
-}
-
-
 static PyMethodDef _PyGIRepository_methods[] = {
     { "enumerate_versions", (PyCFunction) _wrap_g_irepository_enumerate_versions, METH_VARARGS | METH_KEYWORDS },
     { "get_default", (PyCFunction) _wrap_g_irepository_get_default, METH_STATIC | METH_NOARGS },
@@ -363,9 +265,6 @@ static PyMethodDef _PyGIRepository_methods[] = {
     { "get_typelib_path", (PyCFunction) _wrap_g_irepository_get_typelib_path, METH_VARARGS | METH_KEYWORDS },
     { "get_version", (PyCFunction) _wrap_g_irepository_get_version, METH_VARARGS | METH_KEYWORDS },
     { "get_loaded_namespaces", (PyCFunction) _wrap_g_irepository_get_loaded_namespaces, METH_NOARGS },
-    { "get_dependencies", (PyCFunction) _wrap_g_irepository_get_dependencies, METH_VARARGS | METH_KEYWORDS  },
-    { "get_immediate_dependencies", (PyCFunction) _wrap_g_irepository_get_immediate_dependencies, METH_VARARGS | METH_KEYWORDS  },
-    { "is_registered", (PyCFunction) _wrap_g_irepository_is_registered, METH_VARARGS | METH_KEYWORDS  },
     { NULL, NULL, 0 }
 };
 
index 6199712..d8eb8cf 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_REPOSITORY_H__
 #define __PYGI_REPOSITORY_H__
 
 #include <Python.h>
-#include <girepository.h>
 
 G_BEGIN_DECLS
 
-typedef struct {
-    PyObject_HEAD
-    GIRepository *repository;
-} PyGIRepository;
-
 /* Private */
 
 extern PyTypeObject PyGIRepository_Type;
diff --git a/gi/pygi-resulttuple.c b/gi/pygi-resulttuple.c
deleted file mode 100644 (file)
index 8ddfeae..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2015 Christoph Reiter <reiter.christoph@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pygi-resulttuple.h"
-#include "pyglib.h"
-
-static char repr_format_key[] = "__repr_format";
-static char tuple_indices_key[] = "__tuple_indices";
-
-/* A free list similar to the one used for the CPython tuple. Difference
- * is that zero length tuples aren't cached (as we don't need them)
- * and that the freelist is smaller as we don't free it with the cyclic GC
- * as CPython does. This wastes 21kB max.
- */
-#define PyGIResultTuple_MAXSAVESIZE 10
-#define PyGIResultTuple_MAXFREELIST 100
-static PyObject *free_list[PyGIResultTuple_MAXSAVESIZE];
-static int numfree[PyGIResultTuple_MAXSAVESIZE];
-
-PYGLIB_DEFINE_TYPE ("gi._gi.ResultTuple", PyGIResultTuple_Type, PyTupleObject)
-
-/**
- * ResultTuple.__repr__() implementation.
- * Takes the _ResultTuple.__repr_format format string and applies the tuple
- * values to it.
- */
-static PyObject*
-resulttuple_repr(PyObject *self) {
-    PyObject *format,  *repr, *format_attr;
-
-    format_attr = PYGLIB_PyUnicode_FromString (repr_format_key);
-    format = PyTuple_Type.tp_getattro (self, format_attr);
-    Py_DECREF (format_attr);
-    if (format == NULL)
-        return NULL;
-    repr = PYGLIB_PyUnicode_Format (format, self);
-    Py_DECREF (format);
-    return repr;
-}
-
-/**
- * PyGIResultTuple_Type.tp_getattro implementation.
- * Looks up the tuple index in _ResultTuple.__tuple_indices and returns the
- * tuple item.
- */
-static PyObject*
-resulttuple_getattro(PyObject *self, PyObject *name) {
-    PyObject *mapping, *index, *mapping_attr, *item;
-
-    mapping_attr = PYGLIB_PyUnicode_FromString (tuple_indices_key);
-    mapping = PyTuple_Type.tp_getattro (self, mapping_attr);
-    Py_DECREF (mapping_attr);
-    if (mapping == NULL)
-        return NULL;
-    g_assert (PyDict_Check (mapping));
-    index = PyDict_GetItem (mapping, name);
-
-    if (index != NULL) {
-        item = PyTuple_GET_ITEM (self, PYGLIB_PyLong_AsSsize_t (index));
-        Py_INCREF (item);
-    } else {
-        item = PyTuple_Type.tp_getattro (self, name);
-    }
-    Py_DECREF (mapping);
-
-    return item;
-}
-
-/**
- * ResultTuple.__reduce__() implementation.
- * Always returns (tuple, tuple(self))
- * Needed so that pickling doesn't depend on our tuple subclass and unpickling
- * works without it. As a result unpickle will give back in a normal tuple.
- */
-static PyObject *
-resulttuple_reduce(PyObject *self)
-{
-    PyObject *tuple = PySequence_Tuple (self);
-    if (tuple == NULL)
-        return NULL;
-    return Py_BuildValue ("(O, (N))", &PyTuple_Type, tuple);
-}
-
-/**
- * Extends __dir__ with the extra attributes accessible through
- * resulttuple_getattro()
- */
-static PyObject *
-resulttuple_dir(PyObject *self)
-{
-    PyObject *mapping_attr;
-    PyObject *items = NULL;
-    PyObject *mapping = NULL;
-    PyObject *mapping_values = NULL;
-    PyObject *result = NULL;
-
-    mapping_attr = PYGLIB_PyUnicode_FromString (tuple_indices_key);
-    mapping = PyTuple_Type.tp_getattro (self, mapping_attr);
-    Py_DECREF (mapping_attr);
-    if (mapping == NULL)
-        goto error;
-    items = PyObject_Dir ((PyObject*)self->ob_type);
-    if (items == NULL)
-        goto error;
-    mapping_values = PyDict_Keys (mapping);
-    if (mapping_values == NULL)
-        goto error;
-    result = PySequence_InPlaceConcat (items, mapping_values);
-
-error:
-    Py_XDECREF (items);
-    Py_XDECREF (mapping);
-    Py_XDECREF (mapping_values);
-
-    return result;
-}
-
-/**
- * resulttuple_new_type:
- * @args: one list object containing tuple item names and None
- *
- * Exposes pygi_resulttuple_new_type() as ResultTuple._new_type()
- * to allow creation of result types for unit tests.
- *
- * Returns: A new PyTypeObject which is a subclass of PyGIResultTuple_Type
- *    or %NULL in case of an error.
- */
-static PyObject *
-resulttuple_new_type(PyObject *self, PyObject *args) {
-    PyObject *tuple_names, *new_type;
-
-    if (!PyArg_ParseTuple (args, "O:ResultTuple._new_type", &tuple_names))
-        return NULL;
-
-    if (!PyList_Check (tuple_names)) {
-        Py_DECREF (tuple_names);
-        PyErr_SetString (PyExc_TypeError, "not a list");
-        return NULL;
-    }
-
-    new_type = (PyObject *)pygi_resulttuple_new_type (tuple_names);
-    Py_DECREF (tuple_names);
-    return new_type;
-}
-
-static PyMethodDef resulttuple_methods[] = {
-    {"__reduce__", (PyCFunction)resulttuple_reduce, METH_NOARGS},
-    {"__dir__", (PyCFunction)resulttuple_dir, METH_NOARGS},
-    {"_new_type", (PyCFunction)resulttuple_new_type,
-     METH_VARARGS | METH_STATIC},
-    {NULL, NULL, 0},
-};
-
-/**
- * pygi_resulttuple_new_type:
- * @tuple_names: A python list containing str or None items.
- *
- * Similar to namedtuple() creates a new tuple subclass which
- * allows to access items by name and have a pretty __repr__.
- * Each item in the passed name list corresponds to an item with
- * the same index in the tuple class. If the name is None the item/index
- * is unnamed.
- *
- * Returns: A new PyTypeObject which is a subclass of PyGIResultTuple_Type
- *    or %NULL in case of an error.
- */
-PyTypeObject*
-pygi_resulttuple_new_type(PyObject *tuple_names) {
-    PyTypeObject *new_type;
-    PyObject *class_dict, *format_string, *empty_format, *named_format,
-        *format_list, *sep, *index_dict, *slots, *paren_format, *new_type_args,
-        *paren_string;
-    Py_ssize_t len, i;
-
-    g_assert (PyList_Check (tuple_names));
-
-    class_dict = PyDict_New ();
-
-    /* To save some memory don't use an instance dict */
-    slots = PyTuple_New (0);
-    PyDict_SetItemString (class_dict, "__slots__", slots);
-    Py_DECREF (slots);
-
-    format_list = PyList_New (0);
-    index_dict = PyDict_New ();
-
-    empty_format = PYGLIB_PyUnicode_FromString ("%r");
-    named_format = PYGLIB_PyUnicode_FromString ("%s=%%r");
-    len = PyList_Size (tuple_names);
-    for (i = 0; i < len; i++) {
-        PyObject *item, *named_args, *named_build, *index;
-        item = PyList_GET_ITEM (tuple_names, i);
-        if (item == Py_None) {
-            PyList_Append (format_list, empty_format);
-        } else {
-            named_args = Py_BuildValue ("(O)", item);
-            named_build = PYGLIB_PyUnicode_Format (named_format, named_args);
-            Py_DECREF (named_args);
-            PyList_Append (format_list, named_build);
-            Py_DECREF (named_build);
-            index = PYGLIB_PyLong_FromSsize_t (i);
-            PyDict_SetItem (index_dict, item, index);
-            Py_DECREF (index);
-        }
-    }
-    Py_DECREF (empty_format);
-    Py_DECREF (named_format);
-
-    sep = PYGLIB_PyUnicode_FromString (", ");
-    format_string = PyObject_CallMethod (sep, "join", "O", format_list);
-    Py_DECREF (sep);
-    Py_DECREF (format_list);
-    paren_format = PYGLIB_PyUnicode_FromString ("(%s)");
-    paren_string = PYGLIB_PyUnicode_Format (paren_format, format_string);
-    Py_DECREF (paren_format);
-    Py_DECREF (format_string);
-
-    PyDict_SetItemString (class_dict, repr_format_key, paren_string);
-    Py_DECREF (paren_string);
-
-    PyDict_SetItemString (class_dict, tuple_indices_key, index_dict);
-    Py_DECREF (index_dict);
-
-    new_type_args = Py_BuildValue ("s(O)O", "_ResultTuple",
-                                   &PyGIResultTuple_Type, class_dict);
-    new_type = (PyTypeObject *)PyType_Type.tp_new (&PyType_Type,
-                                                   new_type_args, NULL);
-    Py_DECREF (new_type_args);
-    Py_DECREF (class_dict);
-
-    if (new_type != NULL) {
-        /* disallow subclassing as that would break the free list caching
-         * since we assume that all subclasses use PyTupleObject */
-        new_type->tp_flags &= ~Py_TPFLAGS_BASETYPE;
-    }
-
-    return new_type;
-}
-
-
-/**
- * pygi_resulttuple_new:
- * @subclass: A PyGIResultTuple_Type subclass which will be the type of the
- *    returned instance.
- * @len: Length of the returned tuple
- *
- * Like PyTuple_New(). Return an uninitialized tuple of the given @length.
- *
- * Returns: An instance of @subclass or %NULL on error.
- */
-PyObject *
-pygi_resulttuple_new(PyTypeObject *subclass, Py_ssize_t len) {
-    PyObject *self;
-    Py_ssize_t i;
-
-    /* Check the free list for a tuple object with the needed size;
-     * clear it and change the class to ours.
-     */
-    if (len > 0 && len < PyGIResultTuple_MAXSAVESIZE) {
-        self = free_list[len];
-        if (self != NULL) {
-            free_list[len] = PyTuple_GET_ITEM (self, 0);
-            numfree[len]--;
-            for (i=0; i < len; i++) {
-                PyTuple_SET_ITEM (self, i, NULL);
-            }
-            Py_TYPE (self) = subclass;
-            Py_INCREF (subclass);
-            _Py_NewReference (self);
-            PyObject_GC_Track (self);
-            return self;
-        }
-    }
-
-    /* For zero length tuples and in case the free list is empty, alloc
-     * as usual.
-     */
-    return subclass->tp_alloc (subclass, len);
-}
-
-static void resulttuple_dealloc(PyObject *self) {
-    Py_ssize_t i, len;
-
-    PyObject_GC_UnTrack (self);
-    Py_TRASHCAN_SAFE_BEGIN (self)
-
-    /* Free the tuple items and, if there is space, save the tuple object
-     * pointer to the front of the free list for its size. Otherwise free it.
-     */
-    len = Py_SIZE (self);
-    if (len > 0) {
-        for (i=0; i < len; i++) {
-            Py_XDECREF (PyTuple_GET_ITEM (self, i));
-        }
-
-        if (len < PyGIResultTuple_MAXSAVESIZE && numfree[len] < PyGIResultTuple_MAXFREELIST) {
-            PyTuple_SET_ITEM (self, 0, free_list[len]);
-            numfree[len]++;
-            free_list[len] = self;
-            goto done;
-        }
-    }
-
-    Py_TYPE (self)->tp_free (self);
-
-done:
-    Py_TRASHCAN_SAFE_END (self)
-}
-
-/**
- * pygi_resulttuple_register_types:
- * @module: A Python modules to which ResultTuple gets added to.
- *
- * Initializes the ResultTuple class and adds it to the passed @module.
- *
- * Returns: -1 on error, 0 on success.
- */
-int pygi_resulttuple_register_types(PyObject *module) {
-
-    PyGIResultTuple_Type.tp_base = &PyTuple_Type;
-    PyGIResultTuple_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-    PyGIResultTuple_Type.tp_repr = (reprfunc)resulttuple_repr;
-    PyGIResultTuple_Type.tp_getattro = (getattrofunc)resulttuple_getattro;
-    PyGIResultTuple_Type.tp_methods = resulttuple_methods;
-    PyGIResultTuple_Type.tp_dealloc = (destructor)resulttuple_dealloc;
-
-    if (PyType_Ready (&PyGIResultTuple_Type))
-        return -1;
-
-    Py_INCREF (&PyGIResultTuple_Type);
-    if (PyModule_AddObject (module, "ResultTuple",
-                            (PyObject *)&PyGIResultTuple_Type)) {
-        Py_DECREF (&PyGIResultTuple_Type);
-        return -1;
-    }
-
-    return 0;
-}
diff --git a/gi/pygi-resulttuple.h b/gi/pygi-resulttuple.h
deleted file mode 100644 (file)
index 3f63ca0..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2015 Christoph Reiter <reiter.christoph@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_RESULTTUPLE_H__
-#define __PYGI_RESULTTUPLE_H__
-
-#include "Python.h"
-
-int
-pygi_resulttuple_register_types    (PyObject *d);
-
-PyTypeObject *
-pygi_resulttuple_new_type          (PyObject *tuple_names);
-
-PyObject*
-pygi_resulttuple_new               (PyTypeObject *subclass, Py_ssize_t len);
-
-#endif /* __PYGI_RESULTTUPLE_H__ */
index 0cdc1e4..1482529 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-signal-closure.h"
-#include "pygi-value.h"
-#include "pygi-argument.h"
-#include "pygi-boxed.h"
+#include "pygi-private.h"
+
+/* Copied from glib */
+static void
+canonicalize_key (gchar *key)
+{
+    gchar *p;
+
+    for (p = key; *p != 0; p++)
+    {
+        gchar c = *p;
+
+        if (c != '-' &&
+            (c < '0' || c > '9') &&
+            (c < 'A' || c > 'Z') &&
+            (c < 'a' || c > 'z'))
+                *p = '-';
+    }
+}
 
 static GISignalInfo *
 _pygi_lookup_signal_from_g_type (GType g_type,
@@ -27,22 +44,36 @@ _pygi_lookup_signal_from_g_type (GType g_type,
 {
     GIRepository *repository;
     GIBaseInfo *info;
-    GISignalInfo *signal_info = NULL;
+    gssize n_infos;
+    gssize i;
+    GType parent;
 
     repository = g_irepository_get_default();
     info = g_irepository_find_by_gtype (repository, g_type);
-    if (info == NULL)
-        return NULL;
-
-    if (GI_IS_OBJECT_INFO (info))
-        signal_info = g_object_info_find_signal ((GIObjectInfo *) info,
-                                                 signal_name);
-    else if (GI_IS_INTERFACE_INFO (info))
-        signal_info = g_interface_info_find_signal ((GIInterfaceInfo *) info,
-                                                    signal_name);
-
-    g_base_info_unref (info);
-    return signal_info;
+    if (info != NULL) {
+        n_infos = g_object_info_get_n_signals ( (GIObjectInfo *) info);
+        for (i = 0; i < n_infos; i++) {
+            GISignalInfo *signal_info;
+
+            signal_info = g_object_info_get_signal ( (GIObjectInfo *) info, i);
+            g_assert (info != NULL);
+
+            if (strcmp (signal_name, g_base_info_get_name (signal_info)) == 0) {
+                g_base_info_unref (info);
+                return signal_info;
+            }
+
+            g_base_info_unref (signal_info);
+        }
+
+        g_base_info_unref (info);
+    }
+
+    parent = g_type_parent (g_type);
+    if (parent > 0)
+        return _pygi_lookup_signal_from_g_type (parent, signal_name);
+
+    return NULL;
 }
 
 static void
@@ -81,14 +112,11 @@ pygi_signal_closure_marshal(GClosure *closure,
     GISignalInfo *signal_info;
     gint n_sig_info_args;
     gint sig_info_highest_arg;
-    GSList *list_item = NULL;
-    GSList *pass_by_ref_structs = NULL;
 
     state = PyGILState_Ensure();
 
     signal_info = ((PyGISignalClosure *)closure)->signal_info;
     n_sig_info_args = g_callable_info_get_n_args(signal_info);
-    g_assert_cmpint (n_sig_info_args, >=, 0);
     /* the first argument to a signal callback is instance,
        but instance is not counted in the introspection data */
     sig_info_highest_arg = n_sig_info_args + 1;
@@ -111,78 +139,21 @@ pygi_signal_closure_marshal(GClosure *closure,
             }
             PyTuple_SetItem(params, i, item);
 
-        } else if (i < (guint)sig_info_highest_arg) {
+        } else if (i < sig_info_highest_arg) {
             GIArgInfo arg_info;
             GITypeInfo type_info;
-            GITypeTag type_tag;
+            GITransfer transfer;
             GIArgument arg = { 0, };
             PyObject *item = NULL;
-            gboolean free_array = FALSE;
-            gboolean pass_struct_by_ref = FALSE;
 
             g_callable_info_load_arg(signal_info, i - 1, &arg_info);
             g_arg_info_load_type(&arg_info, &type_info);
+            transfer = g_arg_info_get_ownership_transfer(&arg_info);
 
             arg = _pygi_argument_from_g_value(&param_values[i], &type_info);
-
-            type_tag = g_type_info_get_tag (&type_info);
-            if (type_tag == GI_TYPE_TAG_ARRAY) {
-                /* Skip the self argument of param_values */
-                arg.v_pointer = _pygi_argument_to_array (&arg,
-                                                         _pygi_argument_array_length_marshal,
-                                                         (void *)(param_values + 1),
-                                                         signal_info,
-                                                         &type_info,
-                                                         &free_array);
-            }
-
-            /* Hack to ensure struct arguments are passed-by-reference allowing
-             * callback implementors to modify the struct values. This is needed
-             * for keeping backwards compatibility and should be removed in future
-             * versions which support signal output arguments as return values.
-             * See: https://bugzilla.gnome.org/show_bug.cgi?id=735486
-             *
-             * Note the logic here must match the logic path taken in _pygi_argument_to_object.
-             */
-            if (type_tag == GI_TYPE_TAG_INTERFACE) {
-                GIBaseInfo *info = g_type_info_get_interface (&type_info);
-                GIInfoType info_type = g_base_info_get_type (info);
-
-                if (info_type == GI_INFO_TYPE_STRUCT ||
-                        info_type == GI_INFO_TYPE_BOXED ||
-                        info_type == GI_INFO_TYPE_UNION) {
-
-                    GType gtype = g_registered_type_info_get_g_type ((GIRegisteredTypeInfo *) info);
-                    gboolean is_foreign = (info_type == GI_INFO_TYPE_STRUCT) &&
-                                          (g_struct_info_is_foreign ((GIStructInfo *) info));
-
-                    if (!is_foreign && !g_type_is_a (gtype, G_TYPE_VALUE) &&
-                            g_type_is_a (gtype, G_TYPE_BOXED)) {
-                        pass_struct_by_ref = TRUE;
-                    }
-                }
-
-                g_base_info_unref (info);
-            }
-
-            if (pass_struct_by_ref) {
-                /* transfer everything will ensure the struct is not copied when wrapped. */
-                item = _pygi_argument_to_object (&arg, &type_info, GI_TRANSFER_EVERYTHING);
-                if (item && PyObject_IsInstance (item, (PyObject *) &PyGIBoxed_Type)) {
-                    ((PyGBoxed *)item)->free_on_dealloc = FALSE;
-                    pass_by_ref_structs = g_slist_prepend (pass_by_ref_structs, item);
-                }
-
-            } else {
-                item = _pygi_argument_to_object (&arg, &type_info, GI_TRANSFER_NOTHING);
-            }
-
-            if (free_array) {
-                g_array_free (arg.v_pointer, FALSE);
-            }
+            item = _pygi_argument_to_object(&arg, &type_info, transfer);
 
             if (item == NULL) {
-                PyErr_Print ();
                 goto out;
             }
             PyTuple_SetItem(params, i, item);
@@ -203,7 +174,7 @@ pygi_signal_closure_marshal(GClosure *closure,
         goto out;
     }
 
-    if (G_IS_VALUE(return_value) && pyg_value_from_pyobject(return_value, ret) != 0) {
+    if (return_value && pyg_value_from_pyobject(return_value, ret) != 0) {
         PyErr_SetString(PyExc_TypeError,
                         "can't convert return value to desired type");
 
@@ -214,45 +185,33 @@ pygi_signal_closure_marshal(GClosure *closure,
     }
     Py_DECREF(ret);
 
-    /* Run through the list of structs which have been passed by reference and
-     * check if they are being held longer than the duration of the callback
-     * execution. This is determined if the ref count is greater than 1.
-     * A single ref is held by the argument list and any more would mean the callback
-     * stored a ref somewhere else. In this case we make an internal copy of
-     * the boxed struct so Python can own the memory to it.
-     */
-    list_item = pass_by_ref_structs;
-    while (list_item) {
-        PyObject *item = list_item->data;
-        if (item->ob_refcnt > 1) {
-            _pygi_boxed_copy_in_place ((PyGIBoxed *)item);
-        }
-        list_item = g_slist_next (list_item);
-    }
-
  out:
-    g_slist_free (pass_by_ref_structs);
     Py_DECREF(params);
     PyGILState_Release(state);
 }
 
 GClosure *
-pygi_signal_closure_new (PyGObject *instance,
-                         GType g_type,
-                         const gchar *signal_name,
-                         PyObject *callback,
-                         PyObject *extra_args,
-                         PyObject *swap_data)
+pygi_signal_closure_new_real (PyGObject *instance,
+                              const gchar *sig_name,
+                              PyObject *callback,
+                              PyObject *extra_args,
+                              PyObject *swap_data)
 {
     GClosure *closure = NULL;
     PyGISignalClosure *pygi_closure = NULL;
+    GType g_type;
     GISignalInfo *signal_info = NULL;
+    char *signal_name = g_strdup (sig_name);
 
     g_return_val_if_fail(callback != NULL, NULL);
 
+    canonicalize_key(signal_name);
+
+    g_type = pyg_type_from_object ((PyObject *)instance);
     signal_info = _pygi_lookup_signal_from_g_type (g_type, signal_name);
+
     if (signal_info == NULL)
-        return NULL;
+        goto out;
 
     closure = g_closure_new_simple(sizeof(PyGISignalClosure), NULL);
     g_closure_add_invalidate_notifier(closure, NULL, pygi_signal_closure_invalidate);
@@ -279,5 +238,8 @@ pygi_signal_closure_new (PyGObject *instance,
         closure->derivative_flag = TRUE;
     }
 
+out:
+    g_free (signal_name);
+
     return closure;
 }
index 9ba8d6d..4687f3f 100644 (file)
@@ -24,9 +24,7 @@
 #ifndef __PYGI_SIGNAL_CLOSURE_H__
 #define __PYGI_SIGNAL_CLOSURE_H__
 
-#include <Python.h>
-#include <girepository.h>
-#include "pygobject-internal.h"
+#include "pygi.h"
 
 G_BEGIN_DECLS
 
@@ -37,13 +35,11 @@ typedef struct _PyGISignalClosure
     GISignalInfo *signal_info;
 } PyGISignalClosure;
 
-GClosure *
-pygi_signal_closure_new (PyGObject *instance,
-                         GType g_type,
-                         const gchar *sig_name,
-                         PyObject *callback,
-                         PyObject *extra_args,
-                         PyObject *swap_data);
+GClosure * pygi_signal_closure_new_real (PyGObject *instance,
+                                         const gchar *sig_name,
+                                         PyObject *callback,
+                                         PyObject *extra_args,
+                                         PyObject *swap_data);
 
 G_END_DECLS
 
diff --git a/gi/pygi-source.c b/gi/pygi-source.c
deleted file mode 100644 (file)
index 5305260..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
-/*
- * Copyright (C) 1998-2003  James Henstridge
- * Copyright (C) 2005       Oracle
- * Copyright (c) 2012       Canonical Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include "pygi-info.h"
-#include "pygi-boxed.h"
-#include "pygi-type.h"
-#include "pyglib.h"
-#include "pygboxed.h"
-#include "pygi-source.h"
-
-typedef struct
-{
-    GSource source;
-    PyObject *obj;
-} PyGRealSource;
-
-static gboolean
-pyg_source_prepare(GSource *source, gint *timeout)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *t;
-    gboolean ret = FALSE;
-    gboolean got_err = TRUE;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-
-    t = PyObject_CallMethod(pysource->obj, "prepare", NULL);
-
-    if (t == NULL) {
-       goto bail;
-    } else if (!PyObject_IsTrue(t)) {
-       got_err = FALSE;
-       goto bail;
-    } else if (!PyTuple_Check(t)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "source prepare function must return a tuple or False");
-       goto bail;
-    } else if (PyTuple_Size(t) != 2) {
-       PyErr_SetString(PyExc_TypeError,
-                       "source prepare function return tuple must be exactly "
-                       "2 elements long");
-       goto bail;
-    }
-
-    ret = PyObject_IsTrue(PyTuple_GET_ITEM(t, 0));
-       *timeout = PYGLIB_PyLong_AsLong(PyTuple_GET_ITEM(t, 1));
-
-       if (*timeout == -1 && PyErr_Occurred()) {
-           ret = FALSE;
-           goto bail;
-       }
-
-    got_err = FALSE;
-
-bail:
-    if (got_err)
-       PyErr_Print();
-
-    Py_XDECREF(t);
-
-    PyGILState_Release(state);
-
-    return ret;
-}
-
-static gboolean
-pyg_source_check(GSource *source)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *t;
-    gboolean ret;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-
-    t = PyObject_CallMethod(pysource->obj, "check", NULL);
-
-    if (t == NULL) {
-       PyErr_Print();
-       ret = FALSE;
-    } else {
-       ret = PyObject_IsTrue(t);
-       Py_DECREF(t);
-    }
-
-    PyGILState_Release(state);
-
-    return ret;
-}
-
-static gboolean
-pyg_source_dispatch(GSource *source, GSourceFunc callback, gpointer user_data)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *func, *args, *tuple, *t;
-    gboolean ret;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-
-    if (callback) {
-       tuple = user_data;
-
-       func = PyTuple_GetItem(tuple, 0);
-        args = PyTuple_GetItem(tuple, 1);
-    } else {
-       func = Py_None;
-       args = Py_None;
-    }
-
-    t = PyObject_CallMethod(pysource->obj, "dispatch", "OO", func, args);
-
-    if (t == NULL) {
-       PyErr_Print();
-       ret = FALSE;
-    } else {
-       ret = PyObject_IsTrue(t);
-       Py_DECREF(t);
-    }
-
-    PyGILState_Release(state);
-
-    return ret;
-}
-
-static void
-pyg_source_finalize(GSource *source)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *func, *t;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-
-    func = PyObject_GetAttrString(pysource->obj, "finalize");
-    if (func) {
-       t = PyObject_CallObject(func, NULL);
-       Py_DECREF(func);
-
-       if (t == NULL) {
-           PyErr_Print();
-       } else {
-           Py_DECREF(t);
-       }
-    } else {
-        PyErr_Clear ();
-    }
-
-    PyGILState_Release(state);
-}
-
-static GSourceFuncs pyg_source_funcs =
-{
-    pyg_source_prepare,
-    pyg_source_check,
-    pyg_source_dispatch,
-    pyg_source_finalize
-};
-
-PyObject *
-pyg_source_set_callback(PyGObject *self_module, PyObject *args)
-{
-    PyObject *self, *first, *callback, *cbargs = NULL, *data;
-    gint len;
-
-    len = PyTuple_Size (args);
-    if (len < 2) {
-       PyErr_SetString(PyExc_TypeError,
-                       "set_callback requires at least 2 arguments");
-       return NULL;
-    }
-
-    first = PySequence_GetSlice(args, 0, 2);
-    if (!PyArg_ParseTuple(first, "OO:set_callback", &self, &callback)) {
-       Py_DECREF (first);
-       return NULL;
-    }
-    Py_DECREF(first);
-    
-    if (!pyg_boxed_check (self, G_TYPE_SOURCE)) {
-       PyErr_SetString(PyExc_TypeError, "first argument is not a GLib.Source");
-       return NULL;
-    }
-
-    if (!PyCallable_Check(callback)) {
-       PyErr_SetString(PyExc_TypeError, "second argument not callable");
-       return NULL;
-    }
-
-    cbargs = PySequence_GetSlice(args, 2, len);
-    if (cbargs == NULL)
-       return NULL;
-
-    data = Py_BuildValue("(ON)", callback, cbargs);
-    if (data == NULL)
-       return NULL;
-
-    g_source_set_callback(pyg_boxed_get (self, GSource),
-                         _pyglib_handler_marshal, data,
-                         _pyglib_destroy_notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-/**
- * pyg_source_new:
- *
- * Wrap the un-bindable g_source_new() and provide wrapper callbacks in the
- * GSourceFuncs which call back to Python.
- */
-PyObject*
-pyg_source_new (void)
-{
-    PyGRealSource *source = NULL;
-    PyObject      *py_type;
-
-    source = (PyGRealSource*) g_source_new (&pyg_source_funcs, sizeof (PyGRealSource));
-
-    py_type = _pygi_type_import_by_name ("GLib", "Source");
-    /* Full ownership transfer of the source, this will be free'd with g_boxed_free. */
-    source->obj = _pygi_boxed_new ( (PyTypeObject *) py_type, source,
-                                    FALSE, /* copy_boxed */
-                                    0);    /* slice_allocated */
-
-    return source->obj;
-}
diff --git a/gi/pygi-struct-marshal.c b/gi/pygi-struct-marshal.c
deleted file mode 100644 (file)
index 60d2585..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include <glib.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-struct-marshal.h"
-#include "pygi-struct.h"
-#include "pygi-foreign.h"
-#include "pygi-value.h"
-#include "pygi-type.h"
-#include "pygi-boxed.h"
-#include "pygi-info.h"
-#include "pygpointer.h"
-#include "pygboxed.h"
-#include "pygtype.h"
-
-/*
- * _is_union_member - check to see if the py_arg is actually a member of the
- * expected C union
- */
-static gboolean
-_is_union_member (GIInterfaceInfo *interface_info, PyObject *py_arg) {
-    gint i;
-    gint n_fields;
-    GIUnionInfo *union_info;
-    GIInfoType info_type;
-    gboolean is_member = FALSE;
-
-    info_type = g_base_info_get_type (interface_info);
-
-    if (info_type != GI_INFO_TYPE_UNION)
-        return FALSE;
-
-    union_info = (GIUnionInfo *) interface_info;
-    n_fields = g_union_info_get_n_fields (union_info);
-
-    for (i = 0; i < n_fields; i++) {
-        GIFieldInfo *field_info;
-        GITypeInfo *field_type_info;
-
-        field_info = g_union_info_get_field (union_info, i);
-        field_type_info = g_field_info_get_type (field_info);
-
-        /* we can only check if the members are interfaces */
-        if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_INTERFACE) {
-            GIInterfaceInfo *field_iface_info;
-            PyObject *py_type;
-
-            field_iface_info = g_type_info_get_interface (field_type_info);
-            py_type = _pygi_type_import_by_gi_info ((GIBaseInfo *) field_iface_info);
-
-            if (py_type != NULL && PyObject_IsInstance (py_arg, py_type)) {
-                is_member = TRUE;
-            }
-
-            Py_XDECREF (py_type);
-            g_base_info_unref ( ( GIBaseInfo *) field_iface_info);
-        }
-
-        g_base_info_unref ( ( GIBaseInfo *) field_type_info);
-        g_base_info_unref ( ( GIBaseInfo *) field_info);
-
-        if (is_member)
-            break;
-    }
-
-    return is_member;
-}
-
-
-/*
- * GValue from Python
- */
-
-/* pygi_arg_gvalue_from_py_marshal:
- * py_arg: (in):
- * arg: (out):
- * transfer:
- * copy_reference: TRUE if arg should use the pointer reference held by py_arg
- *                 when it is already holding a GValue vs. copying the value.
- */
-gboolean
-pygi_arg_gvalue_from_py_marshal (PyObject *py_arg,
-                                 GIArgument *arg,
-                                 GITransfer transfer,
-                                 gboolean copy_reference) {
-    GValue *value;
-    GType object_type;
-
-    object_type = pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
-    if (object_type == G_TYPE_INVALID) {
-        PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
-        return FALSE;
-    }
-
-    /* if already a gvalue, use that, else marshal into gvalue */
-    if (object_type == G_TYPE_VALUE) {
-        GValue *source_value = pyg_boxed_get (py_arg, GValue);
-        if (copy_reference) {
-            value = source_value;
-        } else {
-            value = g_slice_new0 (GValue);
-            g_value_init (value, G_VALUE_TYPE (source_value));
-            g_value_copy (source_value, value);
-        }
-    } else {
-        value = g_slice_new0 (GValue);
-        g_value_init (value, object_type);
-        if (pyg_value_from_pyobject_with_error (value, py_arg) < 0) {
-            g_slice_free (GValue, value);
-            return FALSE;
-        }
-    }
-
-    arg->v_pointer = value;
-    return TRUE;
-}
-
-void
-pygi_arg_gvalue_from_py_cleanup (PyGIInvokeState *state,
-                                 PyGIArgCache    *arg_cache,
-                                 PyObject        *py_arg,
-                                 gpointer         data,
-                                 gboolean         was_processed)
-{
-    /* Note py_arg can be NULL for hash table which is a bug. */
-    if (was_processed && py_arg != NULL) {
-        GType py_object_type =
-            pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
-
-        /* When a GValue was not passed, it means the marshalers created a new
-         * one to pass in, clean this up.
-         */
-        if (py_object_type != G_TYPE_VALUE) {
-            g_value_unset ((GValue *) data);
-            g_slice_free (GValue, data);
-        }
-    }
-}
-
-/* pygi_arg_gclosure_from_py_marshal:
- * py_arg: (in):
- * arg: (out):
- */
-static gboolean
-pygi_arg_gclosure_from_py_marshal (PyObject   *py_arg,
-                                   GIArgument *arg,
-                                   GITransfer  transfer)
-{
-    GClosure *closure;
-    GType object_gtype = pyg_type_from_object_strict (py_arg, FALSE);
-
-    if ( !(PyCallable_Check(py_arg) ||
-           g_type_is_a (object_gtype, G_TYPE_CLOSURE))) {
-        PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
-                      py_arg->ob_type->tp_name);
-        return FALSE;
-    }
-
-    if (g_type_is_a (object_gtype, G_TYPE_CLOSURE)) {
-        closure = (GClosure *)pyg_boxed_get (py_arg, void);
-        /* Make sure we own a ref which is held until cleanup. */
-        if (closure != NULL) {
-            g_closure_ref (closure);
-        }
-    } else {
-        closure = pyg_closure_new (py_arg, NULL, NULL);
-        g_closure_ref (closure);
-        g_closure_sink (closure);
-    }
-
-    if (closure == NULL) {
-        PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
-        return FALSE;
-    }
-
-    /* Add an additional ref when transfering everything to the callee. */
-    if (transfer == GI_TRANSFER_EVERYTHING) {
-        g_closure_ref (closure);
-    }
-
-    arg->v_pointer = closure;
-    return TRUE;
-}
-
-static void
-arg_gclosure_from_py_cleanup (PyGIInvokeState *state,
-                              PyGIArgCache    *arg_cache,
-                              PyObject        *py_arg,
-                              gpointer         cleanup_data,
-                              gboolean         was_processed)
-{
-    if (cleanup_data != NULL) {
-        g_closure_unref (cleanup_data);
-    }
-}
-
-/* pygi_arg_struct_from_py_marshal:
- *
- * Dispatcher to various sub marshalers
- */
-gboolean
-pygi_arg_struct_from_py_marshal (PyObject *py_arg,
-                                 GIArgument *arg,
-                                 const gchar *arg_name,
-                                 GIBaseInfo *interface_info,
-                                 GType g_type,
-                                 PyObject *py_type,
-                                 GITransfer transfer,
-                                 gboolean copy_reference,
-                                 gboolean is_foreign,
-                                 gboolean is_pointer)
-{
-    gboolean is_union = FALSE;
-
-    if (py_arg == Py_None) {
-        arg->v_pointer = NULL;
-        return TRUE;
-    }
-
-    /* FIXME: handle this large if statement in the cache
-     *        and set the correct marshaller
-     */
-
-    if (g_type_is_a (g_type, G_TYPE_CLOSURE)) {
-        return pygi_arg_gclosure_from_py_marshal (py_arg, arg, transfer);
-    } else if (g_type_is_a (g_type, G_TYPE_VALUE)) {
-        return pygi_arg_gvalue_from_py_marshal(py_arg,
-                                               arg,
-                                               transfer,
-                                               copy_reference);
-    } else if (is_foreign) {
-        PyObject *success;
-        success = pygi_struct_foreign_convert_to_g_argument (py_arg,
-                                                             interface_info,
-                                                             transfer,
-                                                             arg);
-
-        return (success == Py_None);
-    } else if (!PyObject_IsInstance (py_arg, py_type)) {
-        /* first check to see if this is a member of the expected union */
-        is_union = _is_union_member (interface_info, py_arg);
-        if (!is_union) {
-            goto type_error;
-        }
-    }
-
-    if (g_type_is_a (g_type, G_TYPE_BOXED)) {
-        /* Additionally use pyg_type_from_object to pull the stashed __gtype__
-         * attribute off of the input argument for type checking. This is needed
-         * to work around type discrepancies in cases with aliased (typedef) types.
-         * e.g. GtkAllocation, GdkRectangle.
-         * See: https://bugzilla.gnomethere are .org/show_bug.cgi?id=707140
-         */
-        if (is_union || pyg_boxed_check (py_arg, g_type) ||
-                g_type_is_a (pyg_type_from_object (py_arg), g_type)) {
-            arg->v_pointer = pyg_boxed_get (py_arg, void);
-            if (transfer == GI_TRANSFER_EVERYTHING) {
-                arg->v_pointer = g_boxed_copy (g_type, arg->v_pointer);
-            }
-        } else {
-            goto type_error;
-        }
-
-    } else if (g_type_is_a (g_type, G_TYPE_POINTER) ||
-               g_type_is_a (g_type, G_TYPE_VARIANT) ||
-               g_type  == G_TYPE_NONE) {
-        g_warn_if_fail (g_type_is_a (g_type, G_TYPE_VARIANT) || !is_pointer || transfer == GI_TRANSFER_NOTHING);
-
-        if (g_type_is_a (g_type, G_TYPE_VARIANT) &&
-                pyg_type_from_object (py_arg) != G_TYPE_VARIANT) {
-            PyErr_SetString (PyExc_TypeError, "expected GLib.Variant");
-            return FALSE;
-        }
-        arg->v_pointer = pyg_pointer_get (py_arg, void);
-        if (transfer == GI_TRANSFER_EVERYTHING) {
-            g_variant_ref ((GVariant *)arg->v_pointer);
-        }
-
-    } else {
-        PyErr_Format (PyExc_NotImplementedError,
-                      "structure type '%s' is not supported yet",
-                      g_type_name(g_type));
-        return FALSE;
-    }
-    return TRUE;
-
-type_error:
-    {
-        gchar *type_name = _pygi_g_base_info_get_fullname (interface_info);
-        PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
-
-        PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
-                      arg_name ? arg_name : "self",
-                      type_name,
-                      module ? PYGLIB_PyUnicode_AsString(module) : "",
-                      module ? "." : "",
-                      py_arg->ob_type->tp_name);
-        if (module)
-            Py_DECREF (module);
-        g_free (type_name);
-        return FALSE;
-    }
-}
-
-static gboolean
-arg_struct_from_py_marshal_adapter (PyGIInvokeState   *state,
-                                    PyGICallableCache *callable_cache,
-                                    PyGIArgCache      *arg_cache,
-                                    PyObject          *py_arg,
-                                    GIArgument        *arg,
-                                    gpointer          *cleanup_data)
-{
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    gboolean res =  pygi_arg_struct_from_py_marshal (py_arg,
-                                                     arg,
-                                                     arg_cache->arg_name,
-                                                     iface_cache->interface_info,
-                                                     iface_cache->g_type,
-                                                     iface_cache->py_type,
-                                                     arg_cache->transfer,
-                                                     TRUE, /*copy_reference*/
-                                                     iface_cache->is_foreign,
-                                                     arg_cache->is_pointer);
-
-    /* Assume struct marshaling is always a pointer and assign cleanup_data
-     * here rather than passing it further down the chain.
-     */
-    *cleanup_data = arg->v_pointer;
-    return res;
-}
-
-static void
-arg_foreign_from_py_cleanup (PyGIInvokeState *state,
-                             PyGIArgCache    *arg_cache,
-                             PyObject        *py_arg,
-                             gpointer         data,
-                             gboolean         was_processed)
-{
-    if (state->failed && was_processed) {
-        pygi_struct_foreign_release (
-            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
-            data);
-    }
-}
-
-
-PyObject *
-pygi_arg_struct_to_py_marshal (GIArgument *arg,
-                               GIInterfaceInfo *interface_info,
-                               GType g_type,
-                               PyObject *py_type,
-                               GITransfer transfer,
-                               gboolean is_allocated,
-                               gboolean is_foreign)
-{
-    PyObject *py_obj = NULL;
-
-    if (arg->v_pointer == NULL) {
-        Py_RETURN_NONE;
-    }
-
-    if (g_type_is_a (g_type, G_TYPE_VALUE)) {
-        py_obj = pyg_value_as_pyobject (arg->v_pointer, FALSE);
-    } else if (is_foreign) {
-        py_obj = pygi_struct_foreign_convert_from_g_argument (interface_info,
-                                                              transfer,
-                                                              arg->v_pointer);
-    } else if (g_type_is_a (g_type, G_TYPE_BOXED)) {
-        if (py_type) {
-            /* Force a boxed copy if we are not transfered ownership and the
-             * memory is not caller allocated. */
-            py_obj = _pygi_boxed_new ((PyTypeObject *) py_type,
-                                      arg->v_pointer,
-                                      transfer == GI_TRANSFER_NOTHING && !is_allocated,
-                                      is_allocated ?
-                                              g_struct_info_get_size(interface_info) : 0);
-        }
-    } else if (g_type_is_a (g_type, G_TYPE_POINTER)) {
-        if (py_type == NULL ||
-                !PyType_IsSubtype ((PyTypeObject *) py_type, &PyGIStruct_Type)) {
-            g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
-            py_obj = pyg_pointer_new (g_type, arg->v_pointer);
-        } else {
-            py_obj = _pygi_struct_new ( (PyTypeObject *) py_type,
-                                       arg->v_pointer,
-                                       transfer == GI_TRANSFER_EVERYTHING);
-        }
-    } else if (g_type_is_a (g_type, G_TYPE_VARIANT)) {
-        /* Note: sink the variant (add a ref) only if we are not transfered ownership.
-         * GLib.Variant overrides __del__ which will then call "g_variant_unref" for
-         * cleanup in either case. */
-        if (py_type) {
-            if (transfer == GI_TRANSFER_NOTHING) {
-                g_variant_ref_sink (arg->v_pointer);
-            }
-            py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
-                                       arg->v_pointer,
-                                       FALSE);
-        }
-    } else if (g_type == G_TYPE_NONE) {
-        if (py_type) {
-            py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
-                                       arg->v_pointer,
-                                       transfer == GI_TRANSFER_EVERYTHING || is_allocated);
-        }
-    } else {
-        PyErr_Format (PyExc_NotImplementedError,
-                      "structure type '%s' is not supported yet",
-                      g_type_name (g_type));
-    }
-
-    return py_obj;
-}
-
-static PyObject *
-arg_struct_to_py_marshal_adapter (PyGIInvokeState   *state,
-                                  PyGICallableCache *callable_cache,
-                                  PyGIArgCache      *arg_cache,
-                                  GIArgument        *arg)
-{
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    return pygi_arg_struct_to_py_marshal (arg,
-                                          iface_cache->interface_info,
-                                          iface_cache->g_type,
-                                          iface_cache->py_type,
-                                          arg_cache->transfer,
-                                          arg_cache->is_caller_allocates,
-                                          iface_cache->is_foreign);
-}
-
-static PyObject *
-arg_boxed_to_py_marshal_pass_by_ref (PyGIInvokeState   *state,
-                                     PyGICallableCache *callable_cache,
-                                     PyGIArgCache      *arg_cache,
-                                     GIArgument        *arg)
-{
-    PyObject *py_obj = NULL;
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    if (arg->v_pointer == NULL) {
-        Py_RETURN_NONE;
-    }
-
-    if (g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
-        if (iface_cache->py_type) {
-            py_obj = _pygi_boxed_new ((PyTypeObject *) iface_cache->py_type,
-                                      arg->v_pointer,
-                                      FALSE, /* copy_boxed */
-                                      0);    /* slice_alloc */
-            ((PyGBoxed *)py_obj)->free_on_dealloc = FALSE;
-        }
-    } else {
-        PyErr_Format (PyExc_NotImplementedError,
-                      "expected boxed type but got %s",
-                      g_type_name (iface_cache->g_type));
-    }
-
-    return py_obj;
-}
-
-static void
-arg_foreign_to_py_cleanup (PyGIInvokeState *state,
-                           PyGIArgCache    *arg_cache,
-                           PyObject        *dummy,
-                           gpointer         data,
-                           gboolean         was_processed)
-{
-    if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
-        pygi_struct_foreign_release (
-            ( (PyGIInterfaceCache *)arg_cache)->interface_info,
-            data);
-    }
-}
-
-static gboolean
-arg_type_class_from_py_marshal (PyGIInvokeState   *state,
-                                PyGICallableCache *callable_cache,
-                                PyGIArgCache      *arg_cache,
-                                PyObject          *py_arg,
-                                GIArgument        *arg,
-                                gpointer          *cleanup_data)
-{
-    GType gtype = pyg_type_from_object (py_arg);
-
-    if (G_TYPE_IS_CLASSED (gtype)) {
-        arg->v_pointer = g_type_class_ref (gtype);
-        *cleanup_data = arg->v_pointer;
-        return TRUE;
-    } else {
-        PyErr_Format (PyExc_TypeError,
-                      "Unable to retrieve a GObject type class from \"%s\".",
-                      Py_TYPE(py_arg)->tp_name);
-        return FALSE;
-    }
-}
-
-static void
-arg_type_class_from_py_cleanup (PyGIInvokeState *state,
-                                PyGIArgCache    *arg_cache,
-                                PyObject        *py_arg,
-                                gpointer         data,
-                                gboolean         was_processed)
-{
-    if (was_processed) {
-        g_type_class_unref (data);
-    }
-}
-
-static void
-arg_struct_from_py_setup (PyGIArgCache     *arg_cache,
-                          GIInterfaceInfo  *iface_info,
-                          GITransfer        transfer)
-{
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    if (g_struct_info_is_gtype_struct ((GIStructInfo*)iface_info)) {
-        arg_cache->from_py_marshaller = arg_type_class_from_py_marshal;
-        /* Since we always add a ref in the marshalling, only unref the
-         * GTypeClass when we don't transfer ownership. */
-        if (transfer == GI_TRANSFER_NOTHING) {
-            arg_cache->from_py_cleanup = arg_type_class_from_py_cleanup;
-        }
-
-    } else {
-        arg_cache->from_py_marshaller = arg_struct_from_py_marshal_adapter;
-
-        if (g_type_is_a (iface_cache->g_type, G_TYPE_CLOSURE)) {
-            arg_cache->from_py_cleanup = arg_gclosure_from_py_cleanup;
-
-        } else if (iface_cache->g_type == G_TYPE_VALUE) {
-            arg_cache->from_py_cleanup = pygi_arg_gvalue_from_py_cleanup;
-
-        } else if (iface_cache->is_foreign) {
-            arg_cache->from_py_cleanup = arg_foreign_from_py_cleanup;
-        }
-    }
-}
-
-static void
-arg_struct_to_py_setup (PyGIArgCache     *arg_cache,
-                        GIInterfaceInfo  *iface_info,
-                        GITransfer        transfer,
-                        GIArgInfo        *arg_info)
-{
-    PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
-    /* HACK to force GtkTreeModel:iter_next() and iter_previous() vfunc implementations
-     * to receive their Gtk.TreeIter argument as pass-by-reference. We create a new
-     * PyGIBoxed wrapper which does not copy the memory and also does not free it.
-     * This is needed to hack the noted vfunc implementations so they can continue
-     * working with bug https://bugzilla.gnome.org/show_bug.cgi?id=722899
-     * being fixed. This hack should be removed once GTK+ has fixed bug
-     * https://bugzilla.gnome.org/show_bug.cgi?id=734465
-     * and we've moved to a new major version.
-     */
-    if (arg_info && g_strcmp0 (iface_cache->type_name, "Gtk.TreeIter") == 0) {
-
-        /* GICallbackInfo */
-        GIBaseInfo *info = g_base_info_get_container (arg_info);
-        if (info && g_base_info_get_type (info) == GI_INFO_TYPE_CALLBACK &&
-                (g_strcmp0 (g_base_info_get_name (info), "iter_next") == 0 ||
-                 g_strcmp0 (g_base_info_get_name (info), "iter_previous") == 0)) {
-
-            /* GITypeInfo */
-            info = g_base_info_get_container (info);
-            if (info && g_base_info_get_type (info) == GI_INFO_TYPE_TYPE &&
-                    g_type_info_get_tag ((GITypeInfo *)info) == GI_TYPE_TAG_INTERFACE) {
-
-                /* GIFieldInfo */
-                info = g_base_info_get_container (info);
-                if (info && g_base_info_get_type (info) == GI_INFO_TYPE_FIELD) {
-
-                    /* GIStructInfo */
-                    info = g_base_info_get_container (info);
-                    if (info && g_base_info_get_type (info) == GI_INFO_TYPE_STRUCT &&
-                            g_strcmp0 (g_base_info_get_name (info), "TreeModelIface") == 0) {
-                        arg_cache->to_py_marshaller = arg_boxed_to_py_marshal_pass_by_ref;
-                    }
-                }
-            }
-        }
-    }
-
-    if (arg_cache->to_py_marshaller == NULL) {
-        arg_cache->to_py_marshaller = arg_struct_to_py_marshal_adapter;
-    }
-
-    if (iface_cache->is_foreign)
-        arg_cache->to_py_cleanup = arg_foreign_to_py_cleanup;
-}
-
-PyGIArgCache *
-pygi_arg_struct_new_from_info (GITypeInfo      *type_info,
-                               GIArgInfo       *arg_info,
-                               GITransfer       transfer,
-                               PyGIDirection    direction,
-                               GIInterfaceInfo *iface_info)
-{
-    PyGIArgCache *cache = NULL;
-    PyGIInterfaceCache *iface_cache;
-
-    cache = pygi_arg_interface_new_from_info (type_info,
-                                              arg_info,
-                                              transfer,
-                                              direction,
-                                              iface_info);
-    if (cache == NULL)
-        return NULL;
-
-    iface_cache = (PyGIInterfaceCache *)cache;
-    iface_cache->is_foreign = (g_base_info_get_type ((GIBaseInfo *) iface_info) == GI_INFO_TYPE_STRUCT) &&
-                              (g_struct_info_is_foreign ((GIStructInfo*) iface_info));
-
-    if (direction & PYGI_DIRECTION_FROM_PYTHON) {
-        arg_struct_from_py_setup (cache, iface_info, transfer);
-    }
-
-    if (direction & PYGI_DIRECTION_TO_PYTHON) {
-        arg_struct_to_py_setup (cache, iface_info, transfer, arg_info);
-    }
-
-    return cache;
-}
diff --git a/gi/pygi-struct-marshal.h b/gi/pygi-struct-marshal.h
deleted file mode 100644 (file)
index b2846df..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
- * Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_STRUCT_MARSHAL_H__
-#define __PYGI_STRUCT_MARSHAL_H__
-
-#include <girepository.h>
-#include "pygi-cache.h"
-
-G_BEGIN_DECLS
-
-PyGIArgCache *pygi_arg_struct_new_from_info  (GITypeInfo      *type_info,
-                                              GIArgInfo       *arg_info,   /* may be null */
-                                              GITransfer       transfer,
-                                              PyGIDirection    direction,
-                                              GIInterfaceInfo *iface_info);
-
-
-gboolean pygi_arg_gvalue_from_py_marshal     (PyObject        *py_arg, /*in*/
-                                              GIArgument      *arg,    /*out*/
-                                              GITransfer       transfer,
-                                              gboolean         is_allocated);
-
-gboolean pygi_arg_struct_from_py_marshal     (PyObject        *py_arg,
-                                              GIArgument      *arg,
-                                              const gchar     *arg_name,
-                                              GIBaseInfo      *interface_info,
-                                              GType            g_type,
-                                              PyObject        *py_type,
-                                              GITransfer       transfer,
-                                              gboolean         is_allocated,
-                                              gboolean         is_foreign,
-                                              gboolean         is_pointer);
-
-PyObject *pygi_arg_struct_to_py_marshal      (GIArgument      *arg,
-                                              GIInterfaceInfo *interface_info,
-                                              GType            g_type,
-                                              PyObject        *py_type,
-                                              GITransfer       transfer,
-                                              gboolean         is_allocated,
-                                              gboolean         is_foreign);
-
-/* Needed for hack in pygi-arg-garray.c */
-void pygi_arg_gvalue_from_py_cleanup         (PyGIInvokeState *state,
-                                              PyGIArgCache    *arg_cache,
-                                              PyObject        *py_arg,
-                                              gpointer         data,
-                                              gboolean         was_processed);
-
-G_END_DECLS
-
-#endif /*__PYGI_STRUCT_MARSHAL_H__*/
index 4d5b541..c2e1f4d 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygi-struct.h"
-#include "pygi-foreign.h"
-#include "pygi-info.h"
-#include "pygi-type.h"
-#include "pygtype.h"
-#include "pygpointer.h"
+#include "pygi-private.h"
 
+#include <pygobject.h>
 #include <girepository.h>
 #include <pyglib-python-compat.h>
 
-
-static GIBaseInfo *
-_struct_get_info (PyObject *self)
-{
-    PyObject *py_info;
-    GIBaseInfo *info = NULL;
-
-    py_info = PyObject_GetAttrString (self, "__info__");
-    if (py_info == NULL) {
-        return NULL;
-    }
-    if (!PyObject_TypeCheck (py_info, &PyGIStructInfo_Type) &&
-            !PyObject_TypeCheck (py_info, &PyGIUnionInfo_Type)) {
-        PyErr_Format (PyExc_TypeError, "attribute '__info__' must be %s or %s, not %s",
-                      PyGIStructInfo_Type.tp_name,
-                      PyGIUnionInfo_Type.tp_name,
-                      Py_TYPE(py_info)->tp_name);
-        goto out;
-    }
-
-    info = ( (PyGIBaseInfo *) py_info)->info;
-    g_base_info_ref (info);
-
-out:
-    Py_DECREF (py_info);
-
-    return info;
-}
-
 static void
 _struct_dealloc (PyGIStruct *self)
 {
-    GIBaseInfo *info = _struct_get_info ( (PyObject *) self );
+    GIBaseInfo *info = _pygi_object_get_gi_info (
+                           (PyObject *) self,
+                           &PyGIStructInfo_Type);
+
+    PyObject_GC_UnTrack ( (PyObject *) self);
+
+    PyObject_ClearWeakRefs ( (PyObject *) self);
 
     if (info != NULL && g_struct_info_is_foreign ( (GIStructInfo *) info)) {
-        pygi_struct_foreign_release (info, pyg_pointer_get_ptr (self));
+        pygi_struct_foreign_release (info, ( (PyGPointer *) self)->pointer);
     } else if (self->free_on_dealloc) {
-        g_free (pyg_pointer_get_ptr (self));
+        g_free ( ( (PyGPointer *) self)->pointer);
     }
 
-    if (info != NULL) {
-        g_base_info_unref (info);
-    }
+    g_base_info_unref (info);
 
-    Py_TYPE (self)->tp_free ((PyObject *)self);
+    Py_TYPE( (PyGPointer *) self )->tp_free ( (PyObject *) self);
 }
 
 static PyObject *
@@ -92,7 +65,7 @@ _struct_new (PyTypeObject *type,
         return NULL;
     }
 
-    info = _struct_get_info ( (PyObject *) type );
+    info = _pygi_object_get_gi_info ( (PyObject *) type, &PyGIStructInfo_Type);
     if (info == NULL) {
         if (PyErr_ExceptionMatches (PyExc_AttributeError)) {
             PyErr_Format (PyExc_TypeError, "missing introspection information");
@@ -101,13 +74,6 @@ _struct_new (PyTypeObject *type,
     }
 
     size = g_struct_info_get_size ( (GIStructInfo *) info);
-    if (size == 0) {
-        PyErr_Format (PyExc_TypeError,
-            "struct cannot be created directly; try using a constructor, see: help(%s.%s)",
-            g_base_info_get_namespace (info),
-            g_base_info_get_name (info));
-        goto out;
-    }
     pointer = g_try_malloc0 (size);
     if (pointer == NULL) {
         PyErr_NoMemory();
@@ -136,38 +102,6 @@ _struct_init (PyObject *self,
 
 PYGLIB_DEFINE_TYPE("gi.Struct", PyGIStruct_Type, PyGIStruct);
 
-
-PyObject *
-_pygi_struct_new_from_g_type (GType g_type,
-                              gpointer      pointer,
-                              gboolean      free_on_dealloc)
-{
-    PyGIStruct *self;
-    PyTypeObject *type;
-
-    type = (PyTypeObject *)pygi_type_import_by_g_type (g_type);
-
-    if (!type)
-        type = (PyTypeObject *)&PyGIStruct_Type; /* fallback */
-
-    if (!PyType_IsSubtype (type, &PyGIStruct_Type)) {
-        PyErr_SetString (PyExc_TypeError, "must be a subtype of gi.Struct");
-        return NULL;
-    }
-
-    self = (PyGIStruct *) type->tp_alloc (type, 0);
-    if (self == NULL) {
-        return NULL;
-    }
-
-    pyg_pointer_set_ptr (self, pointer);
-    ( (PyGPointer *) self)->gtype = g_type;
-    self->free_on_dealloc = free_on_dealloc;
-
-    return (PyObject *) self;
-}
-
-
 PyObject *
 _pygi_struct_new (PyTypeObject *type,
                   gpointer      pointer,
@@ -188,35 +122,13 @@ _pygi_struct_new (PyTypeObject *type,
 
     g_type = pyg_type_from_object ( (PyObject *) type);
 
-    pyg_pointer_set_ptr (self, pointer);
     ( (PyGPointer *) self)->gtype = g_type;
+    ( (PyGPointer *) self)->pointer = pointer;
     self->free_on_dealloc = free_on_dealloc;
 
     return (PyObject *) self;
 }
 
-static PyObject *
-_struct_repr(PyGIStruct *self)
-{
-    PyObject* repr;
-    GIBaseInfo *info;
-    PyGPointer *pointer = (PyGPointer *)self;
-
-    info = _struct_get_info ((PyObject *)self);
-    if (info == NULL)
-        return NULL;
-
-    repr = PYGLIB_PyUnicode_FromFormat ("<%s.%s object at %p (%s at %p)>",
-                                        g_base_info_get_namespace (info),
-                                        g_base_info_get_name (info),
-                                        self, g_type_name (pointer->gtype),
-                                        pointer->pointer);
-
-    g_base_info_unref (info);
-
-    return repr;
-}
-
 void
 _pygi_struct_register_types (PyObject *m)
 {
@@ -226,7 +138,6 @@ _pygi_struct_register_types (PyObject *m)
     PyGIStruct_Type.tp_init = (initproc) _struct_init;
     PyGIStruct_Type.tp_dealloc = (destructor) _struct_dealloc;
     PyGIStruct_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
-    PyGIStruct_Type.tp_repr = (reprfunc)_struct_repr;
 
     if (PyType_Ready (&PyGIStruct_Type))
         return;
index 8796a5e..963d05a 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_STRUCT_H__
 #define __PYGI_STRUCT_H__
 
 #include <Python.h>
-#include <pygobject-internal.h>
 
 G_BEGIN_DECLS
 
-typedef struct {
-    PyGPointer base;
-    gboolean free_on_dealloc;
-} PyGIStruct;
-
 extern PyTypeObject PyGIStruct_Type;
 
 PyObject *
@@ -37,11 +33,6 @@ _pygi_struct_new (PyTypeObject *type,
                   gpointer      pointer,
                   gboolean      free_on_dealloc);
 
-PyObject *
-_pygi_struct_new_from_g_type (GType g_type,
-                              gpointer      pointer,
-                              gboolean      free_on_dealloc);
-
 void _pygi_struct_register_types (PyObject *m);
 
 G_END_DECLS
index 06d773a..129ea98 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
-#include "pygtype.h"
-#include "pygi-type.h"
-
-#include <pyglib-python-compat.h>
+#include "pygi-private.h"
 
 
 PyObject *
@@ -51,7 +50,7 @@ _pygi_type_import_by_name (const char *namespace_,
 }
 
 PyObject *
-pygi_type_import_by_g_type (GType g_type)
+pygi_type_import_by_g_type_real (GType g_type)
 {
     GIRepository *repository;
     GIBaseInfo *info;
@@ -90,7 +89,7 @@ _pygi_type_get_from_g_type (GType g_type)
 
     py_type = PyObject_GetAttrString (py_g_type, "pytype");
     if (py_type == Py_None) {
-        py_type = pygi_type_import_by_g_type (g_type);
+        py_type = pygi_type_import_by_g_type_real (g_type);
     }
 
     Py_DECREF (py_g_type);
index 85f7551..bb43d19 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
  */
 
 #ifndef __PYGI_TYPE_H__
 #define __PYGI_TYPE_H__
 
 #include <Python.h>
-#include <girepository.h>
 
 G_BEGIN_DECLS
 
 /* Public */
 
-PyObject *pygi_type_import_by_g_type (GType g_type);
+PyObject *pygi_type_import_by_g_type_real (GType g_type);
 
 
 /* Private */
@@ -38,6 +39,7 @@ PyObject *_pygi_type_import_by_gi_info (GIBaseInfo *info);
 
 PyObject *_pygi_type_get_from_g_type (GType g_type);
 
+
 G_END_DECLS
 
 #endif /* __PYGI_TYPE_H__ */
diff --git a/gi/pygi-util.c b/gi/pygi-util.c
deleted file mode 100644 (file)
index 1d9201e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *
- *   gobjectmodule.c: wrapper for the gobject library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pygi-util.h"
-
-PyObject *
-pyg_integer_richcompare(PyObject *v, PyObject *w, int op)
-{
-    PyObject *result;
-    gboolean t;
-
-    switch (op) {
-    case Py_EQ: t = PYGLIB_PyLong_AS_LONG(v) == PYGLIB_PyLong_AS_LONG(w); break;
-    case Py_NE: t = PYGLIB_PyLong_AS_LONG(v) != PYGLIB_PyLong_AS_LONG(w); break;
-    case Py_LE: t = PYGLIB_PyLong_AS_LONG(v) <= PYGLIB_PyLong_AS_LONG(w); break;
-    case Py_GE: t = PYGLIB_PyLong_AS_LONG(v) >= PYGLIB_PyLong_AS_LONG(w); break;
-    case Py_LT: t = PYGLIB_PyLong_AS_LONG(v) <  PYGLIB_PyLong_AS_LONG(w); break;
-    case Py_GT: t = PYGLIB_PyLong_AS_LONG(v) >  PYGLIB_PyLong_AS_LONG(w); break;
-    default: g_assert_not_reached();
-    }
-
-    result = t ? Py_True : Py_False;
-    Py_INCREF(result);
-    return result;
-}
diff --git a/gi/pygi-value.c b/gi/pygi-value.c
deleted file mode 100644 (file)
index 443597c..0000000
+++ /dev/null
@@ -1,997 +0,0 @@
-
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <Python.h>
-#include "pygi-value.h"
-#include "pygi-struct.h"
-#include "pyglib-python-compat.h"
-#include "pygobject-object.h"
-#include "pygtype.h"
-#include "pygenum.h"
-#include "pygpointer.h"
-#include "pygboxed.h"
-#include "pygflags.h"
-#include "pygparamspec.h"
-
-GIArgument
-_pygi_argument_from_g_value(const GValue *value,
-                            GITypeInfo *type_info)
-{
-    GIArgument arg = { 0, };
-
-    GITypeTag type_tag = g_type_info_get_tag (type_info);
-
-    /* For the long handling: long can be equivalent to
-       int32 or int64, depending on the architecture, but
-       gi doesn't tell us (and same for ulong)
-    */
-    switch (type_tag) {
-        case GI_TYPE_TAG_BOOLEAN:
-            arg.v_boolean = g_value_get_boolean (value);
-            break;
-        case GI_TYPE_TAG_INT8:
-            arg.v_int8 = g_value_get_schar (value);
-            break;
-        case GI_TYPE_TAG_INT16:
-        case GI_TYPE_TAG_INT32:
-           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_LONG))
-               arg.v_int = g_value_get_long (value);
-           else
-               arg.v_int = g_value_get_int (value);
-            break;
-        case GI_TYPE_TAG_INT64:
-           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_LONG))
-               arg.v_int64 = g_value_get_long (value);
-           else
-               arg.v_int64 = g_value_get_int64 (value);
-            break;
-        case GI_TYPE_TAG_UINT8:
-            arg.v_uint8 = g_value_get_uchar (value);
-            break;
-        case GI_TYPE_TAG_UINT16:
-        case GI_TYPE_TAG_UINT32:
-           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_ULONG))
-               arg.v_uint = g_value_get_ulong (value);
-           else
-               arg.v_uint = g_value_get_uint (value);
-            break;
-        case GI_TYPE_TAG_UINT64:
-           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_ULONG))
-               arg.v_uint64 = g_value_get_ulong (value);
-           else
-               arg.v_uint64 = g_value_get_uint64 (value);
-            break;
-        case GI_TYPE_TAG_UNICHAR:
-            arg.v_uint32 = g_value_get_schar (value);
-            break;
-        case GI_TYPE_TAG_FLOAT:
-            arg.v_float = g_value_get_float (value);
-            break;
-        case GI_TYPE_TAG_DOUBLE:
-            arg.v_double = g_value_get_double (value);
-            break;
-        case GI_TYPE_TAG_GTYPE:
-            arg.v_long = g_value_get_gtype (value);
-            break;
-        case GI_TYPE_TAG_UTF8:
-        case GI_TYPE_TAG_FILENAME:
-            /* Callers are responsible for ensuring the GValue stays alive
-             * long enough for the string to be copied. */
-            arg.v_string = (char *)g_value_get_string (value);
-            break;
-        case GI_TYPE_TAG_GLIST:
-        case GI_TYPE_TAG_GSLIST:
-        case GI_TYPE_TAG_ARRAY:
-        case GI_TYPE_TAG_GHASH:
-            if (G_VALUE_HOLDS_BOXED (value))
-                arg.v_pointer = g_value_get_boxed (value);
-            else
-                /* e. g. GSettings::change-event */
-                arg.v_pointer = g_value_get_pointer (value);
-            break;
-        case GI_TYPE_TAG_INTERFACE:
-        {
-            GIBaseInfo *info;
-            GIInfoType info_type;
-
-            info = g_type_info_get_interface (type_info);
-            info_type = g_base_info_get_type (info);
-
-            g_base_info_unref (info);
-
-            switch (info_type) {
-                case GI_INFO_TYPE_FLAGS:
-                    arg.v_uint = g_value_get_flags (value);
-                    break;
-                case GI_INFO_TYPE_ENUM:
-                    arg.v_int = g_value_get_enum (value);
-                    break;
-                case GI_INFO_TYPE_INTERFACE:
-                case GI_INFO_TYPE_OBJECT:
-                    if (G_VALUE_HOLDS_PARAM (value))
-                      arg.v_pointer = g_value_get_param (value);
-                    else
-                      arg.v_pointer = g_value_get_object (value);
-                    break;
-                case GI_INFO_TYPE_BOXED:
-                case GI_INFO_TYPE_STRUCT:
-                case GI_INFO_TYPE_UNION:
-                    if (G_VALUE_HOLDS (value, G_TYPE_BOXED)) {
-                        arg.v_pointer = g_value_get_boxed (value);
-                    } else if (G_VALUE_HOLDS (value, G_TYPE_VARIANT)) {
-                        arg.v_pointer = g_value_get_variant (value);
-                    } else if (G_VALUE_HOLDS (value, G_TYPE_POINTER)) {
-                        arg.v_pointer = g_value_get_pointer (value);
-                    } else {
-                        PyErr_Format (PyExc_NotImplementedError,
-                                      "Converting GValue's of type '%s' is not implemented.",
-                                      g_type_name (G_VALUE_TYPE (value)));
-                    }
-                    break;
-                default:
-                    PyErr_Format (PyExc_NotImplementedError,
-                                  "Converting GValue's of type '%s' is not implemented.",
-                                  g_info_type_to_string (info_type));
-                    break;
-            }
-            break;
-        }
-        case GI_TYPE_TAG_ERROR:
-            arg.v_pointer = g_value_get_boxed (value);
-            break;
-        case GI_TYPE_TAG_VOID:
-            arg.v_pointer = g_value_get_pointer (value);
-            break;
-        default:
-            break;
-    }
-
-    return arg;
-}
-
-
-/* Ignore g_value_array deprecations. Although they are deprecated,
- * we still need to support the marshaling of them in PyGObject.
- */
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-
-static int
-pyg_value_array_from_pyobject(GValue *value,
-                              PyObject *obj,
-                              const GParamSpecValueArray *pspec)
-{
-    Py_ssize_t seq_len;
-    GValueArray *value_array;
-    guint len, i;
-
-    seq_len = PySequence_Length(obj);
-    if (seq_len == -1) {
-        PyErr_Clear();
-        return -1;
-    }
-    len = (guint)seq_len;
-
-    if (pspec && pspec->fixed_n_elements > 0 && len != pspec->fixed_n_elements)
-        return -1;
-
-    value_array = g_value_array_new(len);
-
-    for (i = 0; i < len; ++i) {
-        PyObject *item = PySequence_GetItem(obj, i);
-        GType type;
-        GValue item_value = { 0, };
-        int status;
-
-        if (! item) {
-            PyErr_Clear();
-            g_value_array_free(value_array);
-            return -1;
-        }
-
-        if (pspec && pspec->element_spec)
-            type = G_PARAM_SPEC_VALUE_TYPE(pspec->element_spec);
-        else if (item == Py_None)
-            type = G_TYPE_POINTER; /* store None as NULL */
-        else {
-            type = pyg_type_from_object((PyObject*)Py_TYPE(item));
-            if (! type) {
-                PyErr_Clear();
-                g_value_array_free(value_array);
-                Py_DECREF(item);
-                return -1;
-            }
-        }
-
-        g_value_init(&item_value, type);
-        status = (pspec && pspec->element_spec)
-                 ? pyg_param_gvalue_from_pyobject(&item_value, item, pspec->element_spec)
-                 : pyg_value_from_pyobject(&item_value, item);
-        Py_DECREF(item);
-
-        if (status == -1) {
-            g_value_array_free(value_array);
-            g_value_unset(&item_value);
-            return -1;
-        }
-
-        g_value_array_append(value_array, &item_value);
-        g_value_unset(&item_value);
-    }
-
-    g_value_take_boxed(value, value_array);
-    return 0;
-}
-
-G_GNUC_END_IGNORE_DEPRECATIONS
-
-static int
-pyg_array_from_pyobject(GValue *value,
-                        PyObject *obj)
-{
-    int len;
-    GArray *array;
-    int i;
-
-    len = PySequence_Length(obj);
-    if (len == -1) {
-        PyErr_Clear();
-        return -1;
-    }
-
-    array = g_array_new(FALSE, TRUE, sizeof(GValue));
-
-    for (i = 0; i < len; ++i) {
-        PyObject *item = PySequence_GetItem(obj, i);
-        GType type;
-        GValue item_value = { 0, };
-        int status;
-
-        if (! item) {
-            PyErr_Clear();
-            g_array_free(array, FALSE);
-            return -1;
-        }
-
-        if (item == Py_None)
-            type = G_TYPE_POINTER; /* store None as NULL */
-        else {
-            type = pyg_type_from_object((PyObject*)Py_TYPE(item));
-            if (! type) {
-                PyErr_Clear();
-                g_array_free(array, FALSE);
-                Py_DECREF(item);
-                return -1;
-            }
-        }
-
-        g_value_init(&item_value, type);
-        status = pyg_value_from_pyobject(&item_value, item);
-        Py_DECREF(item);
-
-        if (status == -1) {
-            g_array_free(array, FALSE);
-            g_value_unset(&item_value);
-            return -1;
-        }
-
-        g_array_append_val(array, item_value);
-    }
-
-    g_value_take_boxed(value, array);
-    return 0;
-}
-
-/**
- * pyg_value_from_pyobject_with_error:
- * @value: the GValue object to store the converted value in.
- * @obj: the Python object to convert.
- *
- * This function converts a Python object and stores the result in a
- * GValue.  The GValue must be initialised in advance with
- * g_value_init().  If the Python object can't be converted to the
- * type of the GValue, then an error is returned.
- *
- * Returns: 0 on success, -1 on error.
- */
-int
-pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj)
-{
-    PyObject *tmp;
-    GType value_type = G_VALUE_TYPE(value);
-
-    switch (G_TYPE_FUNDAMENTAL(value_type)) {
-    case G_TYPE_INTERFACE:
-        /* we only handle interface types that have a GObject prereq */
-        if (g_type_is_a(value_type, G_TYPE_OBJECT)) {
-            if (obj == Py_None)
-                g_value_set_object(value, NULL);
-            else {
-                if (!PyObject_TypeCheck(obj, &PyGObject_Type)) {
-                    PyErr_SetString(PyExc_TypeError, "GObject is required");
-                    return -1;
-                }
-                if (!G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
-                        value_type)) {
-                    PyErr_SetString(PyExc_TypeError, "Invalid GObject type for assignment");
-                    return -1;
-                }
-                g_value_set_object(value, pygobject_get(obj));
-            }
-        } else {
-            PyErr_SetString(PyExc_TypeError, "Unsupported conversion");
-            return -1;
-        }
-        break;
-    case G_TYPE_CHAR:
-        if (PYGLIB_PyLong_Check(obj)) {
-            glong val;
-            val = PYGLIB_PyLong_AsLong(obj);
-            if (val >= -128 && val <= 127)
-                g_value_set_schar(value, (gchar) val);
-            else
-                return -1;
-        }
-#if PY_VERSION_HEX < 0x03000000
-        else if (PyString_Check(obj)) {
-            g_value_set_schar(value, PyString_AsString(obj)[0]);
-        }
-#endif
-        else if (PyUnicode_Check(obj)) {
-            tmp = PyUnicode_AsUTF8String(obj);
-            g_value_set_schar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
-            Py_DECREF(tmp);
-        } else {
-            PyErr_SetString(PyExc_TypeError, "Cannot convert to TYPE_CHAR");
-            return -1;
-        }
-
-        break;
-    case G_TYPE_UCHAR:
-        if (PYGLIB_PyLong_Check(obj)) {
-            glong val;
-            val = PYGLIB_PyLong_AsLong(obj);
-            if (val >= 0 && val <= 255)
-                g_value_set_uchar(value, (guchar) val);
-            else
-                return -1;
-#if PY_VERSION_HEX < 0x03000000
-        } else if (PyString_Check(obj)) {
-            g_value_set_uchar(value, PyString_AsString(obj)[0]);
-#endif
-        } else if (PyUnicode_Check(obj)) {
-            tmp = PyUnicode_AsUTF8String(obj);
-            g_value_set_uchar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
-            Py_DECREF(tmp);
-        } else {
-            PyErr_Clear();
-            return -1;
-        }
-        break;
-    case G_TYPE_BOOLEAN:
-        g_value_set_boolean(value, PyObject_IsTrue(obj));
-        break;
-    case G_TYPE_INT:
-    {
-        glong val = PYGLIB_PyLong_AsLong(obj);
-        if (val == -1 && PyErr_Occurred ())
-            return -1;
-        if (val > G_MAXINT || val < G_MININT) {
-            PyErr_SetString(PyExc_OverflowError, "out of range for int property");
-            return -1;
-        }
-        g_value_set_int(value, (gint)val);
-        break;
-    }
-    case G_TYPE_UINT:
-    {
-        if (PYGLIB_PyLong_Check(obj)) {
-            gulong val;
-
-            /* check that number is not negative */
-            if (PyLong_AsLongLong(obj) < 0)
-                return -1;
-
-            val = PyLong_AsUnsignedLong(obj);
-            if (val <= G_MAXUINT)
-                g_value_set_uint(value, (guint) val);
-            else
-                return -1;
-        } else {
-            g_value_set_uint(value, PyLong_AsUnsignedLong(obj));
-        }
-    }
-    break;
-    case G_TYPE_LONG:
-        g_value_set_long(value, PYGLIB_PyLong_AsLong(obj));
-        break;
-    case G_TYPE_ULONG:
-#if PY_VERSION_HEX < 0x03000000
-        if (PyInt_Check(obj)) {
-            long val;
-
-            val = PYGLIB_PyLong_AsLong(obj);
-            if (val < 0) {
-                PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
-                return -1;
-            }
-            g_value_set_ulong(value, (gulong)val);
-        } else
-#endif
-            if (PyLong_Check(obj))
-                g_value_set_ulong(value, PyLong_AsUnsignedLong(obj));
-            else
-                return -1;
-        break;
-    case G_TYPE_INT64:
-        g_value_set_int64(value, PyLong_AsLongLong(obj));
-        break;
-    case G_TYPE_UINT64:
-#if PY_VERSION_HEX < 0x03000000
-        if (PyInt_Check(obj)) {
-            long v = PyInt_AsLong(obj);
-            if (v < 0) {
-                PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
-                return -1;
-            }
-            g_value_set_uint64(value, v);
-        } else
-#endif
-            if (PyLong_Check(obj))
-                g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
-            else
-                return -1;
-        break;
-    case G_TYPE_ENUM:
-    {
-        gint val = 0;
-        if (pyg_enum_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
-            return -1;
-        }
-        g_value_set_enum(value, val);
-    }
-    break;
-    case G_TYPE_FLAGS:
-    {
-        guint val = 0;
-        if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
-            return -1;
-        }
-        g_value_set_flags(value, val);
-    }
-    break;
-    case G_TYPE_FLOAT:
-        g_value_set_float(value, PyFloat_AsDouble(obj));
-        break;
-    case G_TYPE_DOUBLE:
-        g_value_set_double(value, PyFloat_AsDouble(obj));
-        break;
-    case G_TYPE_STRING:
-        if (obj == Py_None) {
-            g_value_set_string(value, NULL);
-        } else {
-            PyObject* tmp_str = PyObject_Str(obj);
-            if (tmp_str == NULL) {
-                PyErr_Clear();
-                if (PyUnicode_Check(obj)) {
-                    tmp = PyUnicode_AsUTF8String(obj);
-                    g_value_set_string(value, PYGLIB_PyBytes_AsString(tmp));
-                    Py_DECREF(tmp);
-                } else {
-                    PyErr_SetString(PyExc_TypeError, "Expected string");
-                    return -1;
-                }
-            } else {
-#if PY_VERSION_HEX < 0x03000000
-                g_value_set_string(value, PyString_AsString(tmp_str));
-#else
-                tmp = PyUnicode_AsUTF8String(tmp_str);
-                g_value_set_string(value, PyBytes_AsString(tmp));
-                Py_DECREF(tmp);
-#endif
-            }
-            Py_XDECREF(tmp_str);
-        }
-        break;
-    case G_TYPE_POINTER:
-        if (obj == Py_None)
-            g_value_set_pointer(value, NULL);
-        else if (PyObject_TypeCheck(obj, &PyGPointer_Type) &&
-                G_VALUE_HOLDS(value, ((PyGPointer *)obj)->gtype))
-            g_value_set_pointer(value, pyg_pointer_get(obj, gpointer));
-        else if (PYGLIB_CPointer_Check(obj))
-            g_value_set_pointer(value, PYGLIB_CPointer_GetPointer(obj, NULL));
-        else if (G_VALUE_HOLDS_GTYPE (value))
-            g_value_set_gtype (value, pyg_type_from_object (obj));
-        else {
-            PyErr_SetString(PyExc_TypeError, "Expected pointer");
-            return -1;
-        }
-        break;
-    case G_TYPE_BOXED: {
-        PyGTypeMarshal *bm;
-        gboolean holds_value_array;
-
-        G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-        holds_value_array = G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY);
-        G_GNUC_END_IGNORE_DEPRECATIONS
-
-        if (obj == Py_None)
-            g_value_set_boxed(value, NULL);
-        else if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT))
-            g_value_set_boxed(value, obj);
-        else if (PyObject_TypeCheck(obj, &PyGBoxed_Type) &&
-                G_VALUE_HOLDS(value, ((PyGBoxed *)obj)->gtype))
-            g_value_set_boxed(value, pyg_boxed_get(obj, gpointer));
-        else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
-            GType type;
-            GValue *n_value;
-
-            type = pyg_type_from_object((PyObject*)Py_TYPE(obj));
-            if (G_UNLIKELY (! type)) {
-                return -1;
-            }
-            n_value = g_new0 (GValue, 1);
-            g_value_init (n_value, type);
-            g_value_take_boxed (value, n_value);
-            return pyg_value_from_pyobject_with_error (n_value, obj);
-        }
-        else if (PySequence_Check(obj) && holds_value_array)
-            return pyg_value_array_from_pyobject(value, obj, NULL);
-
-        else if (PySequence_Check(obj) &&
-                G_VALUE_HOLDS(value, G_TYPE_ARRAY))
-            return pyg_array_from_pyobject(value, obj);
-        else if (PYGLIB_PyUnicode_Check(obj) &&
-                G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
-            GString *string;
-            char *buffer;
-            Py_ssize_t len;
-            if (PYGLIB_PyUnicode_AsStringAndSize(obj, &buffer, &len))
-                return -1;
-            string = g_string_new_len(buffer, len);
-            g_value_set_boxed(value, string);
-            g_string_free (string, TRUE);
-            break;
-        }
-        else if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL)
-            return bm->tovalue(value, obj);
-        else if (PYGLIB_CPointer_Check(obj))
-            g_value_set_boxed(value, PYGLIB_CPointer_GetPointer(obj, NULL));
-        else {
-            PyErr_SetString(PyExc_TypeError, "Expected Boxed");
-            return -1;
-        }
-        break;
-    }
-    case G_TYPE_PARAM:
-        /* we need to support both the wrapped _gi.GParamSpec and the GI
-         * GObject.ParamSpec */
-        if (G_IS_PARAM_SPEC (pygobject_get (obj)))
-            g_value_set_param(value, G_PARAM_SPEC (pygobject_get (obj)));
-        else if (pyg_param_spec_check (obj))
-            g_value_set_param(value, PYGLIB_CPointer_GetPointer(obj, NULL));
-        else {
-            PyErr_SetString(PyExc_TypeError, "Expected ParamSpec");
-            return -1;
-        }
-        break;
-    case G_TYPE_OBJECT:
-        if (obj == Py_None) {
-            g_value_set_object(value, NULL);
-        } else if (PyObject_TypeCheck(obj, &PyGObject_Type) &&
-                G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
-                        G_VALUE_TYPE(value))) {
-            g_value_set_object(value, pygobject_get(obj));
-        } else {
-            PyErr_SetString(PyExc_TypeError, "Expected GObject");
-            return -1;
-        }
-        break;
-    case G_TYPE_VARIANT:
-    {
-        if (obj == Py_None)
-            g_value_set_variant(value, NULL);
-        else if (pyg_type_from_object_strict(obj, FALSE) == G_TYPE_VARIANT)
-            g_value_set_variant(value, pyg_boxed_get(obj, GVariant));
-        else {
-            PyErr_SetString(PyExc_TypeError, "Expected Variant");
-            return -1;
-        }
-        break;
-    }
-    default:
-    {
-        PyGTypeMarshal *bm;
-        if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL) {
-            return bm->tovalue(value, obj);
-        } else {
-            PyErr_SetString(PyExc_TypeError, "Unknown value type");
-            return -1;
-        }
-        break;
-    }
-    }
-
-    /* If an error occurred, unset the GValue but don't clear the Python error. */
-    if (PyErr_Occurred()) {
-        g_value_unset(value);
-        return -1;
-    }
-
-    return 0;
-}
-
-/**
- * pyg_value_from_pyobject:
- * @value: the GValue object to store the converted value in.
- * @obj: the Python object to convert.
- *
- * Same basic function as pyg_value_from_pyobject_with_error but clears
- * any Python errors before returning.
- *
- * Returns: 0 on success, -1 on error.
- */
-int
-pyg_value_from_pyobject(GValue *value, PyObject *obj)
-{
-    int res = pyg_value_from_pyobject_with_error (value, obj);
-
-    if (PyErr_Occurred()) {
-        PyErr_Clear();
-        return -1;
-    }
-    return res;
-}
-
-/**
- * pygi_value_to_py_basic_type:
- * @value: the GValue object.
- *
- * This function creates/returns a Python wrapper object that
- * represents the GValue passed as an argument limited to supporting basic types
- * like ints, bools, and strings.
- *
- * Returns: a PyObject representing the value.
- */
-PyObject *
-pygi_value_to_py_basic_type (const GValue *value, GType fundamental)
-{
-    switch (fundamental) {
-    case G_TYPE_CHAR:
-        return PYGLIB_PyLong_FromLong (g_value_get_schar (value));
-
-    case G_TYPE_UCHAR:
-        return PYGLIB_PyLong_FromLong (g_value_get_uchar (value));
-
-    case G_TYPE_BOOLEAN: {
-        return PyBool_FromLong(g_value_get_boolean(value));
-    }
-    case G_TYPE_INT:
-        return PYGLIB_PyLong_FromLong(g_value_get_int(value));
-    case G_TYPE_UINT:
-    {
-        /* in Python, the Int object is backed by a long.  If a
-              long can hold the whole value of an unsigned int, use
-              an Int.  Otherwise, use a Long object to avoid overflow.
-              This matches the ULongArg behavior in codegen/argtypes.h */
-#if (G_MAXUINT <= G_MAXLONG)
-        return PYGLIB_PyLong_FromLong((glong) g_value_get_uint(value));
-#else
-        return PyLong_FromUnsignedLong((gulong) g_value_get_uint(value));
-#endif
-    }
-    case G_TYPE_LONG:
-        return PYGLIB_PyLong_FromLong(g_value_get_long(value));
-    case G_TYPE_ULONG:
-    {
-        gulong val = g_value_get_ulong(value);
-
-        if (val <= G_MAXLONG)
-            return PYGLIB_PyLong_FromLong((glong) val);
-        else
-            return PyLong_FromUnsignedLong(val);
-    }
-    case G_TYPE_INT64:
-    {
-        gint64 val = g_value_get_int64(value);
-
-        if (G_MINLONG <= val && val <= G_MAXLONG)
-            return PYGLIB_PyLong_FromLong((glong) val);
-        else
-            return PyLong_FromLongLong(val);
-    }
-    case G_TYPE_UINT64:
-    {
-        guint64 val = g_value_get_uint64(value);
-
-        if (val <= G_MAXLONG)
-            return PYGLIB_PyLong_FromLong((glong) val);
-        else
-            return PyLong_FromUnsignedLongLong(val);
-    }
-    case G_TYPE_ENUM:
-        return pyg_enum_from_gtype(G_VALUE_TYPE(value), g_value_get_enum(value));
-    case G_TYPE_FLAGS:
-        return pyg_flags_from_gtype(G_VALUE_TYPE(value), g_value_get_flags(value));
-    case G_TYPE_FLOAT:
-        return PyFloat_FromDouble(g_value_get_float(value));
-    case G_TYPE_DOUBLE:
-        return PyFloat_FromDouble(g_value_get_double(value));
-    case G_TYPE_STRING:
-    {
-        const gchar *str = g_value_get_string(value);
-
-        if (str)
-            return PYGLIB_PyUnicode_FromString(str);
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    default:
-        return NULL;
-    }
-}
-
-/**
- * pygi_value_to_py_structured_type:
- * @value: the GValue object.
- * @copy_boxed: true if boxed values should be copied.
- *
- * This function creates/returns a Python wrapper object that
- * represents the GValue passed as an argument.
- *
- * Returns: a PyObject representing the value.
- */
-PyObject *
-pygi_value_to_py_structured_type (const GValue *value, GType fundamental, gboolean copy_boxed)
-{
-    switch (fundamental) {
-    case G_TYPE_INTERFACE:
-        if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT))
-            return pygobject_new(g_value_get_object(value));
-        else
-            break;
-
-    case G_TYPE_POINTER:
-        if (G_VALUE_HOLDS_GTYPE (value))
-            return pyg_type_wrapper_new (g_value_get_gtype (value));
-        else
-            return pyg_pointer_new(G_VALUE_TYPE(value),
-                    g_value_get_pointer(value));
-    case G_TYPE_BOXED: {
-        PyGTypeMarshal *bm;
-        gboolean holds_value_array;
-
-        G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-        holds_value_array = G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY);
-        G_GNUC_END_IGNORE_DEPRECATIONS
-
-        if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT)) {
-            PyObject *ret = (PyObject *)g_value_dup_boxed(value);
-            if (ret == NULL) {
-                Py_INCREF(Py_None);
-                return Py_None;
-            }
-            return ret;
-        } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
-            GValue *n_value = g_value_get_boxed (value);
-            return pyg_value_as_pyobject(n_value, copy_boxed);
-        } else if (holds_value_array) {
-            GValueArray *array = (GValueArray *) g_value_get_boxed(value);
-            Py_ssize_t n_values = array ? array->n_values : 0;
-            PyObject *ret = PyList_New(n_values);
-            int i;
-            for (i = 0; i < n_values; ++i)
-                PyList_SET_ITEM(ret, i, pyg_value_as_pyobject
-                        (array->values + i, copy_boxed));
-            return ret;
-        } else if (G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
-            GString *string = (GString *) g_value_get_boxed(value);
-            PyObject *ret = PYGLIB_PyUnicode_FromStringAndSize(string->str, string->len);
-            return ret;
-        }
-        bm = pyg_type_lookup(G_VALUE_TYPE(value));
-        if (bm) {
-            return bm->fromvalue(value);
-        } else {
-            if (copy_boxed)
-                return pyg_boxed_new(G_VALUE_TYPE(value),
-                        g_value_get_boxed(value), TRUE, TRUE);
-            else
-                return pyg_boxed_new(G_VALUE_TYPE(value),
-                        g_value_get_boxed(value),FALSE,FALSE);
-        }
-    }
-    case G_TYPE_PARAM:
-        return pyg_param_spec_new(g_value_get_param(value));
-    case G_TYPE_OBJECT:
-        return pygobject_new(g_value_get_object(value));
-    case G_TYPE_VARIANT:
-    {
-        GVariant *v = g_value_get_variant(value);
-        if (v == NULL) {
-            Py_INCREF(Py_None);
-            return Py_None;
-        }
-        return _pygi_struct_new_from_g_type (G_TYPE_VARIANT, g_variant_ref(v), FALSE);
-    }
-    default:
-    {
-        PyGTypeMarshal *bm;
-        if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))))
-            return bm->fromvalue(value);
-        break;
-    }
-    }
-
-    return NULL;
-}
-
-
-/**
- * pyg_value_as_pyobject:
- * @value: the GValue object.
- * @copy_boxed: true if boxed values should be copied.
- *
- * This function creates/returns a Python wrapper object that
- * represents the GValue passed as an argument.
- *
- * Returns: a PyObject representing the value or %NULL and sets an exception.
- */
-PyObject *
-pyg_value_as_pyobject (const GValue *value, gboolean copy_boxed)
-{
-    PyObject *pyobj;
-    const gchar *type_name;
-    GType fundamental = G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value));
-
-    /* HACK: special case char and uchar to return PyBytes intstead of integers
-     * in the general case. Property access will skip this by calling
-     * pygi_value_to_py_basic_type() directly.
-     * See: https://bugzilla.gnome.org/show_bug.cgi?id=733893 */
-    if (fundamental == G_TYPE_CHAR) {
-        gint8 val = g_value_get_schar(value);
-        return PYGLIB_PyUnicode_FromStringAndSize ((char *)&val, 1);
-    } else if (fundamental == G_TYPE_UCHAR) {
-        guint8 val = g_value_get_uchar(value);
-        return PYGLIB_PyBytes_FromStringAndSize ((char *)&val, 1);
-    }
-
-    pyobj = pygi_value_to_py_basic_type (value, fundamental);
-    if (pyobj) {
-        return pyobj;
-    }
-
-    pyobj = pygi_value_to_py_structured_type (value, fundamental, copy_boxed);
-    if (pyobj) {
-        return pyobj;
-    }
-
-    if (!PyErr_Occurred ()) {
-        type_name = g_type_name (G_VALUE_TYPE (value));
-        if (type_name == NULL) {
-            type_name = "(null)";
-        }
-        PyErr_Format (PyExc_TypeError, "unknown type %s", type_name);
-    }
-
-    return NULL;
-
-}
-
-
-int
-pyg_param_gvalue_from_pyobject(GValue* value,
-                               PyObject* py_obj,
-                              const GParamSpec* pspec)
-{
-    if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
-       gunichar u;
-
-       if (!pyg_pyobj_to_unichar_conv(py_obj, &u)) {
-           PyErr_Clear();
-           return -1;
-       }
-        g_value_set_uint(value, u);
-       return 0;
-    }
-    else if (G_IS_PARAM_SPEC_VALUE_ARRAY(pspec))
-       return pyg_value_array_from_pyobject(value, py_obj,
-                                            G_PARAM_SPEC_VALUE_ARRAY(pspec));
-    else {
-       return pyg_value_from_pyobject(value, py_obj);
-    }
-}
-
-PyObject*
-pyg_param_gvalue_as_pyobject(const GValue* gvalue,
-                             gboolean copy_boxed,
-                            const GParamSpec* pspec)
-{
-    if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
-       gunichar u;
-       Py_UNICODE uni_buffer[2] = { 0, 0 };
-
-       u = g_value_get_uint(gvalue);
-       uni_buffer[0] = u;
-       return PyUnicode_FromUnicode(uni_buffer, 1);
-    }
-    else {
-       return pyg_value_as_pyobject(gvalue, copy_boxed);
-    }
-}
-
-PyObject *
-pyg_strv_from_gvalue(const GValue *value)
-{
-    gchar    **argv = (gchar **) g_value_get_boxed(value);
-    int        argc = 0, i;
-    PyObject  *py_argv;
-
-    if (argv) {
-        while (argv[argc])
-            argc++;
-    }
-    py_argv = PyList_New(argc);
-    for (i = 0; i < argc; ++i)
-       PyList_SET_ITEM(py_argv, i, PYGLIB_PyUnicode_FromString(argv[i]));
-    return py_argv;
-}
-
-int
-pyg_strv_to_gvalue(GValue *value, PyObject *obj)
-{
-    Py_ssize_t argc, i;
-    gchar **argv;
-
-    if (!(PyTuple_Check (obj) || PyList_Check (obj)))
-        return -1;
-
-    argc = PySequence_Length (obj);
-    argv = g_new (gchar *, argc + 1);
-    for (i = 0; i < argc; ++i) {
-        PyObject* item = PySequence_Fast_GET_ITEM (obj, i);
-        /* same as _pygi_marshal_from_py_utf8 */
-        if (PyUnicode_Check (item)) {
-            PyObject *pystr_obj = PyUnicode_AsUTF8String (item);
-            if (!pystr_obj) {
-                goto error;
-            }
-            argv[i] = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
-            Py_DECREF (pystr_obj);
-        }
-#if PY_VERSION_HEX < 0x03000000
-        else if (PyString_Check (item)) {
-            argv[i] = g_strdup (PyString_AsString (item));
-        }
-#endif
-        else {
-            goto error;
-        }
-    }
-
-    argv[i] = NULL;
-    g_value_take_boxed (value, argv);
-    return 0;
-
-error:
-    for (i = i - 1; i >= 0; i--) {
-        g_free (argv[i]);
-    }
-    g_free (argv);
-    return -1;
-}
diff --git a/gi/pygi-value.h b/gi/pygi-value.h
deleted file mode 100644 (file)
index 5b2eac1..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGI_VALUE_H__
-#define __PYGI_VALUE_H__
-
-#include <Python.h>
-#include <glib-object.h>
-#include <girepository.h>
-
-G_BEGIN_DECLS
-
-GIArgument _pygi_argument_from_g_value(const GValue *value,
-                                       GITypeInfo *type_info);
-
-int       pyg_value_from_pyobject(GValue *value, PyObject *obj);
-int       pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj);
-PyObject *pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed);
-int       pyg_param_gvalue_from_pyobject(GValue* value,
-                                         PyObject* py_obj,
-                                         const GParamSpec* pspec);
-PyObject *pyg_param_gvalue_as_pyobject(const GValue* gvalue,
-                                       gboolean copy_boxed,
-                                       const GParamSpec* pspec);
-PyObject *pyg_strv_from_gvalue(const GValue *value);
-int       pyg_strv_to_gvalue(GValue *value, PyObject *obj);
-
-PyObject *pygi_value_to_py_basic_type      (const GValue *value,
-                                            GType fundamental);
-PyObject *pygi_value_to_py_structured_type (const GValue *value,
-                                            GType fundamental,
-                                            gboolean copy_boxed);
-
-G_END_DECLS
-
-#endif /* __PYGI_VALUE_H__ */
diff --git a/gi/pygi.h b/gi/pygi.h
new file mode 100644 (file)
index 0000000..121eae5
--- /dev/null
+++ b/gi/pygi.h
@@ -0,0 +1,177 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2005-2009 Johan Dahlin <johan@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGI_H__
+#define __PYGI_H__
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#define NO_IMPORT_PYGOBJECT
+#include <pygobject.h>
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+typedef struct {
+    PyObject_HEAD
+    GIRepository *repository;
+} PyGIRepository;
+
+typedef struct {
+    PyObject_HEAD
+    GIBaseInfo *info;
+    PyObject *inst_weakreflist;
+    PyGICallableCache *cache;
+} PyGIBaseInfo;
+
+typedef struct {
+    PyGPointer base;
+    gboolean free_on_dealloc;
+} PyGIStruct;
+
+typedef struct {
+    PyGBoxed base;
+    gboolean slice_allocated;
+    gsize size;
+} PyGIBoxed;
+
+typedef struct {
+    PyObject_HEAD
+    GCallback callback;
+    GIFunctionInfo *info;
+    gpointer user_data;
+    GIScopeType scope;
+    GDestroyNotify destroy_notify_func;
+    PyGICallableCache *cache;
+} PyGICCallback;
+
+typedef PyObject * (*PyGIArgOverrideToGIArgumentFunc) (PyObject        *value,
+                                                       GIInterfaceInfo *interface_info,
+                                                       GITransfer       transfer,
+                                                       GIArgument      *arg);
+typedef PyObject * (*PyGIArgOverrideFromGIArgumentFunc) (GIInterfaceInfo *interface_info,
+                                                         gpointer         data);
+typedef PyObject * (*PyGIArgOverrideReleaseFunc) (GITypeInfo *type_info,
+                                                  gpointer  struct_);
+
+struct PyGI_API {
+    PyObject* (*type_import_by_g_type) (GType g_type);
+    PyObject* (*get_property_value) (PyGObject *instance,
+                                     const gchar *attr_name);
+    gint (*set_property_value) (PyGObject *instance,
+                                const gchar *attr_name,
+                                PyObject *value);
+    GClosure * (*signal_closure_new) (PyGObject *instance,
+                                      const gchar *sig_name,
+                                      PyObject *callback,
+                                      PyObject *extra_args,
+                                      PyObject *swap_data);
+    void (*register_foreign_struct) (const char* namespace_,
+                                     const char* name,
+                                     PyGIArgOverrideToGIArgumentFunc to_func,
+                                     PyGIArgOverrideFromGIArgumentFunc from_func,
+                                     PyGIArgOverrideReleaseFunc release_func);
+};
+
+static struct PyGI_API *PyGI_API = NULL;
+
+static int
+_pygi_import (void)
+{
+    if (PyGI_API != NULL) {
+        return 1;
+    }
+#if PY_VERSION_HEX >= 0x03000000
+    PyGI_API = (struct PyGI_API*) PyCapsule_Import("gi._API", FALSE);
+#else
+    PyGI_API = (struct PyGI_API*) PyCObject_Import("gi", "_API");
+#endif
+    if (PyGI_API == NULL) {
+        return -1;
+    }
+
+    return 0;
+}
+
+static inline PyObject *
+pygi_type_import_by_g_type (GType g_type)
+{
+    if (_pygi_import() < 0) {
+        return NULL;
+    }
+    return PyGI_API->type_import_by_g_type(g_type);
+}
+
+static inline PyObject *
+pygi_get_property_value (PyGObject *instance,
+                         const gchar *attr_name)
+{
+    if (_pygi_import() < 0) {
+        return NULL;
+    }
+    return PyGI_API->get_property_value(instance, attr_name);
+}
+
+static inline gint
+pygi_set_property_value (PyGObject *instance,
+                         const gchar *attr_name,
+                         PyObject *value)
+{
+    if (_pygi_import() < 0) {
+        return -1;
+    }
+    return PyGI_API->set_property_value(instance, attr_name, value);
+}
+
+static inline GClosure *
+pygi_signal_closure_new (PyGObject *instance,
+                         const gchar *sig_name,
+                         PyObject *callback,
+                         PyObject *extra_args,
+                         PyObject *swap_data)
+{
+    if (_pygi_import() < 0) {
+        return NULL;
+    }
+    return PyGI_API->signal_closure_new(instance, sig_name, callback, extra_args, swap_data);
+}
+
+static inline PyObject *
+pygi_register_foreign_struct (const char* namespace_,
+                              const char* name,
+                              PyGIArgOverrideToGIArgumentFunc to_func,
+                              PyGIArgOverrideFromGIArgumentFunc from_func,
+                              PyGIArgOverrideReleaseFunc release_func)
+{
+    if (_pygi_import() < 0) {
+        return NULL;
+    }
+    PyGI_API->register_foreign_struct(namespace_,
+                                      name,
+                                      to_func,
+                                      from_func,
+                                      release_func);
+    Py_RETURN_NONE;
+}
+
+#endif /* __PYGI_H__ */
diff --git a/gi/pyglib.c b/gi/pyglib.c
deleted file mode 100644 (file)
index d21ba4d..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/* -*- Mode: C; c-set-style: python; c-basic-offset: 4  -*-
- * pyglib - Python bindings for GLib toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <Python.h>
-#include <pythread.h>
-#include "pyglib.h"
-#include "pygoptioncontext.h"
-#include "pygoptiongroup.h"
-
-
-/**
- * pyg_option_group_transfer_group:
- * @group: a GOptionGroup wrapper
- *
- * This is used to transfer the GOptionGroup to a GOptionContext. After this
- * is called, the calle must handle the release of the GOptionGroup.
- *
- * When #NULL is returned, the GOptionGroup was already transfered.
- *
- * Returns: Either #NULL or the wrapped GOptionGroup.
- */
-GOptionGroup *
-pyglib_option_group_transfer_group(PyObject *obj)
-{
-    PyGOptionGroup *self = (PyGOptionGroup*)obj;
-    
-    if (self->is_in_context)
-       return NULL;
-
-    self->is_in_context = TRUE;
-    
-    /* Here we increase the reference count of the PyGOptionGroup, because now
-     * the GOptionContext holds an reference to us (it is the userdata passed
-     * to g_option_group_new().
-     *
-     * The GOptionGroup is freed with the GOptionContext.
-     *
-     * We set it here because if we would do this in the init method we would
-     * hold two references and the PyGOptionGroup would never be freed.
-     */
-    Py_INCREF(self);
-    
-    return self->group;
-}
-
-
-/****** Private *****/
-
-/**
- * _pyglib_destroy_notify:
- * @user_data: a PyObject pointer.
- *
- * A function that can be used as a GDestroyNotify callback that will
- * call Py_DECREF on the data.
- */
-void
-_pyglib_destroy_notify(gpointer user_data)
-{
-    PyObject *obj = (PyObject *)user_data;
-    PyGILState_STATE state;
-
-    state = PyGILState_Ensure();
-    Py_DECREF(obj);
-    PyGILState_Release(state);
-}
-
-gboolean
-_pyglib_handler_marshal(gpointer user_data)
-{
-    PyObject *tuple, *ret;
-    gboolean res;
-    PyGILState_STATE state;
-
-    g_return_val_if_fail(user_data != NULL, FALSE);
-
-    state = PyGILState_Ensure();
-
-    tuple = (PyObject *)user_data;
-    ret = PyObject_CallObject(PyTuple_GetItem(tuple, 0),
-                             PyTuple_GetItem(tuple, 1));
-    if (!ret) {
-       PyErr_Print();
-       res = FALSE;
-    } else {
-       res = PyObject_IsTrue(ret);
-       Py_DECREF(ret);
-    }
-    
-    PyGILState_Release(state);
-
-    return res;
-}
-
-PyObject*
-_pyglib_generic_ptr_richcompare(void* a, void *b, int op)
-{
-    PyObject *res;
-
-    switch (op) {
-
-      case Py_EQ:
-        res = (a == b) ? Py_True : Py_False;
-        break;
-
-      case Py_NE:
-        res = (a != b) ? Py_True : Py_False;
-        break;
-
-      case Py_LT:
-        res = (a < b) ? Py_True : Py_False;
-        break;
-
-      case Py_LE:
-        res = (a <= b) ? Py_True : Py_False;
-        break;
-
-      case Py_GT:
-        res = (a > b) ? Py_True : Py_False;
-        break;
-
-      case Py_GE:
-        res = (a >= b) ? Py_True : Py_False;
-        break;
-
-      default:
-        res = Py_NotImplemented;
-        break;
-    }
-
-    Py_INCREF(res);
-    return res;
-}
-
-PyObject*
-_pyglib_generic_long_richcompare(long a, long b, int op)
-{
-    PyObject *res;
-
-    switch (op) {
-
-      case Py_EQ:
-        res = (a == b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-      case Py_NE:
-        res = (a != b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-
-      case Py_LT:
-        res = (a < b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-      case Py_LE:
-        res = (a <= b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-      case Py_GT:
-        res = (a > b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-      case Py_GE:
-        res = (a >= b) ? Py_True : Py_False;
-        Py_INCREF(res);
-        break;
-
-      default:
-        res = Py_NotImplemented;
-        Py_INCREF(res);
-        break;
-    }
-
-    return res;
-}
-
diff --git a/gi/pygobject-external.h b/gi/pygobject-external.h
new file mode 100644 (file)
index 0000000..4d873bc
--- /dev/null
@@ -0,0 +1,83 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2009 Simon van der Linden <svdlinden@src.gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+
+#ifndef __PYGOBJECT_EXTERN_H__
+#define __PYGOBJECT_EXTERN_H__
+
+#include <Python.h>
+
+G_BEGIN_DECLS
+
+static PyTypeObject *_PyGObject_Type;
+static PyTypeObject *_PyGTypeWrapper_Type;
+
+#define PyGObject_Type (*_PyGObject_Type)
+#define PyGTypeWrapper_Type (*_PyGTypeWrapper_Type)
+
+__attribute__ ( (unused))
+static int
+_pygobject_import (void)
+{
+    static gboolean imported = FALSE;
+    PyObject *from_list;
+    PyObject *module;
+    int retval = 0;
+
+    if (imported) {
+        return 1;
+    }
+
+    from_list = Py_BuildValue ("(ss)", "GObject", "GTypeWrapper");
+    if (from_list == NULL) {
+        return -1;
+    }
+
+    module = PyImport_ImportModuleEx ("gi._gobject", NULL, NULL, from_list);
+
+    Py_DECREF (from_list);
+
+    if (module == NULL) {
+        return -1;
+    }
+
+    _PyGObject_Type = (PyTypeObject *) PyObject_GetAttrString (module, "GObject");
+    if (_PyGObject_Type == NULL) {
+        retval = -1;
+        goto out;
+    }
+
+    _PyGTypeWrapper_Type = (PyTypeObject *) PyObject_GetAttrString (module, "GType");
+    if (_PyGTypeWrapper_Type == NULL) {
+        retval = -1;
+        goto out;
+    }
+
+    imported = TRUE;
+
+out:
+    Py_DECREF (module);
+
+    return retval;
+}
+
+G_END_DECLS
+
+#endif /* __PYGOBJECT_EXTERN_H__ */
diff --git a/gi/pygobject-internal.h b/gi/pygobject-internal.h
deleted file mode 100644 (file)
index 2cd82c5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _PYGOBJECT_INTERNAL_H_
-#define _PYGOBJECT_INTERNAL_H_
-
-#define _INSIDE_PYGOBJECT_
-#include "pygobject.h"
-
-#endif /*_PYGOBJECT_INTERNAL_H_*/
diff --git a/gi/pygobject-object.h b/gi/pygobject-object.h
deleted file mode 100644 (file)
index fb39a25..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef _PYGOBJECT_OBJECT_H_
-#define _PYGOBJECT_OBJECT_H_
-
-#include <Python.h>
-#include <glib-object.h>
-#include "pyglib-python-compat.h"
-#include "pygobject-internal.h"
-
-/* Data that belongs to the GObject instance, not the Python wrapper */
-struct _PyGObjectData {
-    PyTypeObject *type; /* wrapper type for this instance */
-    GSList *closures;
-};
-
-extern GType PY_TYPE_OBJECT;
-extern GQuark pygobject_instance_data_key;
-extern GQuark pygobject_custom_key;
-extern GQuark pygobject_wrapper_key;
-extern GQuark pygobject_class_key;
-extern GQuark pygobject_class_init_key;
-
-extern PyTypeObject PyGObjectWeakRef_Type;
-extern PyTypeObject PyGPropsIter_Type;
-extern PyTypeObject PyGPropsDescr_Type;
-extern PyTypeObject PyGProps_Type;
-extern PyTypeObject PyGObject_Type;
-extern PyTypeObject *PyGObject_MetaType;
-
-static inline PyGObjectData *
-pyg_object_peek_inst_data(GObject *obj)
-{
-    return ((PyGObjectData *)
-            g_object_get_qdata(obj, pygobject_instance_data_key));
-}
-
-gboolean      pygobject_prepare_construct_properties  (GObjectClass *class,
-                                                       PyObject *kwargs,
-                                                       guint *n_params,
-                                                       GParameter **params);
-void          pygobject_register_class   (PyObject *dict,
-                                          const gchar *type_name,
-                                          GType gtype, PyTypeObject *type,
-                                          PyObject *bases);
-void          pygobject_register_wrapper (PyObject *self);
-PyObject *    pygobject_new              (GObject *obj);
-PyObject *    pygobject_new_full         (GObject *obj, gboolean steal, gpointer g_class);
-void          pygobject_sink             (GObject *obj);
-PyTypeObject *pygobject_lookup_class     (GType gtype);
-void          pygobject_watch_closure    (PyObject *self, GClosure *closure);
-void          pygobject_object_register_types(PyObject *d);
-void          pygobject_ref_float(PyGObject *self);
-void          pygobject_ref_sink(PyGObject *self);
-
-GClosure *    gclosure_from_pyfunc(PyGObject *object, PyObject *func);
-
-#endif /*_PYGOBJECT_OBJECT_H_*/
index 4a9c4be..4eeaf04 100644 (file)
-from __future__ import absolute_import
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+#
+# Copyright (C) 2011-2012 Johan Dahlin <johan@gnome.org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+# USA
+
+"""
+PyGTK compatibility layer.
+
+This modules goes a little bit longer to maintain PyGTK compatibility than
+the normal overrides system.
+
+It is recommended to not depend on this layer, but only use it as an
+intermediate step when porting your application to PyGI.
+
+Compatibility might never be 100%, but the aim is to make it possible to run
+a well behaved PyGTK application mostly unmodified on top of PyGI.
+
+"""
+
+import sys
 import warnings
 
-from gi import PyGIDeprecationWarning
-
-warnings.warn('gi.pygtkcompat is being deprecated in favor of using "pygtkcompat" directly.',
-              PyGIDeprecationWarning)
-
-# pyflakes.ignore
-from pygtkcompat import (enable,
-                         enable_gtk,
-                         enable_vte,
-                         enable_poppler,
-                         enable_webkit,
-                         enable_gudev,
-                         enable_gst,
-                         enable_goocanvas)
-
-
-__all__ = ['enable',
-           'enable_gtk',
-           'enable_vte',
-           'enable_poppler',
-           'enable_webkit',
-           'enable_gudev',
-           'enable_gst',
-           'enable_goocanvas']
+try:
+    # Python 3
+    from collections import UserList
+    from imp import reload
+    UserList  # pyflakes
+except ImportError:
+    # Python 2 ships that in a different module
+    from UserList import UserList
+    UserList  # pyflakes
+
+import gi
+from gi.repository import GObject
+
+
+def _install_enums(module, dest=None, strip=''):
+    if dest is None:
+        dest = module
+    modname = dest.__name__.rsplit('.', 1)[1].upper()
+    for attr in dir(module):
+        try:
+            obj = getattr(module, attr, None)
+        except:
+            continue
+        try:
+            if issubclass(obj, GObject.GEnum):
+                for value, enum in obj.__enum_values__.items():
+                    name = enum.value_name
+                    name = name.replace(modname + '_', '')
+                    if strip and name.startswith(strip):
+                        name = name[len(strip):]
+                    setattr(dest, name, enum)
+        except TypeError:
+            continue
+        try:
+            if issubclass(obj, GObject.GFlags):
+                for value, flag in obj.__flags_values__.items():
+                    for name in flag.value_names:
+                        name = name.replace(modname + '_', '')
+                        setattr(dest, name, flag)
+        except TypeError:
+            continue
+
+
+def enable():
+    # gobject
+    from gi.repository import GLib
+    sys.modules['glib'] = GLib
+
+    # gobject
+    from gi.repository import GObject
+    sys.modules['gobject'] = GObject
+    from gi._gobject import propertyhelper
+    sys.modules['gobject.propertyhelper'] = propertyhelper
+
+    # gio
+    from gi.repository import Gio
+    sys.modules['gio'] = Gio
+
+_unset = object()
+
+
+def enable_gtk(version='2.0'):
+    # set the default encoding like PyGTK
+    reload(sys)
+    if sys.version_info < (3, 0):
+        sys.setdefaultencoding('utf-8')
+
+    # atk
+    gi.require_version('Atk', '1.0')
+    from gi.repository import Atk
+    sys.modules['atk'] = Atk
+    _install_enums(Atk)
+
+    # pango
+    gi.require_version('Pango', '1.0')
+    from gi.repository import Pango
+    sys.modules['pango'] = Pango
+    _install_enums(Pango)
+
+    # pangocairo
+    gi.require_version('PangoCairo', '1.0')
+    from gi.repository import PangoCairo
+    sys.modules['pangocairo'] = PangoCairo
+
+    # gdk
+    gi.require_version('Gdk', version)
+    gi.require_version('GdkPixbuf', '2.0')
+    from gi.repository import Gdk
+    from gi.repository import GdkPixbuf
+    sys.modules['gtk.gdk'] = Gdk
+    _install_enums(Gdk)
+    _install_enums(GdkPixbuf, dest=Gdk)
+    Gdk._2BUTTON_PRESS = 5
+    Gdk.BUTTON_PRESS = 4
+
+    Gdk.screen_get_default = Gdk.Screen.get_default
+    Gdk.Pixbuf = GdkPixbuf.Pixbuf
+    Gdk.pixbuf_new_from_file = GdkPixbuf.Pixbuf.new_from_file
+    Gdk.PixbufLoader = GdkPixbuf.PixbufLoader.new_with_type
+
+    orig_get_frame_extents = Gdk.Window.get_frame_extents
+
+    def get_frame_extents(window):
+        try:
+            try:
+                rect = Gdk.Rectangle(0, 0, 0, 0)
+            except TypeError:
+                rect = Gdk.Rectangle()
+            orig_get_frame_extents(window, rect)
+        except TypeError:
+            rect = orig_get_frame_extents(window)
+        return rect
+    Gdk.Window.get_frame_extents = get_frame_extents
+
+    orig_get_origin = Gdk.Window.get_origin
+
+    def get_origin(self):
+        return orig_get_origin(self)[1:]
+    Gdk.Window.get_origin = get_origin
+
+    # gtk
+    gi.require_version('Gtk', version)
+    from gi.repository import Gtk
+    sys.modules['gtk'] = Gtk
+    Gtk.gdk = Gdk
+
+    Gtk.pygtk_version = (2, 99, 0)
+
+    Gtk.gtk_version = (Gtk.MAJOR_VERSION,
+                       Gtk.MINOR_VERSION,
+                       Gtk.MICRO_VERSION)
+    _install_enums(Gtk)
+
+    # Action
+
+    def set_tool_item_type(menuaction, gtype):
+        warnings.warn('set_tool_item_type() is not supported',
+                DeprecationWarning, stacklevel=2)
+    Gtk.Action.set_tool_item_type = classmethod(set_tool_item_type)
+
+    # Alignment
+
+    orig_Alignment = Gtk.Alignment
+
+    class Alignment(orig_Alignment):
+        def __init__(self, xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0):
+            orig_Alignment.__init__(self)
+            self.props.xalign = xalign
+            self.props.yalign = yalign
+            self.props.xscale = xscale
+            self.props.yscale = yscale
+
+    Gtk.Alignment = Alignment
+
+    # Box
+
+    orig_pack_end = Gtk.Box.pack_end
+
+    def pack_end(self, child, expand=True, fill=True, padding=0):
+        orig_pack_end(self, child, expand, fill, padding)
+    Gtk.Box.pack_end = pack_end
+
+    orig_pack_start = Gtk.Box.pack_start
+
+    def pack_start(self, child, expand=True, fill=True, padding=0):
+        orig_pack_start(self, child, expand, fill, padding)
+    Gtk.Box.pack_start = pack_start
+
+    # TreeViewColumn
+
+    orig_tree_view_column_pack_end = Gtk.TreeViewColumn.pack_end
+
+    def tree_view_column_pack_end(self, cell, expand=True):
+        orig_tree_view_column_pack_end(self, cell, expand)
+    Gtk.TreeViewColumn.pack_end = tree_view_column_pack_end
+
+    orig_tree_view_column_pack_start = Gtk.TreeViewColumn.pack_start
+
+    def tree_view_column_pack_start(self, cell, expand=True):
+        orig_tree_view_column_pack_start(self, cell, expand)
+    Gtk.TreeViewColumn.pack_start = tree_view_column_pack_start
+
+    # TreeView
+
+    def insert_column_with_attributes(view, position, title, cell, *args, **kwargs):
+        pass
+    Gtk.TreeView.insert_column_with_attributes = insert_column_with_attributes
+
+    # CellLayout
+
+    orig_cell_pack_end = Gtk.CellLayout.pack_end
+
+    def cell_pack_end(self, cell, expand=True):
+        orig_cell_pack_end(self, cell, expand)
+    Gtk.CellLayout.pack_end = cell_pack_end
+
+    orig_cell_pack_start = Gtk.CellLayout.pack_start
+
+    def cell_pack_start(self, cell, expand=True):
+        orig_cell_pack_start(self, cell, expand)
+    Gtk.CellLayout.pack_start = cell_pack_start
+
+    orig_set_cell_data_func = Gtk.CellLayout.set_cell_data_func
+
+    def set_cell_data_func(self, cell, func, user_data=_unset):
+        def callback(*args):
+            if args[-1] == _unset:
+                args = args[:-1]
+            return func(*args)
+        orig_set_cell_data_func(self, cell, callback, user_data)
+    Gtk.CellLayout.set_cell_data_func = set_cell_data_func
+
+    # CellRenderer
+
+    class GenericCellRenderer(Gtk.CellRenderer):
+        pass
+    Gtk.GenericCellRenderer = GenericCellRenderer
+
+    # ComboBox
+
+    orig_combo_row_separator_func = Gtk.ComboBox.set_row_separator_func
+
+    def combo_row_separator_func(self, func, user_data=_unset):
+        def callback(*args):
+            if args[-1] == _unset:
+                args = args[:-1]
+            return func(*args)
+        orig_combo_row_separator_func(self, callback, user_data)
+    Gtk.ComboBox.set_row_separator_func = combo_row_separator_func
+
+    # ComboBoxEntry
+
+    class ComboBoxEntry(Gtk.ComboBox):
+        def __init__(self, **kwds):
+            Gtk.ComboBox.__init__(self, has_entry=True, **kwds)
+
+        def set_text_column(self, text_column):
+            self.set_entry_text_column(text_column)
+
+        def get_text_column(self):
+            return self.get_entry_text_column()
+    Gtk.ComboBoxEntry = ComboBoxEntry
+
+    def combo_box_entry_new():
+        return Gtk.ComboBoxEntry()
+    Gtk.combo_box_entry_new = combo_box_entry_new
+
+    def combo_box_entry_new_with_model(model):
+        return Gtk.ComboBoxEntry(model=model)
+    Gtk.combo_box_entry_new_with_model = combo_box_entry_new_with_model
+
+    # Container
+
+    def install_child_property(container, flag, pspec):
+        warnings.warn('install_child_property() is not supported',
+                DeprecationWarning, stacklevel=2)
+    Gtk.Container.install_child_property = classmethod(install_child_property)
+
+    def new_text():
+        combo = Gtk.ComboBox()
+        model = Gtk.ListStore(str)
+        combo.set_model(model)
+        combo.set_entry_text_column(0)
+        return combo
+    Gtk.combo_box_new_text = new_text
+
+    def append_text(self, text):
+        model = self.get_model()
+        model.append([text])
+    Gtk.ComboBox.append_text = append_text
+    Gtk.expander_new_with_mnemonic = Gtk.Expander.new_with_mnemonic
+    Gtk.icon_theme_get_default = Gtk.IconTheme.get_default
+    Gtk.image_new_from_pixbuf = Gtk.Image.new_from_pixbuf
+    Gtk.image_new_from_stock = Gtk.Image.new_from_stock
+    Gtk.settings_get_default = Gtk.Settings.get_default
+    Gtk.window_set_default_icon = Gtk.Window.set_default_icon
+
+    # Scale
+
+    orig_HScale = Gtk.HScale
+    orig_VScale = Gtk.VScale
+
+    class HScale(orig_HScale):
+        def __init__(self, adjustment=None):
+            orig_HScale.__init__(self, adjustment=adjustment)
+    Gtk.HScale = HScale
+
+    class VScale(orig_VScale):
+        def __init__(self, adjustment=None):
+            orig_VScale.__init__(self, adjustment=adjustment)
+    Gtk.VScale = VScale
+
+    Gtk.stock_add = lambda items: None
+
+    # Widget
+
+    Gtk.widget_get_default_direction = Gtk.Widget.get_default_direction
+    orig_size_request = Gtk.Widget.size_request
+
+    def size_request(widget):
+        class SizeRequest(UserList):
+            def __init__(self, req):
+                self.height = req.height
+                self.width = req.width
+                UserList.__init__(self, [self.width,
+                                                  self.height])
+        return SizeRequest(orig_size_request(widget))
+    Gtk.Widget.size_request = size_request
+    Gtk.Widget.hide_all = Gtk.Widget.hide
+
+    class BaseGetter(object):
+        def __init__(self, context):
+            self.context = context
+
+        def __getitem__(self, state):
+            color = self.context.get_background_color(state)
+            return Gdk.Color(red=color.red,
+                             green=color.green,
+                             blue=color.blue)
+
+    class Styles(object):
+        def __init__(self, widget):
+            context = widget.get_style_context()
+            self.base = BaseGetter(context)
+            self.black = Gdk.Color(red=0, green=0, blue=0)
+
+    class StyleDescriptor(object):
+        def __get__(self, instance, class_):
+            return Styles(instance)
+    Gtk.Widget.style = StyleDescriptor()
+
+    # gtk.unixprint
+
+    class UnixPrint(object):
+        pass
+    unixprint = UnixPrint()
+    sys.modules['gtkunixprint'] = unixprint
+
+    # gtk.keysyms
+
+    class Keysyms(object):
+        pass
+    keysyms = Keysyms()
+    sys.modules['gtk.keysyms'] = keysyms
+    Gtk.keysyms = keysyms
+    for name in dir(Gdk):
+        if name.startswith('KEY_'):
+            target = name[4:]
+            if target[0] in '0123456789':
+                target = '_' + target
+            value = getattr(Gdk, name)
+            setattr(keysyms, target, value)
+
+
+def enable_vte():
+    gi.require_version('Vte', '0.0')
+    from gi.repository import Vte
+    sys.modules['vte'] = Vte
+
+
+def enable_poppler():
+    gi.require_version('Poppler', '0.18')
+    from gi.repository import Poppler
+    sys.modules['poppler'] = Poppler
+    Poppler.pypoppler_version = (1, 0, 0)
+
+
+def enable_webkit(version='1.0'):
+    gi.require_version('WebKit', version)
+    from gi.repository import WebKit
+    sys.modules['webkit'] = WebKit
+    WebKit.WebView.get_web_inspector = WebKit.WebView.get_inspector
+
+
+def enable_gudev():
+    gi.require_version('GUdev', '1.0')
+    from gi.repository import GUdev
+    sys.modules['gudev'] = GUdev
+
+
+def enable_gst():
+    gi.require_version('Gst', '0.10')
+    from gi.repository import Gst
+    sys.modules['gst'] = Gst
+    _install_enums(Gst)
+    Gst.registry_get_default = Gst.Registry.get_default
+    Gst.element_register = Gst.Element.register
+    Gst.element_factory_make = Gst.ElementFactory.make
+    Gst.caps_new_any = Gst.Caps.new_any
+    Gst.get_pygst_version = lambda: (0, 10, 19)
+    Gst.get_gst_version = lambda: (0, 10, 40)
+
+    from gi.repository import GstInterfaces
+    sys.modules['gst.interfaces'] = GstInterfaces
+    _install_enums(GstInterfaces)
+
+    from gi.repository import GstAudio
+    sys.modules['gst.audio'] = GstAudio
+    _install_enums(GstAudio)
+
+    from gi.repository import GstVideo
+    sys.modules['gst.video'] = GstVideo
+    _install_enums(GstVideo)
+
+    from gi.repository import GstBase
+    sys.modules['gst.base'] = GstBase
+    _install_enums(GstBase)
+
+    Gst.BaseTransform = GstBase.BaseTransform
+    Gst.BaseSink = GstBase.BaseSink
+
+    from gi.repository import GstController
+    sys.modules['gst.controller'] = GstController
+    _install_enums(GstController, dest=Gst)
+
+    from gi.repository import GstPbutils
+    sys.modules['gst.pbutils'] = GstPbutils
+    _install_enums(GstPbutils)
+
+
+def enable_goocanvas():
+    gi.require_version('GooCanvas', '2.0')
+    from gi.repository import GooCanvas
+    sys.modules['goocanvas'] = GooCanvas
+    _install_enums(GooCanvas, strip='GOO_CANVAS_')
+    GooCanvas.ItemSimple = GooCanvas.CanvasItemSimple
+    GooCanvas.Item = GooCanvas.CanvasItem
+    GooCanvas.Image = GooCanvas.CanvasImage
+    GooCanvas.Group = GooCanvas.CanvasGroup
+    GooCanvas.Rect = GooCanvas.CanvasRect
diff --git a/gi/pygtype.h b/gi/pygtype.h
deleted file mode 100644 (file)
index 7caf77c..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  Johan Dahlin
- *   pyginterface.c: wrapper for the gobject library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __PYGOBJECT_TYPE_H__ 
-#define __PYGOBJECT_TYPE_H__
-
-#include <Python.h>
-#include <glib-object.h>
-#include "pygobject-internal.h"
-
-#define PYGOBJECT_REGISTER_GTYPE(d, type, name, gtype)      \
-  {                                                         \
-    PyObject *o;                                           \
-    PYGLIB_REGISTER_TYPE(d, type, name);                    \
-    PyDict_SetItemString(type.tp_dict, "__gtype__",         \
-                        o=pyg_type_wrapper_new(gtype));    \
-    Py_DECREF(o);                                           \
-}
-
-extern PyTypeObject PyGTypeWrapper_Type;
-
-typedef PyObject *(* fromvaluefunc)(const GValue *value);
-typedef int (*tovaluefunc)(GValue *value, PyObject *obj);
-
-typedef struct {
-    fromvaluefunc fromvalue;
-    tovaluefunc tovalue;
-} PyGTypeMarshal;
-
-PyGTypeMarshal *pyg_type_lookup(GType type);
-
-gboolean pyg_gtype_is_custom (GType gtype);
-
-void pyg_register_gtype_custom(GType gtype,
-                               fromvaluefunc from_func,
-                               tovaluefunc to_func);
-
-void pygobject_type_register_types(PyObject *d);
-
-PyObject *pyg_object_descr_doc_get(void);
-PyObject *pyg_type_wrapper_new (GType type);
-GType     pyg_type_from_object_strict (PyObject *obj, gboolean strict);
-GType     pyg_type_from_object (PyObject *obj);
-
-int pyg_pyobj_to_unichar_conv (PyObject* py_obj, void* ptr);
-
-GClosure *pyg_closure_new(PyObject *callback, PyObject *extra_args, PyObject *swap_data);
-GClosure *pyg_signal_class_closure_get(void);
-void      pyg_closure_set_exception_handler(GClosure *closure,
-                                            PyClosureExceptionHandler handler);
-#endif /* __PYGOBJECT_TYPE_H__ */
index 1177ad5..27d5e81 100644 (file)
@@ -14,3 +14,5 @@ build_pylinks:
 
 all-local: build_pylinks
 check-local: build_pylinks
+
+-include $(top_srcdir)/git.mk
index 91d8e17..c52283c 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 @SET_MAKE@
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -88,51 +34,28 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = gi/repository
+DIST_COMMON = $(pygirepository_PYTHON) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(pygirepository_PYTHON) \
-       $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
 AM_V_GEN = $(am__v_GEN_@AM_V@)
 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
+am__v_GEN_0 = @echo "  GEN   " $@;
 AM_V_at = $(am__v_at_@AM_V@)
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
-am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -162,13 +85,10 @@ am__uninstall_files_from_dir = { \
   }
 am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__installdirs = "$(DESTDIR)$(pygirepositorydir)"
-am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
 py_compile = $(top_srcdir)/py-compile
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -177,20 +97,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -204,8 +117,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -223,15 +134,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -241,7 +145,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -249,7 +153,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -263,30 +166,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -335,7 +236,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -351,7 +251,7 @@ pygirepository_PYTHON = \
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -363,6 +263,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gi/repository/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign gi/repository/Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -375,9 +276,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -388,11 +289,8 @@ clean-libtool:
        -rm -rf .libs _libs
 install-pygirepositoryPYTHON: $(pygirepository_PYTHON)
        @$(NORMAL_INSTALL)
+       test -z "$(pygirepositorydir)" || $(MKDIR_P) "$(DESTDIR)$(pygirepositorydir)"
        @list='$(pygirepository_PYTHON)'; dlist=; list2=; test -n "$(pygirepositorydir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pygirepositorydir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pygirepositorydir)" || exit 1; \
-       fi; \
        for p in $$list; do \
          if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
          if test -f $$b$$p; then \
@@ -414,31 +312,21 @@ install-pygirepositoryPYTHON: $(pygirepository_PYTHON)
 uninstall-pygirepositoryPYTHON:
        @$(NORMAL_UNINSTALL)
        @list='$(pygirepository_PYTHON)'; test -n "$(pygirepositorydir)" || list=; \
-       py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$py_files" || exit 0; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
        dir='$(DESTDIR)$(pygirepositorydir)'; \
-       pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
-       pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
-       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
-       echo "$$py_files_pep3147";\
-       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
-       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
        st=0; \
-       for files in \
-         "$$py_files" \
-         "$$pyc_files" \
-         "$$pyo_files" \
-         "$$pyc_files_pep3147" \
-         "$$pyo_files_pep3147" \
-       ; do \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
          $(am__uninstall_files_from_dir) || st=$$?; \
        done; \
        exit $$st
-tags TAGS:
-
-ctags CTAGS:
+tags: TAGS
+TAGS:
 
-cscope cscopelist:
+ctags: CTAGS
+CTAGS:
 
 
 distdir: $(DISTFILES)
@@ -578,19 +466,17 @@ uninstall-am: uninstall-pygirepositoryPYTHON
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am all-local check check-am check-local clean \
-       clean-generic clean-libtool cscopelist-am ctags-am distclean \
-       distclean-generic distclean-libtool distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-pygirepositoryPYTHON \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags-am uninstall uninstall-am uninstall-pygirepositoryPYTHON
-
-.PRECIOUS: Makefile
+       clean-generic clean-libtool distclean distclean-generic \
+       distclean-libtool distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-pygirepositoryPYTHON install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-pygirepositoryPYTHON
 
 
 # if we build in a separate tree, we need to symlink the *.py files from the
@@ -604,6 +490,8 @@ build_pylinks:
 all-local: build_pylinks
 check-local: build_pylinks
 
+-include $(top_srcdir)/git.mk
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 9bc3779..e44edba 100644 (file)
 from __future__ import absolute_import
 
 import sys
-import warnings
-
-from ._constants import TYPE_INVALID
-from .docstring import generate_doc_string
+from . import _gobject
 
 from ._gi import \
     InterfaceInfo, \
@@ -34,36 +31,77 @@ from ._gi import \
     StructInfo, \
     VFuncInfo, \
     register_interface_info, \
-    hook_up_vfunc_implementation, \
-    GInterface
-from . import _gi
+    hook_up_vfunc_implementation
 
-StructInfo, GInterface  # pyflakes
 
-from . import _propertyhelper as propertyhelper
-from . import _signalhelper as signalhelper
+StructInfo  # pyflakes
 
-if (3, 0) <= sys.version_info < (3, 3):
-    # callable not available for python 3.0 thru 3.2
+if sys.version_info > (3, 0):
     def callable(obj):
         return hasattr(obj, '__call__')
 
 
+def Function(info):
+
+    def function(*args, **kwargs):
+        return info.invoke(*args, **kwargs)
+    function.__info__ = info
+    function.__name__ = info.get_name()
+    function.__module__ = info.get_namespace()
+
+    return function
+
+
+class NativeVFunc(object):
+
+    def __init__(self, info):
+        self._info = info
+
+    def __get__(self, instance, klass):
+        def native_vfunc(*args, **kwargs):
+            return self._info.invoke(klass.__gtype__, *args, **kwargs)
+        native_vfunc.__info__ = self._info
+        native_vfunc.__name__ = self._info.get_name()
+        native_vfunc.__module__ = self._info.get_namespace()
+
+        return native_vfunc
+
+
+def Constructor(info):
+
+    def constructor(cls, *args, **kwargs):
+        cls_name = info.get_container().get_name()
+        if cls.__name__ != cls_name:
+            raise TypeError('%s constructor cannot be used to create instances of a subclass' % cls_name)
+        return info.invoke(cls, *args, **kwargs)
+
+    constructor.__info__ = info
+    constructor.__name__ = info.get_name()
+    constructor.__module__ = info.get_namespace()
+
+    return constructor
+
+
 class MetaClassHelper(object):
-    def _setup_methods(cls):
+
+    def _setup_constructors(cls):
         for method_info in cls.__info__.get_methods():
-            setattr(cls, method_info.__name__, method_info)
+            if method_info.is_constructor():
+                name = method_info.get_name()
+                constructor = classmethod(Constructor(method_info))
+                setattr(cls, name, constructor)
 
-    def _setup_class_methods(cls):
-        info = cls.__info__
-        class_struct = info.get_class_struct()
-        if class_struct is None:
-            return
-        for method_info in class_struct.get_methods():
-            name = method_info.__name__
-            # Don't mask regular methods or base class methods with TypeClass methods.
-            if not hasattr(cls, name):
-                setattr(cls, name, classmethod(method_info))
+    def _setup_methods(cls):
+        for method_info in cls.__info__.get_methods():
+            name = method_info.get_name()
+            function = Function(method_info)
+            if method_info.is_method():
+                method = function
+            elif method_info.is_constructor():
+                continue
+            else:
+                method = staticmethod(function)
+            setattr(cls, name, method)
 
     def _setup_fields(cls):
         for field_info in cls.__info__.get_fields():
@@ -83,13 +121,14 @@ class MetaClassHelper(object):
 
             # If a method name starts with "do_" assume it is a vfunc, and search
             # in the base classes for a method with the same name to override.
-            # Recursion is necessary as overriden methods in most immediate parent
-            # classes may shadow vfuncs from classes higher in the hierarchy.
+            # Recursion is not necessary here because getattr() searches all
+            # super class attributes as well.
             vfunc_info = None
-            for base in cls.__mro__:
+            for base in cls.__bases__:
                 method = getattr(base, vfunc_name, None)
-                if method is not None and isinstance(method, VFuncInfo):
-                    vfunc_info = method
+                if method is not None and hasattr(method, '__info__') and \
+                        isinstance(method.__info__, VFuncInfo):
+                    vfunc_info = method.__info__
                     break
 
             # If we did not find a matching method name in the bases, we might
@@ -109,15 +148,14 @@ class MetaClassHelper(object):
                 if ambiguous_base is not None:
                     base_info = vfunc_info.get_container()
                     raise TypeError('Method %s() on class %s.%s is ambiguous '
-                                    'with methods in base classes %s.%s and %s.%s' %
-                                    (vfunc_name,
-                                     cls.__info__.get_namespace(),
-                                     cls.__info__.get_name(),
-                                     base_info.get_namespace(),
-                                     base_info.get_name(),
-                                     ambiguous_base.__info__.get_namespace(),
-                                     ambiguous_base.__info__.get_name()
-                                    ))
+                            'with methods in base classes %s.%s and %s.%s' %
+                            (vfunc_name,
+                             cls.__info__.get_namespace(),
+                             cls.__info__.get_name(),
+                             base_info.get_namespace(),
+                             base_info.get_name(),
+                             ambiguous_base.__info__.get_namespace(),
+                             ambiguous_base.__info__.get_name()))
                 hook_up_vfunc_implementation(vfunc_info, cls.__gtype__,
                                              py_vfunc)
 
@@ -130,14 +168,10 @@ class MetaClassHelper(object):
         if class_info is None or not isinstance(class_info, ObjectInfo):
             return
 
-        # Special case skipping of vfuncs for GObject.Object because they will break
-        # the static bindings which will try to use them.
-        if cls.__module__ == 'gi.repository.GObject' and cls.__name__ == 'Object':
-            return
-
         for vfunc_info in class_info.get_vfuncs():
-            name = 'do_%s' % vfunc_info.__name__
-            setattr(cls, name, vfunc_info)
+            name = 'do_%s' % vfunc_info.get_name()
+            value = NativeVFunc(vfunc_info)
+            setattr(cls, name, value)
 
 
 def find_vfunc_info_in_interface(bases, vfunc_name):
@@ -146,19 +180,15 @@ def find_vfunc_info_in_interface(bases, vfunc_name):
         # This can be seen in IntrospectionModule.__getattr__() in module.py.
         # We do not need to search regular classes here, only wrapped interfaces.
         # We also skip GInterface, because it is not wrapped and has no __info__ attr.
-        # Skip bases without __info__ (static _gi.GObject)
-        if base is GInterface or\
-                not issubclass(base, GInterface) or\
-                not hasattr(base, '__info__'):
+        if base is _gobject.GInterface or\
+                not issubclass(base, _gobject.GInterface) or\
+                not isinstance(base.__info__, InterfaceInfo):
             continue
 
-        # Only look at this classes vfuncs if it is an interface.
-        if isinstance(base.__info__, InterfaceInfo):
-            for vfunc in base.__info__.get_vfuncs():
-                if vfunc.get_name() == vfunc_name:
-                    return vfunc
+        for vfunc in base.__info__.get_vfuncs():
+            if vfunc.get_name() == vfunc_name:
+                return vfunc
 
-        # Recurse into the parent classes
         vfunc = find_vfunc_info_in_interface(base.__bases__, vfunc_name)
         if vfunc is not None:
             return vfunc
@@ -183,32 +213,8 @@ def find_vfunc_conflict_in_bases(vfunc, bases):
     return None
 
 
-class _GObjectMetaBase(type):
-    """Metaclass for automatically registering GObject classes."""
-    def __init__(cls, name, bases, dict_):
-        type.__init__(cls, name, bases, dict_)
-        propertyhelper.install_properties(cls)
-        signalhelper.install_signals(cls)
-        cls._type_register(cls.__dict__)
-
-    def _type_register(cls, namespace):
-        # don't register the class if already registered
-        if '__gtype__' in namespace:
-            return
-
-        # Do not register a new GType for the overrides, as this would sort of
-        # defeat the purpose of overrides...
-        if cls.__module__.startswith('gi.overrides.'):
-            return
-
-        _gi.type_register(cls, namespace.get('__gtype_name__'))
-
-
-_gi._install_metaclass(_GObjectMetaBase)
-
+class GObjectMeta(_gobject.GObjectMeta, MetaClassHelper):
 
-class GObjectMeta(_GObjectMetaBase, MetaClassHelper):
-    """Meta class used for GI GObject based types."""
     def __init__(cls, name, bases, dict_):
         super(GObjectMeta, cls).__init__(name, bases, dict_)
         is_gi_defined = False
@@ -222,78 +228,38 @@ class GObjectMeta(_GObjectMetaBase, MetaClassHelper):
         if is_python_defined:
             cls._setup_vfuncs()
         elif is_gi_defined:
-            if isinstance(cls.__info__, ObjectInfo):
-                cls._setup_class_methods()
             cls._setup_methods()
             cls._setup_constants()
             cls._setup_native_vfuncs()
 
             if isinstance(cls.__info__, ObjectInfo):
                 cls._setup_fields()
+                cls._setup_constructors()
             elif isinstance(cls.__info__, InterfaceInfo):
                 register_interface_info(cls.__info__.get_g_type())
 
     def mro(cls):
         return mro(cls)
 
-    @property
-    def __doc__(cls):
-        """Meta class property which shows up on any class using this meta-class."""
-        if cls == GObjectMeta:
-            return ''
-
-        doc = cls.__dict__.get('__doc__', None)
-        if doc is not None:
-            return doc
-
-        # For repository classes, dynamically generate a doc string if it wasn't overridden.
-        if cls.__module__.startswith(('gi.repository.', 'gi.overrides')):
-            return generate_doc_string(cls.__info__)
-
-        return None
-
 
 def mro(C):
-    """Compute the class precedence list (mro) according to C3, with GObject
-    interface considerations.
-
-    We override Python's MRO calculation to account for the fact that
-    GObject classes are not affected by the diamond problem:
-    http://en.wikipedia.org/wiki/Diamond_problem
+    """Compute the class precedence list (mro) according to C3
 
     Based on http://www.python.org/download/releases/2.3/mro/
+    Modified to consider that interfaces don't create the diamond problem
     """
     # TODO: If this turns out being too slow, consider using generators
     bases = []
     bases_of_subclasses = [[C]]
 
     if C.__bases__:
-        for base in C.__bases__:
-            # Python causes MRO's to be calculated starting with the lowest
-            # base class and working towards the descendant, storing the result
-            # in __mro__ at each point. Therefore at this point we know that
-            # we already have our base class MRO's available to us, there is
-            # no need for us to (re)calculate them.
-            if hasattr(base, '__mro__'):
-                bases_of_subclasses += [list(base.__mro__)]
-            else:
-                warnings.warn('Mixin class %s is an old style class, please '
-                              'update this to derive from "object".' % base,
-                              RuntimeWarning)
-                # For old-style classes (Python2 only), the MRO is not
-                # easily accessible. As we do need it here, we calculate
-                # it via recursion, according to the C3 algorithm. Using C3
-                # for old style classes deviates from Python's own behaviour,
-                # but visible effects here would be a corner case triggered by
-                # questionable design.
-                bases_of_subclasses += [mro(base)]
-        bases_of_subclasses += [list(C.__bases__)]
+        bases_of_subclasses += list(map(mro, C.__bases__)) + [list(C.__bases__)]
 
     while bases_of_subclasses:
         for subclass_bases in bases_of_subclasses:
             candidate = subclass_bases[0]
             not_head = [s for s in bases_of_subclasses if candidate in s[1:]]
-            if not_head and GInterface not in candidate.__bases__:
+            if not_head and _gobject.GInterface not in candidate.__bases__:
                 candidate = None  # conflict, reject candidate
             else:
                 break
@@ -313,37 +279,23 @@ def mro(C):
     return bases
 
 
-def nothing(*args, **kwargs):
-    pass
-
-
 class StructMeta(type, MetaClassHelper):
-    """Meta class used for GI Struct based types."""
 
     def __init__(cls, name, bases, dict_):
         super(StructMeta, cls).__init__(name, bases, dict_)
 
         # Avoid touching anything else than the base class.
         g_type = cls.__info__.get_g_type()
-        if g_type != TYPE_INVALID and g_type.pytype is not None:
+        if g_type != _gobject.TYPE_INVALID and g_type.pytype is not None:
             return
 
         cls._setup_fields()
         cls._setup_methods()
+        cls._setup_constructors()
 
         for method_info in cls.__info__.get_methods():
             if method_info.is_constructor() and \
-                    method_info.__name__ == 'new' and \
-                    (not method_info.get_arguments() or
-                     cls.__info__.get_size() == 0):
-                cls.__new__ = staticmethod(method_info)
-                # Boxed will raise an exception
-                # if arguments are given to __init__
-                cls.__init__ = nothing
+                    method_info.get_name() == 'new' and \
+                    not method_info.get_arguments():
+                cls.__new__ = staticmethod(Constructor(method_info))
                 break
-
-    @property
-    def __doc__(cls):
-        if cls == StructMeta:
-            return ''
-        return generate_doc_string(cls.__info__)
index 59990a1..a9244eb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2014-09-12.12; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,21 +35,25 @@ scriptversion=2014-09-12.12; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
+# `make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
-tab='  '
 nl='
 '
-IFS=" $tab$nl"
+IFS=" ""       $nl"
 
-# Set DOITPROG to "echo" to test this script.
+# set DOITPROG to echo to test this script
 
+# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-doit_exec=${doit:-exec}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -64,6 +68,17 @@ mvprog=${MVPROG-mv}
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -82,7 +97,7 @@ dir_arg=
 dst_arg=
 
 copy_on_change=false
-is_target_a_directory=possibly
+no_target_directory=
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -122,57 +137,46 @@ while test $# -ne 0; do
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-        shift;;
+       shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-        case $mode in
-          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
-            echo "$0: invalid mode: $mode" >&2
-            exit 1;;
-        esac
-        shift;;
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
 
     -o) chowncmd="$chownprog $2"
-        shift;;
+       shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t)
-        is_target_a_directory=always
-        dst_arg=$2
-        # Protect names problematic for 'test' and other utilities.
-        case $dst_arg in
-          -* | [=\(\)!]) dst_arg=./$dst_arg;;
-        esac
-        shift;;
+    -t) dst_arg=$2
+       # Protect names problematic for `test' and other utilities.
+       case $dst_arg in
+         -* | [=\(\)!]) dst_arg=./$dst_arg;;
+       esac
+       shift;;
 
-    -T) is_target_a_directory=never;;
+    -T) no_target_directory=true;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --) shift
-        break;;
+    --)        shift
+       break;;
 
-    -*) echo "$0: invalid option: $1" >&2
-        exit 1;;
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
-# We allow the use of options -d and -T together, by making -d
-# take the precedence; this is for compatibility with GNU install.
-
-if test -n "$dir_arg"; then
-  if test -n "$dst_arg"; then
-    echo "$0: target directory not allowed when installing a directory." >&2
-    exit 1
-  fi
-fi
-
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -186,7 +190,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
-    # Protect names problematic for 'test' and other utilities.
+    # Protect names problematic for `test' and other utilities.
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
@@ -198,21 +202,12 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call 'install-sh -d' without argument.
+  # It's OK to call `install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
 
 if test -z "$dir_arg"; then
-  if test $# -gt 1 || test "$is_target_a_directory" = always; then
-    if test ! -d "$dst_arg"; then
-      echo "$0: $dst_arg: Is not a directory." >&2
-      exit 1
-    fi
-  fi
-fi
-
-if test -z "$dir_arg"; then
   do_exit='(exit $ret); exit $ret'
   trap "ret=129; $do_exit" 1
   trap "ret=130; $do_exit" 2
@@ -228,16 +223,16 @@ if test -z "$dir_arg"; then
 
     *[0-7])
       if test -z "$stripcmd"; then
-        u_plus_rw=
+       u_plus_rw=
       else
-        u_plus_rw='% 200'
+       u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-        u_plus_rw=
+       u_plus_rw=
       else
-        u_plus_rw=,u+rw
+       u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -245,7 +240,7 @@ fi
 
 for src
 do
-  # Protect names problematic for 'test' and other utilities.
+  # Protect names problematic for `test' and other utilities.
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
@@ -274,15 +269,41 @@ do
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test "$is_target_a_directory" = never; then
-        echo "$0: $dst_arg: Is a directory" >&2
-        exit 1
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      dstdir=`dirname "$dst"`
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -293,81 +314,74 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-        # Create intermediate dirs using mode 755 as modified by the umask.
-        # This is like FreeBSD 'install' as of 1997-10-28.
-        umask=`umask`
-        case $stripcmd.$umask in
-          # Optimize common cases.
-          *[2367][2367]) mkdir_umask=$umask;;
-          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-          *[0-7])
-            mkdir_umask=`expr $umask + 22 \
-              - $umask % 100 % 40 + $umask % 20 \
-              - $umask % 10 % 4 + $umask % 2
-            `;;
-          *) mkdir_umask=$umask,go-w;;
-        esac
-
-        # With -d, create the new directory with the user-specified mode.
-        # Otherwise, rely on $mkdir_umask.
-        if test -n "$dir_arg"; then
-          mkdir_mode=-m$mode
-        else
-          mkdir_mode=
-        fi
-
-        posix_mkdir=false
-        case $umask in
-          *[123567][0-7][0-7])
-            # POSIX mkdir -p sets u+wx bits regardless of umask, which
-            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-            ;;
-          *)
-            # $RANDOM is not portable (e.g. dash);  use it when possible to
-            # lower collision chance
-            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
-            # create the $tmpdir first (and fail if unsuccessful) to make sure
-            # that nobody tries to guess the $tmpdir name.
-            if (umask $mkdir_umask &&
-                $mkdirprog $mkdir_mode "$tmpdir" &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
-            then
-              if test -z "$dir_arg" || {
-                   # Check for POSIX incompatibilities with -m.
-                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                   # other-writable bit of parent directory when it shouldn't.
-                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   test_tmpdir="$tmpdir/a"
-                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
-                   case $ls_ld_tmpdir in
-                     d????-?r-*) different_mode=700;;
-                     d????-?--*) different_mode=755;;
-                     *) false;;
-                   esac &&
-                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
-                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                   }
-                 }
-              then posix_mkdir=:
-              fi
-              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
-            else
-              # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
-            fi
-            trap '' 0;;
-        esac;;
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
     esac
 
     if
       $posix_mkdir && (
-        umask $mkdir_umask &&
-        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -377,51 +391,53 @@ do
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-        /*) prefix='/';;
-        [-=\(\)!]*) prefix='./';;
-        *)  prefix='';;
+       /*) prefix='/';;
+       [-=\(\)!]*) prefix='./';;
+       *)  prefix='';;
       esac
 
+      eval "$initialize_posix_glob"
+
       oIFS=$IFS
       IFS=/
-      set -f
+      $posix_glob set -f
       set fnord $dstdir
       shift
-      set +f
+      $posix_glob set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-        test X"$d" = X && continue
-
-        prefix=$prefix$d
-        if test -d "$prefix"; then
-          prefixes=
-        else
-          if $posix_mkdir; then
-            (umask=$mkdir_umask &&
-             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-            # Don't fail if two instances are running concurrently.
-            test -d "$prefix" || exit 1
-          else
-            case $prefix in
-              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-              *) qprefix=$prefix;;
-            esac
-            prefixes="$prefixes '$qprefix'"
-          fi
-        fi
-        prefix=$prefix/
+       test X"$d" = X && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-        # Don't fail if two instances are running concurrently.
-        (umask $mkdir_umask &&
-         eval "\$doit_exec \$mkdirprog $prefixes") ||
-          test -d "$dstdir" || exit 1
-        obsolete_mkdir_used=true
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -456,12 +472,15 @@ do
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
-       set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       set +f &&
+       $posix_glob set +f &&
+
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -474,24 +493,24 @@ do
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-        # Now remove or move aside any old file at destination location.
-        # We try this two ways since rm can't unlink itself on some
-        # systems and the destination file might be busy for other
-        # reasons.  In this case, the final cleanup might fail but the new
-        # file should still install successfully.
-        {
-          test ! -f "$dst" ||
-          $doit $rmcmd -f "$dst" 2>/dev/null ||
-          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-          } ||
-          { echo "$0: cannot unlink or rename $dst" >&2
-            (exit 1); exit 1
-          }
-        } &&
-
-        # Now rename the file to the real destination.
-        $doit $mvcmd "$dsttmp" "$dst"
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
index a736cf9..c2852d8 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,12 +1,9 @@
-#! /bin/sh
-## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
-##               by inline-source v2014-01-03.01
 
-# libtool (GNU libtool) 2.4.6
-# Provide generalized library-building support services.
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-2"
-package_revision=2.4.6
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Run './libtool --help' for help with using this script from the
-# command line.
-
-
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
-
-# After configure completes, it has a better idea of some of the
-# shell tools we need than the defaults used by the functions shared
-# with bootstrap, so set those here where they can still be over-
-# ridden by the user, but otherwise take precedence.
-
-: ${AUTOCONF="autoconf"}
-: ${AUTOMAKE="automake"}
-
-
-## -------------------------- ##
-## Source external libraries. ##
-## -------------------------- ##
-
-# Much of our low-level functionality needs to be sourced from external
-# libraries, which are installed to $pkgauxdir.
-
-# Set a version string for this script.
-scriptversion=2015-01-20.17; # UTC
-
-# General shell script boiler plate, and helper functions.
-# Written by Gary V. Vaughan, 2004
-
-# Copyright (C) 2004-2015 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-
-# As a special exception to the GNU General Public License, if you distribute
-# this file as part of a program or library that is built using GNU Libtool,
-# you may include this file under the same distribution terms that you use
-# for the rest of that program.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
-# Please report bugs or propose patches to gary@gnu.org.
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# Evaluate this file near the top of your script to gain access to
-# the functions and variables defined here:
+# Usage: $progname [OPTION]... [MODE-ARG]...
+#
+# Provide generalized library-building support services.
 #
-#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
 #
-# If you need to override any of the default environment variable
-# settings, do that before evaluating this file.
-
-
-## -------------------- ##
-## Shell normalisation. ##
-## -------------------- ##
+# MODE must be one of the following:
+#
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#         host-triplet:        $host
+#         shell:               $SHELL
+#         compiler:            $LTCC
+#         compiler flags:              $LTCFLAGS
+#         linker:              $LD (gnu? $with_gnu_ld)
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
+#         automake:    $automake_version
+#         autoconf:    $autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
-# Some shells need a little help to be as Bourne compatible as possible.
-# Before doing anything else, make sure all that help has been provided!
+PROGRAM=libtool
+PACKAGE=libtool
+VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
+TIMESTAMP=""
+package_revision=1.3337
 
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
-fi
-
-# NLS nuisances: We save the old values in case they are required later.
-_G_user_locale=
-_G_safe_locale=
-for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
-  eval "if test set = \"\${$_G_var+set}\"; then
-          save_$_G_var=\$$_G_var
-          $_G_var=C
-         export $_G_var
-         _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
-         _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
-       fi"
-done
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Make sure IFS has a sensible default
-sp=' '
-nl='
-'
-IFS="$sp       $nl"
-
-# There are apparently some retarded systems that use ';' as a PATH separator!
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
 fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
 
-
-
-## ------------------------- ##
-## Locate command utilities. ##
-## ------------------------- ##
-
-
-# func_executable_p FILE
-# ----------------------
-# Check that FILE is an executable regular file.
-func_executable_p ()
-{
-    test -f "$1" && test -x "$1"
-}
-
-
-# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
-# --------------------------------------------
-# Search for either a program that responds to --version with output
-# containing "GNU", or else returned by CHECK_FUNC otherwise, by
-# trying all the directories in PATH with each of the elements of
-# PROGS_LIST.
-#
-# CHECK_FUNC should accept the path to a candidate program, and
-# set $func_check_prog_result if it truncates its output less than
-# $_G_path_prog_max characters.
-func_path_progs ()
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
 {
-    _G_progs_list=$1
-    _G_check_func=$2
-    _G_PATH=${3-"$PATH"}
-
-    _G_path_prog_max=0
-    _G_path_prog_found=false
-    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
-    for _G_dir in $_G_PATH; do
-      IFS=$_G_save_IFS
-      test -z "$_G_dir" && _G_dir=.
-      for _G_prog_name in $_G_progs_list; do
-        for _exeext in '' .EXE; do
-          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
-          func_executable_p "$_G_path_prog" || continue
-          case `"$_G_path_prog" --version 2>&1` in
-            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
-            *)     $_G_check_func $_G_path_prog
-                  func_path_progs_result=$func_check_prog_result
-                  ;;
-          esac
-          $_G_path_prog_found && break 3
-        done
-      done
-    done
-    IFS=$_G_save_IFS
-    test -z "$func_path_progs_result" && {
-      echo "no acceptable sed could be found in \$PATH" >&2
-      exit 1
-    }
-}
-
-
-# We want to be able to use the functions in this file before configure
-# has figured out where the best binaries are kept, which means we have
-# to search for them ourselves - except when the results are already set
-# where we skip the searches.
-
-# Unless the user overrides by setting SED, search the path for either GNU
-# sed, or the sed that truncates its output the least.
-test -z "$SED" && {
-  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-  for _G_i in 1 2 3 4 5 6 7; do
-    _G_sed_script=$_G_sed_script$nl$_G_sed_script
-  done
-  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
-  _G_sed_script=
-
-  func_check_prog_sed ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo '' >> conftest.nl
-      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
-
-  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
-  rm -f conftest.sed
-  SED=$func_path_progs_result
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
 }
 
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+         export $lt_var
+         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+       fi"
+done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
 
-# Unless the user overrides by setting GREP, search the path for either GNU
-# grep, or the grep that truncates its output the least.
-test -z "$GREP" && {
-  func_check_prog_grep ()
-  {
-    _G_path_prog=$1
-
-    _G_count=0
-    _G_path_prog_max=0
-    printf 0123456789 >conftest.in
-    while :
-    do
-      cat conftest.in conftest.in >conftest.tmp
-      mv conftest.tmp conftest.in
-      cp conftest.in conftest.nl
-      echo 'GREP' >> conftest.nl
-      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
-      diff conftest.out conftest.nl >/dev/null 2>&1 || break
-      _G_count=`expr $_G_count + 1`
-      if test "$_G_count" -gt "$_G_path_prog_max"; then
-        # Best one so far, save it but keep looking for a better one
-        func_check_prog_result=$_G_path_prog
-        _G_path_prog_max=$_G_count
-      fi
-      # 10*(2^10) chars as input seems more than enough
-      test 10 -lt "$_G_count" && break
-    done
-    rm -f conftest.in conftest.tmp conftest.nl conftest.out
-  }
+$lt_unset CDPATH
 
-  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
-  GREP=$func_path_progs_result
-}
 
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
 
-## ------------------------------- ##
-## User overridable command paths. ##
-## ------------------------------- ##
 
-# All uppercase variable names are used for environment variables.  These
-# variables can be overridden by the user before calling a script that
-# uses them if a suitable command of that name is not already available
-# in the command search PATH.
 
 : ${CP="cp -f"}
-: ${ECHO="printf %s\n"}
-: ${EGREP="$GREP -E"}
-: ${FGREP="$GREP -F"}
-: ${LN_S="ln -s"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
 
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
 
-## -------------------- ##
-## Useful sed snippets. ##
-## -------------------- ##
+exit_status=$EXIT_SUCCESS
 
-sed_dirname='s|/[^/]*$||'
-sed_basename='s|^.*/||'
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS="  $lt_nl"
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
 
-# Same as above, but do not quote variable references.
-sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
 
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
 
-# Sed substitution that converts a w32 file name or path
-# that contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-'\' parameter expansions in output of sed_double_quote_subst that
-# were '\'-ed in input to the same.  If an odd number of '\' preceded a
-# '$' in input to sed_double_quote_subst, that '$' was protected from
-# expansion.  Since each input '\' is now two '\'s, look for any number
-# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
-_G_bs='\\'
-_G_bs2='\\\\'
-_G_bs4='\\\\\\\\'
-_G_dollar='\$'
-sed_double_backslash="\
-  s/$_G_bs4/&\\
-/g
-  s/^$_G_bs2$_G_dollar/$_G_bs&/
-  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
-  s/\n//g"
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
 
 
-## ----------------- ##
-## Global variables. ##
-## ----------------- ##
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
 
-# Except for the global variables explicitly listed below, the following
-# functions in the '^func_' namespace, and the '^require_' namespace
-# variables initialised in the 'Resource management' section, sourcing
-# this file will not pollute your global namespace with anything
-# else. There's no portable way to scope variables in Bourne shell
-# though, so actually running these functions will sometimes place
-# results into a variable named after the function, and often use
-# temporary variables in the '^_G_' namespace. If you are careful to
-# avoid using those namespaces casually in your sourcing script, things
-# should continue to work as you expect. And, of course, you can freely
-# overwrite any of the functions or variables defined here before
-# calling anything to customize them.
 
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77     # $? = 77 is used to indicate a skipped test to automake.
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
 
-# Allow overriding, eg assuming that you follow the convention of
-# putting '$debug_cmd' at the start of all your functions, you can get
-# bash to show function call trace with:
-#
-#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
-debug_cmd=${debug_cmd-":"}
-exit_cmd=:
 
-# By convention, finish your script with:
-#
-#    exit $exit_status
-#
-# so that you can set exit_status to non-zero if you want to indicate
-# something went wrong during execution without actually bailing out at
-# the point of failure.
-exit_status=$EXIT_SUCCESS
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+               s@/\./@/@g
+               t dotsl
+               s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
 
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath=$0
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
 
-# The name of this program.
-progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
 
-# Make sure we have an absolute progpath for reexecution:
+# Make sure we have an absolute path for reexecution:
 case $progpath in
   [\\/]*|[A-Za-z]:\\*) ;;
   *[\\/]*)
-     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=$func_dirname_result
      progdir=`cd "$progdir" && pwd`
-     progpath=$progdir/$progname
+     progpath="$progdir/$progname"
      ;;
   *)
-     _G_IFS=$IFS
+     save_IFS="$IFS"
      IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
-       IFS=$_G_IFS
+       IFS="$save_IFS"
        test -x "$progdir/$progname" && break
      done
-     IFS=$_G_IFS
+     IFS="$save_IFS"
      test -n "$progdir" || progdir=`pwd`
-     progpath=$progdir/$progname
+     progpath="$progdir/$progname"
      ;;
 esac
 
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
-## ----------------- ##
-## Standard options. ##
-## ----------------- ##
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
 
-# The following options affect the operation of the functions defined
-# below, and should be set appropriately depending on run-time para-
-# meters passed on the command line.
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
 
+# Standard options:
 opt_dry_run=false
+opt_help=false
 opt_quiet=false
 opt_verbose=false
+opt_warning=:
 
-# Categories 'all' and 'none' are always available.  Append any others
-# you will pass as the first argument to func_warning from your own
-# code.
-warning_categories=
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
 
-# By default, display warnings according to 'opt_warning_types'.  Set
-# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
-# treat the next displayed warning as a fatal error.
-warning_func=func_warn_and_continue
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
 
-# Set to 'all' to display all warnings, 'none' to suppress all
-# warnings, or a space delimited list of some subset of
-# 'warning_categories' to display only the listed warnings.
-opt_warning_types=all
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
 
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
 
-## -------------------- ##
-## Resource management. ##
-## -------------------- ##
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
 
-# This section contains definitions for functions that each ensure a
-# particular resource (a file, or a non-empty configuration variable for
-# example) is available, and if appropriate to extract default values
-# from pertinent package files. Call them using their associated
-# 'require_*' variable to ensure that they are executed, at most, once.
-#
-# It's entirely deliberate that calling these functions can set
-# variables that don't obey the namespace limitations obeyed by the rest
-# of this file, in order that that they be as useful as possible to
-# callers.
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
 
+    # bash bug again:
+    :
+}
 
-# require_term_colors
-# -------------------
-# Allow display of bold text on terminals that support it.
-require_term_colors=func_require_term_colors
-func_require_term_colors ()
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
 {
-    $debug_cmd
-
-    test -t 1 && {
-      # COLORTERM and USE_ANSI_COLORS environment variables take
-      # precedence, because most terminfo databases neglect to describe
-      # whether color sequences are supported.
-      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
-
-      if test 1 = "$USE_ANSI_COLORS"; then
-        # Standard ANSI escape sequences
-        tc_reset='\e[0m'
-        tc_bold='\e[1m';   tc_standout='\e[7m'
-        tc_red='\e[31m';   tc_green='\e[32m'
-        tc_blue='\e[34m';  tc_cyan='\e[36m'
-      else
-        # Otherwise trust the terminfo database after all.
-        test -n "`tput sgr0 2>/dev/null`" && {
-          tc_reset=`tput sgr0`
-          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
-          tc_standout=$tc_bold
-          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
-          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
-          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
-          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
-          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
-        }
-      fi
-    }
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
 
-    require_term_colors=:
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
 }
+help="Try \`$progname --help' for more information."  ## default
 
 
-## ----------------- ##
-## Function library. ##
-## ----------------- ##
-
-# This section contains a variety of useful functions to call in your
-# scripts. Take note of the portable wrappers for features provided by
-# some modern shells, which will fall back to slower equivalents on
-# less featureful shells.
-
-
-# func_append VAR VALUE
-# ---------------------
-# Append VALUE onto the existing contents of VAR.
-
-  # We should try to minimise forks, especially on Windows where they are
-  # unreasonably slow, so skip the feature probes when bash or zsh are
-  # being used:
-  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
-    : ${_G_HAVE_ARITH_OP="yes"}
-    : ${_G_HAVE_XSI_OPS="yes"}
-    # The += operator was introduced in bash 3.1
-    case $BASH_VERSION in
-      [12].* | 3.0 | 3.0*) ;;
-      *)
-        : ${_G_HAVE_PLUSEQ_OP="yes"}
-        ;;
-    esac
-  fi
-
-  # _G_HAVE_PLUSEQ_OP
-  # Can be empty, in which case the shell is probed, "yes" if += is
-  # useable or anything else if it does not work.
-  test -z "$_G_HAVE_PLUSEQ_OP" \
-    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
-    && _G_HAVE_PLUSEQ_OP=yes
-
-if test yes = "$_G_HAVE_PLUSEQ_OP"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_append ()
-  {
-    $debug_cmd
-
-    eval "$1+=\$2"
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_append ()
-  {
-    $debug_cmd
-
-    eval "$1=\$$1\$2"
-  }
-fi
-
-
-# func_append_quoted VAR VALUE
-# ----------------------------
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-if test yes = "$_G_HAVE_PLUSEQ_OP"; then
-  eval 'func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_for_eval "$2"
-    eval "$1+=\\ \$func_quote_for_eval_result"
-  }'
-else
-  func_append_quoted ()
-  {
-    $debug_cmd
-
-    func_quote_for_eval "$2"
-    eval "$1=\$$1\\ \$func_quote_for_eval_result"
-  }
-fi
-
-
-# func_append_uniq VAR VALUE
-# --------------------------
-# Append unique VALUE onto the existing contents of VAR, assuming
-# entries are delimited by the first character of VALUE.  For example:
-#
-#   func_append_uniq options " --another-option option-argument"
-#
-# will only append to $options if " --another-option option-argument "
-# is not already present somewhere in $options already (note spaces at
-# each end implied by leading space in second argument).
-func_append_uniq ()
-{
-    $debug_cmd
-
-    eval _G_current_value='`$ECHO $'$1'`'
-    _G_delim=`expr "$2" : '\(.\)'`
-
-    case $_G_delim$_G_current_value$_G_delim in
-      *"$2$_G_delim"*) ;;
-      *) func_append "$@" ;;
-    esac
-}
-
-
-# func_arith TERM...
-# ------------------
-# Set func_arith_result to the result of evaluating TERMs.
-  test -z "$_G_HAVE_ARITH_OP" \
-    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
-    && _G_HAVE_ARITH_OP=yes
-
-if test yes = "$_G_HAVE_ARITH_OP"; then
-  eval 'func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=$(( $* ))
-  }'
-else
-  func_arith ()
-  {
-    $debug_cmd
-
-    func_arith_result=`expr "$@"`
-  }
-fi
-
-
-# func_basename FILE
-# ------------------
-# Set func_basename_result to FILE with everything up to and including
-# the last / stripped.
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  # If this shell supports suffix pattern removal, then use it to avoid
-  # forking. Hide the definitions single quotes in case the shell chokes
-  # on unsupported syntax...
-  _b='func_basename_result=${1##*/}'
-  _d='case $1 in
-        */*) func_dirname_result=${1%/*}$2 ;;
-        *  ) func_dirname_result=$3        ;;
-      esac'
-
-else
-  # ...otherwise fall back to using sed.
-  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
-  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
-      if test "X$func_dirname_result" = "X$1"; then
-        func_dirname_result=$3
-      else
-        func_append func_dirname_result "$2"
-      fi'
-fi
-
-eval 'func_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-}'
-
-
-# func_dirname FILE APPEND NONDIR_REPLACEMENT
-# -------------------------------------------
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-eval 'func_dirname ()
-{
-    $debug_cmd
-
-    '"$_d"'
-}'
-
-
-# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
-# --------------------------------------------------------
-# Perform func_basename and func_dirname in a single function
-# call:
-#   dirname:  Compute the dirname of FILE.  If nonempty,
-#             add APPEND to the result, otherwise set result
-#             to NONDIR_REPLACEMENT.
-#             value returned in "$func_dirname_result"
-#   basename: Compute filename of FILE.
-#             value retuned in "$func_basename_result"
-# For efficiency, we do not delegate to the functions above but instead
-# duplicate the functionality here.
-eval 'func_dirname_and_basename ()
-{
-    $debug_cmd
-
-    '"$_b"'
-    '"$_d"'
-}'
-
-
-# func_echo ARG...
-# ----------------
-# Echo program name prefixed message.
-func_echo ()
-{
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
-
-# func_echo_all ARG...
-# --------------------
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
-
-
-# func_echo_infix_1 INFIX ARG...
-# ------------------------------
-# Echo program name, followed by INFIX on the first line, with any
-# additional lines not showing INFIX.
-func_echo_infix_1 ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    _G_infix=$1; shift
-    _G_indent=$_G_infix
-    _G_prefix="$progname: $_G_infix: "
-    _G_message=$*
-
-    # Strip color escape sequences before counting printable length
-    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
-    do
-      test -n "$_G_tc" && {
-        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
-        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
-      }
-    done
-    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
-
-    func_echo_infix_1_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_infix_1_IFS
-      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
-      _G_prefix=$_G_indent
-    done
-    IFS=$func_echo_infix_1_IFS
-}
-
-
-# func_error ARG...
-# -----------------
-# Echo program name prefixed message to standard error.
-func_error ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
-}
-
-
-# func_fatal_error ARG...
-# -----------------------
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    $debug_cmd
-
-    func_error "$*"
-    exit $EXIT_FAILURE
-}
-
-
-# func_grep EXPRESSION FILENAME
-# -----------------------------
+# func_grep expression filename
 # Check whether EXPRESSION matches any line of FILENAME, without output.
 func_grep ()
 {
-    $debug_cmd
-
     $GREP "$1" "$2" >/dev/null 2>&1
 }
 
 
-# func_len STRING
-# ---------------
-# Set func_len_result to the length of STRING. STRING may not
-# start with a hyphen.
-  test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=${#1}
-  }'
-else
-  func_len ()
-  {
-    $debug_cmd
-
-    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
-  }
-fi
-
-
-# func_mkdir_p DIRECTORY-PATH
-# ---------------------------
+# func_mkdir_p directory-path
 # Make sure the entire path to DIRECTORY-PATH is available.
 func_mkdir_p ()
 {
-    $debug_cmd
-
-    _G_directory_path=$1
-    _G_dir_list=
+    my_directory_path="$1"
+    my_dir_list=
 
-    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
 
-      # Protect directory names starting with '-'
-      case $_G_directory_path in
-        -*) _G_directory_path=./$_G_directory_path ;;
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
       esac
 
       # While some portion of DIR does not yet exist...
-      while test ! -d "$_G_directory_path"; do
+      while test ! -d "$my_directory_path"; do
         # ...make a list in topmost first order.  Use a colon delimited
        # list incase some portion of path contains whitespace.
-        _G_dir_list=$_G_directory_path:$_G_dir_list
+        my_dir_list="$my_directory_path:$my_dir_list"
 
         # If the last portion added has no slash in it, the list is done
-        case $_G_directory_path in */*) ;; *) break ;; esac
+        case $my_directory_path in */*) ;; *) break ;; esac
 
         # ...otherwise throw away the child directory and loop
-        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
       done
-      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
 
-      func_mkdir_p_IFS=$IFS; IFS=:
-      for _G_dir in $_G_dir_list; do
-       IFS=$func_mkdir_p_IFS
-        # mkdir can fail with a 'File exist' error if two processes
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+       IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
         # try to create one of the directories concurrently.  Don't
         # stop in that case!
-        $MKDIR "$_G_dir" 2>/dev/null || :
+        $MKDIR "$my_dir" 2>/dev/null || :
       done
-      IFS=$func_mkdir_p_IFS
+      IFS="$save_mkdir_p_IFS"
 
       # Bail out if we (or some other process) failed to create a directory.
-      test -d "$_G_directory_path" || \
-        func_fatal_error "Failed to create '$1'"
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
     fi
 }
 
 
-# func_mktempdir [BASENAME]
-# -------------------------
+# func_mktempdir [string]
 # Make a temporary directory that won't clash with other running
 # libtool processes, and avoids race conditions if possible.  If
-# given, BASENAME is the basename for that directory.
+# given, STRING is the basename for that directory.
 func_mktempdir ()
 {
-    $debug_cmd
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
 
-    _G_template=${TMPDIR-/tmp}/${1-$progname}
-
-    if test : = "$opt_dry_run"; then
+    if test "$opt_dry_run" = ":"; then
       # Return a directory name, but don't create it in dry-run mode
-      _G_tmpdir=$_G_template-$$
+      my_tmpdir="${my_template}-$$"
     else
 
       # If mktemp works, use that first and foremost
-      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
 
-      if test ! -d "$_G_tmpdir"; then
+      if test ! -d "$my_tmpdir"; then
         # Failing that, at least try and use $RANDOM to avoid a race
-        _G_tmpdir=$_G_template-${RANDOM-0}$$
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
 
-        func_mktempdir_umask=`umask`
+        save_mktempdir_umask=`umask`
         umask 0077
-        $MKDIR "$_G_tmpdir"
-        umask $func_mktempdir_umask
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
       fi
 
       # If we're not in dry-run mode, bomb out on failure
-      test -d "$_G_tmpdir" || \
-        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
-    fi
-
-    $ECHO "$_G_tmpdir"
-}
-
-
-# func_normal_abspath PATH
-# ------------------------
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-func_normal_abspath ()
-{
-    $debug_cmd
-
-    # These SED scripts presuppose an absolute path with a trailing slash.
-    _G_pathcar='s|^/\([^/]*\).*$|\1|'
-    _G_pathcdr='s|^/[^/]*||'
-    _G_removedotparts=':dotsl
-               s|/\./|/|g
-               t dotsl
-               s|/\.$|/|'
-    _G_collapseslashes='s|/\{1,\}|/|g'
-    _G_finalslash='s|/*$|/|'
-
-    # Start from root dir and reassemble the path.
-    func_normal_abspath_result=
-    func_normal_abspath_tpath=$1
-    func_normal_abspath_altnamespace=
-    case $func_normal_abspath_tpath in
-      "")
-        # Empty path, that just means $cwd.
-        func_stripname '' '/' "`pwd`"
-        func_normal_abspath_result=$func_stripname_result
-        return
-        ;;
-      # The next three entries are used to spot a run of precisely
-      # two leading slashes without using negated character classes;
-      # we take advantage of case's first-match behaviour.
-      ///*)
-        # Unusual form of absolute path, do nothing.
-        ;;
-      //*)
-        # Not necessarily an ordinary path; POSIX reserves leading '//'
-        # and for example Cygwin uses it to access remote file shares
-        # over CIFS/SMB, so we conserve a leading double slash if found.
-        func_normal_abspath_altnamespace=/
-        ;;
-      /*)
-        # Absolute path, do nothing.
-        ;;
-      *)
-        # Relative path, prepend $cwd.
-        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-        ;;
-    esac
-
-    # Cancel out all the simple stuff to save iterations.  We also want
-    # the path to end with a slash for ease of parsing, so make sure
-    # there is one (and only one) here.
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
-    while :; do
-      # Processed it all yet?
-      if test / = "$func_normal_abspath_tpath"; then
-        # If we ascended to the root using ".." the result may be empty now.
-        if test -z "$func_normal_abspath_result"; then
-          func_normal_abspath_result=/
-        fi
-        break
-      fi
-      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcar"`
-      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-          -e "$_G_pathcdr"`
-      # Figure out what to do with it
-      case $func_normal_abspath_tcomponent in
-        "")
-          # Trailing empty path component, ignore it.
-          ;;
-        ..)
-          # Parent dir; strip last assembled component from result.
-          func_dirname "$func_normal_abspath_result"
-          func_normal_abspath_result=$func_dirname_result
-          ;;
-        *)
-          # Actual path component, append it.
-          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
-          ;;
-      esac
-    done
-    # Restore leading double-slash if one was found on entry.
-    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-
-# func_notquiet ARG...
-# --------------------
-# Echo program name prefixed message only when not in quiet mode.
-func_notquiet ()
-{
-    $debug_cmd
-
-    $opt_quiet || func_echo ${1+"$@"}
-
-    # A bug in bash halts the script if the last line of a function
-    # fails when set -e is in force, so we need another command to
-    # work around that:
-    :
-}
-
-
-# func_relative_path SRCDIR DSTDIR
-# --------------------------------
-# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
-func_relative_path ()
-{
-    $debug_cmd
-
-    func_relative_path_result=
-    func_normal_abspath "$1"
-    func_relative_path_tlibdir=$func_normal_abspath_result
-    func_normal_abspath "$2"
-    func_relative_path_tbindir=$func_normal_abspath_result
-
-    # Ascend the tree starting from libdir
-    while :; do
-      # check if we have found a prefix of bindir
-      case $func_relative_path_tbindir in
-        $func_relative_path_tlibdir)
-          # found an exact match
-          func_relative_path_tcancelled=
-          break
-          ;;
-        $func_relative_path_tlibdir*)
-          # found a matching prefix
-          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-          func_relative_path_tcancelled=$func_stripname_result
-          if test -z "$func_relative_path_result"; then
-            func_relative_path_result=.
-          fi
-          break
-          ;;
-        *)
-          func_dirname $func_relative_path_tlibdir
-          func_relative_path_tlibdir=$func_dirname_result
-          if test -z "$func_relative_path_tlibdir"; then
-            # Have to descend all the way to the root!
-            func_relative_path_result=../$func_relative_path_result
-            func_relative_path_tcancelled=$func_relative_path_tbindir
-            break
-          fi
-          func_relative_path_result=../$func_relative_path_result
-          ;;
-      esac
-    done
-
-    # Now calculate path; take care to avoid doubling-up slashes.
-    func_stripname '' '/' "$func_relative_path_result"
-    func_relative_path_result=$func_stripname_result
-    func_stripname '/' '/' "$func_relative_path_tcancelled"
-    if test -n "$func_stripname_result"; then
-      func_append func_relative_path_result "/$func_stripname_result"
-    fi
-
-    # Normalisation. If bindir is libdir, return '.' else relative path.
-    if test -n "$func_relative_path_result"; then
-      func_stripname './' '' "$func_relative_path_result"
-      func_relative_path_result=$func_stripname_result
-    fi
-
-    test -n "$func_relative_path_result" || func_relative_path_result=.
-
-    :
-}
-
-
-# func_quote_for_eval ARG...
-# --------------------------
-# Aesthetically quote ARGs to be evaled later.
-# This function returns two values:
-#   i) func_quote_for_eval_result
-#      double-quoted, suitable for a subsequent eval
-#  ii) func_quote_for_eval_unquoted_result
-#      has all characters that are still active within double
-#      quotes backslashified.
-func_quote_for_eval ()
-{
-    $debug_cmd
-
-    func_quote_for_eval_unquoted_result=
-    func_quote_for_eval_result=
-    while test 0 -lt $#; do
-      case $1 in
-        *[\\\`\"\$]*)
-         _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
-        *)
-          _G_unquoted_arg=$1 ;;
-      esac
-      if test -n "$func_quote_for_eval_unquoted_result"; then
-       func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
-      else
-        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
-      fi
-
-      case $_G_unquoted_arg in
-        # Double-quote args containing shell metacharacters to delay
-        # word splitting, command substitution and variable expansion
-        # for a subsequent eval.
-        # Many Bourne shells cannot handle close brackets correctly
-        # in scan sets, so we specify it separately.
-        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \  ]*|*]*|"")
-          _G_quoted_arg=\"$_G_unquoted_arg\"
-          ;;
-        *)
-          _G_quoted_arg=$_G_unquoted_arg
-         ;;
-      esac
-
-      if test -n "$func_quote_for_eval_result"; then
-       func_append func_quote_for_eval_result " $_G_quoted_arg"
-      else
-        func_append func_quote_for_eval_result "$_G_quoted_arg"
-      fi
-      shift
-    done
-}
-
-
-# func_quote_for_expand ARG
-# -------------------------
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    $debug_cmd
-
-    case $1 in
-      *[\\\`\"]*)
-       _G_arg=`$ECHO "$1" | $SED \
-           -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        _G_arg=$1 ;;
-    esac
-
-    case $_G_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        _G_arg=\"$_G_arg\"
-        ;;
-    esac
-
-    func_quote_for_expand_result=$_G_arg
-}
-
-
-# func_stripname PREFIX SUFFIX NAME
-# ---------------------------------
-# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_stripname ()
-  {
-    $debug_cmd
-
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary variable first.
-    func_stripname_result=$3
-    func_stripname_result=${func_stripname_result#"$1"}
-    func_stripname_result=${func_stripname_result%"$2"}
-  }'
-else
-  func_stripname ()
-  {
-    $debug_cmd
-
-    case $2 in
-      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
-      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
-    esac
-  }
-fi
-
-
-# func_show_eval CMD [FAIL_EXP]
-# -----------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    func_quote_for_expand "$_G_cmd"
-    eval "func_notquiet $func_quote_for_expand_result"
-
-    $opt_dry_run || {
-      eval "$_G_cmd"
-      _G_status=$?
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_show_eval_locale CMD [FAIL_EXP]
-# ------------------------------------
-# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
-# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.  Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
-    $debug_cmd
-
-    _G_cmd=$1
-    _G_fail_exp=${2-':'}
-
-    $opt_quiet || {
-      func_quote_for_expand "$_G_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
-
-    $opt_dry_run || {
-      eval "$_G_user_locale
-           $_G_cmd"
-      _G_status=$?
-      eval "$_G_safe_locale"
-      if test 0 -ne "$_G_status"; then
-       eval "(exit $_G_status); $_G_fail_exp"
-      fi
-    }
-}
-
-
-# func_tr_sh
-# ----------
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result.  All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
-    $debug_cmd
-
-    case $1 in
-    [0-9]* | *[!a-zA-Z0-9_]*)
-      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
-      ;;
-    * )
-      func_tr_sh_result=$1
-      ;;
-    esac
-}
-
-
-# func_verbose ARG...
-# -------------------
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $debug_cmd
-
-    $opt_verbose && func_echo "$*"
-
-    :
-}
-
-
-# func_warn_and_continue ARG...
-# -----------------------------
-# Echo program name prefixed warning message to standard error.
-func_warn_and_continue ()
-{
-    $debug_cmd
-
-    $require_term_colors
-
-    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
-}
-
-
-# func_warning CATEGORY ARG...
-# ----------------------------
-# Echo program name prefixed warning message to standard error. Warning
-# messages can be filtered according to CATEGORY, where this function
-# elides messages where CATEGORY is not listed in the global variable
-# 'opt_warning_types'.
-func_warning ()
-{
-    $debug_cmd
-
-    # CATEGORY must be in the warning_categories list!
-    case " $warning_categories " in
-      *" $1 "*) ;;
-      *) func_internal_error "invalid warning category '$1'" ;;
-    esac
-
-    _G_category=$1
-    shift
-
-    case " $opt_warning_types " in
-      *" $_G_category "*) $warning_func ${1+"$@"} ;;
-    esac
-}
-
-
-# func_sort_ver VER1 VER2
-# -----------------------
-# 'sort -V' is not generally available.
-# Note this deviates from the version comparison in automake
-# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
-# but this should suffice as we won't be specifying old
-# version formats or redundant trailing .0 in bootstrap.conf.
-# If we did want full compatibility then we should probably
-# use m4_version_compare from autoconf.
-func_sort_ver ()
-{
-    $debug_cmd
-
-    printf '%s\n%s\n' "$1" "$2" \
-      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
-}
-
-# func_lt_ver PREV CURR
-# ---------------------
-# Return true if PREV and CURR are in the correct order according to
-# func_sort_ver, otherwise false.  Use it like this:
-#
-#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
-func_lt_ver ()
-{
-    $debug_cmd
-
-    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
-}
-
-
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
-#! /bin/sh
-
-# Set a version string for this script.
-scriptversion=2014-01-07.03; # UTC
-
-# A portable, pluggable option parser for Bourne shell.
-# Written by Gary V. Vaughan, 2010
-
-# Copyright (C) 2010-2015 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Please report bugs or propose patches to gary@gnu.org.
-
-
-## ------ ##
-## Usage. ##
-## ------ ##
-
-# This file is a library for parsing options in your shell scripts along
-# with assorted other useful supporting features that you can make use
-# of too.
-#
-# For the simplest scripts you might need only:
-#
-#   #!/bin/sh
-#   . relative/path/to/funclib.sh
-#   . relative/path/to/options-parser
-#   scriptversion=1.0
-#   func_options ${1+"$@"}
-#   eval set dummy "$func_options_result"; shift
-#   ...rest of your script...
-#
-# In order for the '--version' option to work, you will need to have a
-# suitably formatted comment like the one at the top of this file
-# starting with '# Written by ' and ending with '# warranty; '.
-#
-# For '-h' and '--help' to work, you will also need a one line
-# description of your script's purpose in a comment directly above the
-# '# Written by ' line, like the one at the top of this file.
-#
-# The default options also support '--debug', which will turn on shell
-# execution tracing (see the comment above debug_cmd below for another
-# use), and '--verbose' and the func_verbose function to allow your script
-# to display verbose messages only when your user has specified
-# '--verbose'.
-#
-# After sourcing this file, you can plug processing for additional
-# options by amending the variables from the 'Configuration' section
-# below, and following the instructions in the 'Option parsing'
-# section further down.
-
-## -------------- ##
-## Configuration. ##
-## -------------- ##
-
-# You should override these variables in your script after sourcing this
-# file so that they reflect the customisations you have added to the
-# option parser.
-
-# The usage line for option parsing errors and the start of '-h' and
-# '--help' output messages. You can embed shell variables for delayed
-# expansion at the time the message is displayed, but you will need to
-# quote other shell meta-characters carefully to prevent them being
-# expanded when the contents are evaled.
-usage='$progpath [OPTION]...'
-
-# Short help message in response to '-h' and '--help'.  Add to this or
-# override it after sourcing this library to reflect the full set of
-# options your script accepts.
-usage_message="\
-       --debug        enable verbose shell tracing
-   -W, --warnings=CATEGORY
-                      report the warnings falling in CATEGORY [all]
-   -v, --verbose      verbosely report processing
-       --version      print version information and exit
-   -h, --help         print short or long help message and exit
-"
-
-# Additional text appended to 'usage_message' in response to '--help'.
-long_help_message="
-Warning categories include:
-       'all'          show all warnings
-       'none'         turn off all the warnings
-       'error'        warnings are treated as fatal errors"
-
-# Help message printed before fatal option parsing errors.
-fatal_help="Try '\$progname --help' for more information."
-
-
-
-## ------------------------- ##
-## Hook function management. ##
-## ------------------------- ##
-
-# This section contains functions for adding, removing, and running hooks
-# to the main code.  A hook is just a named list of of function, that can
-# be run in order later on.
-
-# func_hookable FUNC_NAME
-# -----------------------
-# Declare that FUNC_NAME will run hooks added with
-# 'func_add_hook FUNC_NAME ...'.
-func_hookable ()
-{
-    $debug_cmd
-
-    func_append hookable_fns " $1"
-}
-
-
-# func_add_hook FUNC_NAME HOOK_FUNC
-# ---------------------------------
-# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
-# first have been declared "hookable" by a call to 'func_hookable'.
-func_add_hook ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not accept hook functions." ;;
-    esac
-
-    eval func_append ${1}_hooks '" $2"'
-}
-
-
-# func_remove_hook FUNC_NAME HOOK_FUNC
-# ------------------------------------
-# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
-func_remove_hook ()
-{
-    $debug_cmd
-
-    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
-}
-
-
-# func_run_hooks FUNC_NAME [ARG]...
-# ---------------------------------
-# Run all hook functions registered to FUNC_NAME.
-# It is assumed that the list of hook functions contains nothing more
-# than a whitespace-delimited list of legal shell function names, and
-# no effort is wasted trying to catch shell meta-characters or preserve
-# whitespace.
-func_run_hooks ()
-{
-    $debug_cmd
-
-    case " $hookable_fns " in
-      *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
-    esac
-
-    eval _G_hook_fns=\$$1_hooks; shift
-
-    for _G_hook in $_G_hook_fns; do
-      eval $_G_hook '"$@"'
-
-      # store returned options list back into positional
-      # parameters for next 'cmd' execution.
-      eval _G_hook_result=\$${_G_hook}_result
-      eval set dummy "$_G_hook_result"; shift
-    done
-
-    func_quote_for_eval ${1+"$@"}
-    func_run_hooks_result=$func_quote_for_eval_result
-}
-
-
-
-## --------------- ##
-## Option parsing. ##
-## --------------- ##
-
-# In order to add your own option parsing hooks, you must accept the
-# full positional parameter list in your hook function, remove any
-# options that you action, and then pass back the remaining unprocessed
-# options in '<hooked_function_name>_result', escaped suitably for
-# 'eval'.  Like this:
-#
-#    my_options_prep ()
-#    {
-#        $debug_cmd
-#
-#        # Extend the existing usage message.
-#        usage_message=$usage_message'
-#      -s, --silent       don'\''t print informational messages
-#    '
-#
-#        func_quote_for_eval ${1+"$@"}
-#        my_options_prep_result=$func_quote_for_eval_result
-#    }
-#    func_add_hook func_options_prep my_options_prep
-#
-#
-#    my_silent_option ()
-#    {
-#        $debug_cmd
-#
-#        # Note that for efficiency, we parse as many options as we can
-#        # recognise in a loop before passing the remainder back to the
-#        # caller on the first unrecognised argument we encounter.
-#        while test $# -gt 0; do
-#          opt=$1; shift
-#          case $opt in
-#            --silent|-s) opt_silent=: ;;
-#            # Separate non-argument short options:
-#            -s*)         func_split_short_opt "$_G_opt"
-#                         set dummy "$func_split_short_opt_name" \
-#                             "-$func_split_short_opt_arg" ${1+"$@"}
-#                         shift
-#                         ;;
-#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
-#          esac
-#        done
-#
-#        func_quote_for_eval ${1+"$@"}
-#        my_silent_option_result=$func_quote_for_eval_result
-#    }
-#    func_add_hook func_parse_options my_silent_option
-#
-#
-#    my_option_validation ()
-#    {
-#        $debug_cmd
-#
-#        $opt_silent && $opt_verbose && func_fatal_help "\
-#    '--silent' and '--verbose' options are mutually exclusive."
-#
-#        func_quote_for_eval ${1+"$@"}
-#        my_option_validation_result=$func_quote_for_eval_result
-#    }
-#    func_add_hook func_validate_options my_option_validation
-#
-# You'll alse need to manually amend $usage_message to reflect the extra
-# options you parse.  It's preferable to append if you can, so that
-# multiple option parsing hooks can be added safely.
-
-
-# func_options [ARG]...
-# ---------------------
-# All the functions called inside func_options are hookable. See the
-# individual implementations for details.
-func_hookable func_options
-func_options ()
-{
-    $debug_cmd
-
-    func_options_prep ${1+"$@"}
-    eval func_parse_options \
-        ${func_options_prep_result+"$func_options_prep_result"}
-    eval func_validate_options \
-        ${func_parse_options_result+"$func_parse_options_result"}
-
-    eval func_run_hooks func_options \
-        ${func_validate_options_result+"$func_validate_options_result"}
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
+    fi
 
-    # save modified positional parameters for caller
-    func_options_result=$func_run_hooks_result
+    $ECHO "$my_tmpdir"
 }
 
 
-# func_options_prep [ARG]...
-# --------------------------
-# All initialisations required before starting the option parse loop.
-# Note that when calling hook functions, we pass through the list of
-# positional parameters.  If a hook function modifies that list, and
-# needs to propogate that back to rest of this script, then the complete
-# modified list must be put in 'func_run_hooks_result' before
-# returning.
-func_hookable func_options_prep
-func_options_prep ()
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
 {
-    $debug_cmd
-
-    # Option defaults:
-    opt_verbose=false
-    opt_warning_types=
-
-    func_run_hooks func_options_prep ${1+"$@"}
+    case $1 in
+      *[\\\`\"\$]*)
+       func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
+    esac
 
-    # save modified positional parameters for caller
-    func_options_prep_result=$func_run_hooks_result
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
 }
 
 
-# func_parse_options [ARG]...
-# ---------------------------
-# The main option parsing loop.
-func_hookable func_parse_options
-func_parse_options ()
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
 {
-    $debug_cmd
-
-    func_parse_options_result=
+    case $1 in
+      *[\\\`\"]*)
+       my_arg=`$ECHO "$1" | $SED \
+           -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
 
-    # this just eases exit handling
-    while test $# -gt 0; do
-      # Defer to hook functions for initial option parsing, so they
-      # get priority in the event of reusing an option name.
-      func_run_hooks func_parse_options ${1+"$@"}
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
 
-      # Adjust func_parse_options positional parameters to match
-      eval set dummy "$func_run_hooks_result"; shift
+    func_quote_for_expand_result="$my_arg"
+}
 
-      # Break out of the loop if we already parsed every option.
-      test $# -gt 0 || break
 
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --debug|-x)   debug_cmd='set -x'
-                      func_echo "enabling shell trace mode"
-                      $debug_cmd
-                      ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                      set dummy --warnings none ${1+"$@"}
-                      shift
-                     ;;
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
 
-        --warnings|--warning|-W)
-                      test $# = 0 && func_missing_arg $_G_opt && break
-                      case " $warning_categories $1" in
-                        *" $1 "*)
-                          # trailing space prevents matching last $1 above
-                          func_append_uniq opt_warning_types " $1"
-                          ;;
-                        *all)
-                          opt_warning_types=$warning_categories
-                          ;;
-                        *none)
-                          opt_warning_types=none
-                          warning_func=:
-                          ;;
-                        *error)
-                          opt_warning_types=$warning_categories
-                          warning_func=func_fatal_error
-                          ;;
-                        *)
-                          func_fatal_error \
-                             "unsupported warning category: '$1'"
-                          ;;
-                      esac
-                      shift
-                      ;;
-
-        --verbose|-v) opt_verbose=: ;;
-        --version)    func_version ;;
-        -\?|-h)       func_usage ;;
-        --help)       func_help ;;
-
-       # Separate optargs to long options (plugins may need this):
-       --*=*)        func_split_equals "$_G_opt"
-                     set dummy "$func_split_equals_lhs" \
-                          "$func_split_equals_rhs" ${1+"$@"}
-                      shift
-                      ;;
-
-       # Separate optargs to short options:
-        -W*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        # Separate non-argument short options:
-        -\?*|-h*|-v*|-x*)
-                      func_split_short_opt "$_G_opt"
-                      set dummy "$func_split_short_opt_name" \
-                          "-$func_split_short_opt_arg" ${1+"$@"}
-                      shift
-                      ;;
-
-        --)           break ;;
-        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
-        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
-      esac
-    done
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
 
-    # save modified positional parameters for caller
-    func_quote_for_eval ${1+"$@"}
-    func_parse_options_result=$func_quote_for_eval_result
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
 }
 
 
-# func_validate_options [ARG]...
-# ------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-func_hookable func_validate_options
-func_validate_options ()
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
 {
-    $debug_cmd
-
-    # Display all warnings if -W was not given.
-    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
 
-    func_run_hooks func_validate_options ${1+"$@"}
-
-    # Bail if the options were screwed!
-    $exit_cmd $EXIT_FAILURE
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
 
-    # save modified positional parameters for caller
-    func_validate_options_result=$func_run_hooks_result
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+           $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
 }
 
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
 
 
-## ----------------- ##
-## Helper functions. ##
-## ----------------- ##
-
-# This section contains the helper functions used by the rest of the
-# hookable option parser framework in ascii-betical order.
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
 
+    $SED -n '/(C)/!b go
+       :more
+       /\./!{
+         N
+         s/\n# / /
+         b more
+       }
+       :go
+       /^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+       s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
 
-# func_fatal_help ARG...
-# ----------------------
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
 {
-    $debug_cmd
+    $opt_debug
 
-    eval \$ECHO \""Usage: $usage"\"
-    eval \$ECHO \""$fatal_help"\"
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+       s/^# *$//
+       s/\$progname/'$progname'/
+       p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
 }
 
-
-# func_help
-# ---------
-# Echo long help message to standard output and exit.
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
 func_help ()
 {
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message"
-    exit 0
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+       :print
+        s/^# //
+       s/^# *$//
+       s*\$progname*'$progname'*
+       s*\$host*'"$host"'*
+       s*\$SHELL*'"$SHELL"'*
+       s*\$LTCC*'"$LTCC"'*
+       s*\$LTCFLAGS*'"$LTCFLAGS"'*
+       s*\$LD*'"$LD"'*
+       s/\$with_gnu_ld/'"$with_gnu_ld"'/
+       s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
+       p
+       d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
 }
 
-
-# func_missing_arg ARGNAME
-# ------------------------
+# func_missing_arg argname
 # Echo program name prefixed message to standard error and set global
 # exit_cmd.
 func_missing_arg ()
 {
-    $debug_cmd
+    $opt_debug
 
-    func_error "Missing argument for '$1'."
+    func_error "missing argument for $1."
     exit_cmd=exit
 }
 
 
-# func_split_equals STRING
-# ------------------------
-# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
-# splitting STRING at the '=' sign.
-test -z "$_G_HAVE_XSI_OPS" \
-    && (eval 'x=a/b/c;
-      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
-    && _G_HAVE_XSI_OPS=yes
-
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=${1%%=*}
-      func_split_equals_rhs=${1#*=}
-      test "x$func_split_equals_lhs" = "x$1" \
-        && func_split_equals_rhs=
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_equals ()
-  {
-      $debug_cmd
-
-      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
-      func_split_equals_rhs=
-      test "x$func_split_equals_lhs" = "x$1" \
-        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
-  }
-fi #func_split_equals
-
-
-# func_split_short_opt SHORTOPT
-# -----------------------------
+# func_split_short_opt shortopt
 # Set func_split_short_opt_name and func_split_short_opt_arg shell
 # variables after splitting SHORTOPT after the 2nd character.
-if test yes = "$_G_HAVE_XSI_OPS"
-then
-  # This is an XSI compatible shell, allowing a faster implementation...
-  eval 'func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_arg=${1#??}
-      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
-  }'
-else
-  # ...otherwise fall back to using expr, which is often a shell builtin.
-  func_split_short_opt ()
-  {
-      $debug_cmd
-
-      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
-      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
-  }
-fi #func_split_short_opt
-
-
-# func_usage
-# ----------
-# Echo short help message to standard output and exit.
-func_usage ()
+func_split_short_opt ()
 {
-    $debug_cmd
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
 
-    func_usage_message
-    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
-    exit 0
-}
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
 
 
-# func_usage_message
-# ------------------
-# Echo short help message to standard output.
-func_usage_message ()
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
 {
-    $debug_cmd
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
 
-    eval \$ECHO \""Usage: $usage"\"
-    echo
-    $SED -n 's|^# ||
-        /^Written by/{
-          x;p;x
-        }
-       h
-       /^Written by/q' < "$progpath"
-    echo
-    eval \$ECHO \""$usage_message"\"
-}
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
 
+exit_cmd=:
 
-# func_version
-# ------------
-# Echo version message to standard output and exit.
-func_version ()
-{
-    $debug_cmd
 
-    printf '%s\n' "$progname $scriptversion"
-    $SED -n '
-        /(C)/!b go
-        :more
-        /\./!{
-          N
-          s|\n# | |
-          b more
-        }
-        :go
-        /^# Written by /,/# warranty; / {
-          s|^# ||
-          s|^# *$||
-          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
-          p
-        }
-        /^# Written by / {
-          s|^# ||
-          p
-        }
-        /^warranty; /q' < "$progpath"
 
-    exit $?
-}
 
 
-# Local variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
-# time-stamp-time-zone: "UTC"
-# End:
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
 
-# Set a version string.
-scriptversion='(GNU libtool) 2.4.6'
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
 
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
 
-# func_echo ARG...
-# ----------------
-# Libtool also displays the current mode in messages, so override
-# funclib.sh func_echo with this custom definition.
-func_echo ()
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
 {
-    $debug_cmd
-
-    _G_message=$*
-
-    func_echo_IFS=$IFS
-    IFS=$nl
-    for _G_line in $_G_message; do
-      IFS=$func_echo_IFS
-      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
-    done
-    IFS=$func_echo_IFS
-}
-
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
 
-# func_warning ARG...
-# -------------------
-# Libtool warnings are not categorized, so override funclib.sh
-# func_warning with this simpler definition.
-func_warning ()
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
 {
-    $debug_cmd
-
-    $warning_func ${1+"$@"}
-}
-
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
 
-## ---------------- ##
-## Options parsing. ##
-## ---------------- ##
-
-# Hook in the functions to make sure our own options are parsed during
-# the option parsing loop.
-
-usage='$progpath [OPTION]... [MODE-ARG]...'
-
-# Short help message in response to '-h'.
-usage_message="Options:
-       --config             show all configuration variables
-       --debug              enable verbose shell tracing
-   -n, --dry-run            display commands without modifying any files
-       --features           display basic configuration information and exit
-       --mode=MODE          use operation mode MODE
-       --no-warnings        equivalent to '-Wnone'
-       --preserve-dup-deps  don't remove duplicate dependency libraries
-       --quiet, --silent    don't print informational messages
-       --tag=TAG            use configuration variables from tag TAG
-   -v, --verbose            print more informational messages than default
-       --version            print version information
-   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
-   -h, --help, --help-all   print short, long, or detailed help message
-"
 
-# Additional text appended to 'usage_message' in response to '--help'.
-func_help ()
+# func_arith arithmetic-term...
+func_arith ()
 {
-    $debug_cmd
-
-    func_usage_message
-    $ECHO "$long_help_message
-
-MODE must be one of the following:
-
-       clean           remove files from the build directory
-       compile         compile a source file into a libtool object
-       execute         automatically set library path, then run a program
-       finish          complete the installation of libtool libraries
-       install         install libraries or executables
-       link            create a library or an executable
-       uninstall       remove libraries from an installed directory
-
-MODE-ARGS vary depending on the MODE.  When passed as first option,
-'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
-Try '$progname --help --mode=MODE' for a more detailed description of MODE.
-
-When reporting a bug, please describe a test case to reproduce it and
-include the following information:
-
-       host-triplet:   $host
-       shell:          $SHELL
-       compiler:       $LTCC
-       compiler flags: $LTCFLAGS
-       linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion Debian-2.4.6-2
-       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
-       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
-
-Report bugs to <bug-libtool@gnu.org>.
-GNU libtool home page: <http://www.gnu.org/s/libtool/>.
-General help using GNU software: <http://www.gnu.org/gethelp/>."
-    exit 0
-}
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
 
 
-# func_lo2o OBJECT-NAME
-# ---------------------
-# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
-# object suffix.
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
 
-lo2o=s/\\.lo\$/.$objext/
-o2lo=s/\\.$objext\$/.lo/
 
-if test yes = "$_G_HAVE_XSI_OPS"; then
-  eval 'func_lo2o ()
-  {
-    case $1 in
-      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
-      *   ) func_lo2o_result=$1               ;;
-    esac
-  }'
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
 
-  # func_xform LIBOBJ-OR-SOURCE
-  # ---------------------------
-  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
-  # suffix to a '.lo' libtool-object suffix.
-  eval 'func_xform ()
-  {
-    func_xform_result=${1%.*}.lo
-  }'
-else
-  # ...otherwise fall back to using sed.
-  func_lo2o ()
-  {
-    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
-  }
 
-  func_xform ()
-  {
-    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
-  }
-fi
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
 
 
-# func_fatal_configuration ARG...
-# -------------------------------
+# func_fatal_configuration arg...
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
 func_fatal_configuration ()
 {
-    func__fatal_error ${1+"$@"} \
-      "See the $PACKAGE documentation for more information." \
-      "Fatal configuration error."
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
 }
 
 
 # func_config
-# -----------
 # Display the configuration for all the tags in this script.
 func_config ()
 {
@@ -2149,19 +915,17 @@ func_config ()
     exit $?
 }
 
-
 # func_features
-# -------------
 # Display the features supported by this script.
 func_features ()
 {
     echo "host: $host"
-    if test yes = "$build_libtool_libs"; then
+    if test "$build_libtool_libs" = yes; then
       echo "enable shared libraries"
     else
       echo "disable shared libraries"
     fi
-    if test yes = "$build_old_libs"; then
+    if test "$build_old_libs" = yes; then
       echo "enable static libraries"
     else
       echo "disable static libraries"
@@ -2170,350 +934,314 @@ func_features ()
     exit $?
 }
 
-
-# func_enable_tag TAGNAME
-# -----------------------
+# func_enable_tag tagname
 # Verify that TAGNAME is valid, and either flag an error and exit, or
 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
 # variable here.
 func_enable_tag ()
 {
-    # Global variable:
-    tagname=$1
+  # Global variable:
+  tagname="$1"
 
-    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-    sed_extractcf=/$re_begincf/,/$re_endcf/p
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
 
-    # Validate tagname.
-    case $tagname in
-      *[!-_A-Za-z0-9,/]*)
-        func_fatal_error "invalid tag name: $tagname"
-        ;;
-    esac
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
 
-    # Don't test for the "default" C tag, as we know it's
-    # there but not specially marked.
-    case $tagname in
-        CC) ;;
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
     *)
-        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-         taglist="$taglist $tagname"
-
-         # Evaluate the configuration.  Be careful to quote the path
-         # and the sed script, to avoid splitting on whitespace, but
-         # also don't use non-portable quotes within backquotes within
-         # quotes we have to do it in 2 steps:
-         extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-         eval "$extractedcf"
-        else
-         func_error "ignoring unknown tag $tagname"
-        fi
-        ;;
-    esac
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+       taglist="$taglist $tagname"
+
+       # Evaluate the configuration.  Be careful to quote the path
+       # and the sed script, to avoid splitting on whitespace, but
+       # also don't use non-portable quotes within backquotes within
+       # quotes we have to do it in 2 steps:
+       extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+       eval "$extractedcf"
+      else
+       func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
 }
 
-
 # func_check_version_match
-# ------------------------
 # Ensure that we are using m4 macros, and libtool script from the same
 # release of libtool.
 func_check_version_match ()
 {
-    if test "$package_revision" != "$macro_revision"; then
-      if test "$VERSION" != "$macro_version"; then
-        if test -z "$macro_version"; then
-          cat >&2 <<_LT_EOF
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from an older release.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-        else
-          cat >&2 <<_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-        fi
-      else
-        cat >&2 <<_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
 $progname: of $PACKAGE $VERSION and run autoconf again.
 _LT_EOF
-      fi
-
-      exit $EXIT_MISMATCH
     fi
-}
 
+    exit $EXIT_MISMATCH
+  fi
+}
 
-# libtool_options_prep [ARG]...
-# -----------------------------
-# Preparation for options parsed by libtool.
-libtool_options_prep ()
-{
-    $debug_mode
 
-    # Option defaults:
-    opt_config=false
-    opt_dlopen=
-    opt_dry_run=false
-    opt_help=false
-    opt_mode=
-    opt_preserve_dup_deps=false
-    opt_quiet=false
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
 
-    nonopt=
-    preserve_args=
 
-    # Shorthand for --mode=foo, only valid as the first argument
-    case $1 in
-    clean|clea|cle|cl)
-      shift; set dummy --mode clean ${1+"$@"}; shift
-      ;;
-    compile|compil|compi|comp|com|co|c)
-      shift; set dummy --mode compile ${1+"$@"}; shift
-      ;;
-    execute|execut|execu|exec|exe|ex|e)
-      shift; set dummy --mode execute ${1+"$@"}; shift
-      ;;
-    finish|finis|fini|fin|fi|f)
-      shift; set dummy --mode finish ${1+"$@"}; shift
-      ;;
-    install|instal|insta|inst|ins|in|i)
-      shift; set dummy --mode install ${1+"$@"}; shift
-      ;;
-    link|lin|li|l)
-      shift; set dummy --mode link ${1+"$@"}; shift
-      ;;
-    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-      shift; set dummy --mode uninstall ${1+"$@"}; shift
-      ;;
-    esac
 
-    # Pass back the list of options.
-    func_quote_for_eval ${1+"$@"}
-    libtool_options_prep_result=$func_quote_for_eval_result
-}
-func_add_hook func_options_prep libtool_options_prep
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
 
 
-# libtool_parse_options [ARG]...
-# ---------------------------------
-# Provide handling for libtool specific options.
-libtool_parse_options ()
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
 {
-    $debug_cmd
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)      opt_debug='set -x'
+                       func_echo "enabling shell trace mode"
+                       $opt_debug
+                       ;;
+      --dry-run|--dryrun|-n)
+                       opt_dry_run=:
+                       ;;
+      --config)
+                       opt_config=:
+func_config
+                       ;;
+      --dlopen|-dlopen)
+                       optarg="$1"
+                       opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+                       shift
+                       ;;
+      --preserve-dup-deps)
+                       opt_preserve_dup_deps=:
+                       ;;
+      --features)
+                       opt_features=:
+func_features
+                       ;;
+      --finish)
+                       opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+                       ;;
+      --help)
+                       opt_help=:
+                       ;;
+      --help-all)
+                       opt_help_all=:
+opt_help=': help-all'
+                       ;;
+      --mode)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+                       shift
+                       ;;
+      --no-silent|--no-quiet)
+                       opt_silent=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-warning|--no-warn)
+                       opt_warning=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-verbose)
+                       opt_verbose=false
+func_append preserve_args " $opt"
+                       ;;
+      --silent|--quiet)
+                       opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+                       ;;
+      --verbose|-v)
+                       opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+                       ;;
+      --tag)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+                       shift
+                       ;;
+
+      -\?|-h)          func_usage                              ;;
+      --help)          func_help                               ;;
+      --version)       func_version                            ;;
+
+      # Separate optargs to long options:
+      --*=*)
+                       func_split_long_opt "$opt"
+                       set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+                       func_split_short_opt "$opt"
+                       set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+                       shift
+                       ;;
+
+      --)              break                                   ;;
+      -*)              func_fatal_help "unrecognized option \`$opt'" ;;
+      *)               set dummy "$opt" ${1+"$@"};     shift; break  ;;
+    esac
+  done
 
-    # Perform our own loop to consume as many options as possible in
-    # each iteration.
-    while test $# -gt 0; do
-      _G_opt=$1
-      shift
-      case $_G_opt in
-        --dry-run|--dryrun|-n)
-                        opt_dry_run=:
-                        ;;
-
-        --config)       func_config ;;
-
-        --dlopen|-dlopen)
-                        opt_dlopen="${opt_dlopen+$opt_dlopen
-}$1"
-                        shift
-                        ;;
-
-        --preserve-dup-deps)
-                        opt_preserve_dup_deps=: ;;
-
-        --features)     func_features ;;
-
-        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
-
-        --help)         opt_help=: ;;
-
-        --help-all)     opt_help=': help-all' ;;
-
-        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_mode=$1
-                        case $1 in
-                          # Valid mode arguments:
-                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
-                          # Catch anything else as an error
-                          *) func_error "invalid argument for $_G_opt"
-                             exit_cmd=exit
-                             break
-                             ;;
-                        esac
-                        shift
-                        ;;
-
-        --no-silent|--no-quiet)
-                        opt_quiet=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-warnings|--no-warning|--no-warn)
-                        opt_warning=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --no-verbose)
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --silent|--quiet)
-                        opt_quiet=:
-                        opt_verbose=false
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
-                        opt_tag=$1
-                        func_append preserve_args " $_G_opt $1"
-                        func_enable_tag "$1"
-                        shift
-                        ;;
-
-        --verbose|-v)   opt_quiet=false
-                        opt_verbose=:
-                        func_append preserve_args " $_G_opt"
-                        ;;
-
-       # An option not handled by this hook function:
-        *)             set dummy "$_G_opt" ${1+"$@"};  shift; break  ;;
-      esac
-    done
+  # Validate options:
 
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
 
-    # save modified positional parameters for caller
-    func_quote_for_eval ${1+"$@"}
-    libtool_parse_options_result=$func_quote_for_eval_result
-}
-func_add_hook func_parse_options libtool_parse_options
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
 
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
 
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
 
-# libtool_validate_options [ARG]...
-# ---------------------------------
-# Perform any sanity checks on option settings and/or unconsumed
-# arguments.
-libtool_validate_options ()
-{
-    # save first non-option argument
-    if test 0 -lt $#; then
-      nonopt=$1
-      shift
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
     fi
 
-    # preserve --debug
-    test : = "$debug_cmd" || func_append preserve_args " --debug"
-
-    case $host in
-      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
-      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
-      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
-        # don't eliminate duplications in $postdeps and $predeps
-        opt_duplicate_compiler_generated_deps=:
-        ;;
-      *)
-        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-        ;;
-    esac
-
-    $opt_help || {
-      # Sanity checks first:
-      func_check_version_match
-
-      test yes != "$build_libtool_libs" \
-        && test yes != "$build_old_libs" \
-        && func_fatal_configuration "not configured to build any kind of library"
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
 
-      # Darwin sucks
-      eval std_shrext=\"$shrext_cmds\"
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
 
-      # Only execute mode is allowed to have -dlopen flags.
-      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
-        func_error "unrecognized option '-dlopen'"
-        $ECHO "$help" 1>&2
-        exit $EXIT_FAILURE
-      fi
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
 
-      # Change the help message to a mode-specific one.
-      generic_help=$help
-      help="Try '$progname --help --mode=$opt_mode' for more information."
-    }
 
-    # Pass back the unparsed argument list
-    func_quote_for_eval ${1+"$@"}
-    libtool_validate_options_result=$func_quote_for_eval_result
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
 }
-func_add_hook func_validate_options libtool_validate_options
 
 
-# Process options as early as possible so that --help and --version
-# can return quickly.
-func_options ${1+"$@"}
-eval set dummy "$func_options_result"; shift
-
 
 
 ## ----------- ##
 ##    Main.    ##
 ## ----------- ##
 
-magic='%%%MAGIC variable%%%'
-magic_exe='%%%MAGIC EXE variable%%%'
-
-# Global variables.
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# func_generated_by_libtool
-# True iff stdin has been generated by Libtool. This function is only
-# a basic sanity check; it will hardly flush out determined imposters.
-func_generated_by_libtool_p ()
-{
-  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
 # func_lalib_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
+# True iff FILE is a libtool `.la' library or `.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_lalib_p ()
 {
     test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
 }
 
 # func_lalib_unsafe_p file
-# True iff FILE is a libtool '.la' library or '.lo' object file.
+# True iff FILE is a libtool `.la' library or `.lo' object file.
 # This function implements the same check as func_lalib_p without
 # resorting to external programs.  To this end, it redirects stdin and
 # closes it afterwards, without saving the original file descriptor.
 # As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if 'file' does not exist.
+# fatal anyway.  Works if `file' does not exist.
 func_lalib_unsafe_p ()
 {
     lalib_p=no
@@ -2521,13 +1249,13 @@ func_lalib_unsafe_p ()
        for lalib_p_l in 1 2 3 4
        do
            read lalib_p_line
-           case $lalib_p_line in
+           case "$lalib_p_line" in
                \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
            esac
        done
        exec 0<&5 5<&-
     fi
-    test yes = "$lalib_p"
+    test "$lalib_p" = yes
 }
 
 # func_ltwrapper_script_p file
@@ -2536,8 +1264,7 @@ func_lalib_unsafe_p ()
 # determined imposters.
 func_ltwrapper_script_p ()
 {
-    test -f "$1" &&
-      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
+    func_lalib_p "$1"
 }
 
 # func_ltwrapper_executable_p file
@@ -2562,7 +1289,7 @@ func_ltwrapper_scriptname ()
 {
     func_dirname_and_basename "$1" "" "."
     func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
 }
 
 # func_ltwrapper_p file
@@ -2581,13 +1308,11 @@ func_ltwrapper_p ()
 # FAIL_CMD may read-access the current command in variable CMD!
 func_execute_cmds ()
 {
-    $debug_cmd
-
+    $opt_debug
     save_ifs=$IFS; IFS='~'
     for cmd in $1; do
-      IFS=$sp$nl
-      eval cmd=\"$cmd\"
       IFS=$save_ifs
+      eval cmd=\"$cmd\"
       func_show_eval "$cmd" "${2-:}"
     done
     IFS=$save_ifs
@@ -2599,11 +1324,10 @@ func_execute_cmds ()
 # Note that it is not necessary on cygwin/mingw to append a dot to
 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
 # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# 'FILE.' does not work on cygwin managed mounts.
+# `FILE.' does not work on cygwin managed mounts.
 func_source ()
 {
-    $debug_cmd
-
+    $opt_debug
     case $1 in
     */* | *\\*)        . "$1" ;;
     *)         . "./$1" ;;
@@ -2630,10 +1354,10 @@ func_resolve_sysroot ()
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
-  case $lt_sysroot:$1 in
+  case "$lt_sysroot:$1" in
   ?*:"$lt_sysroot"*)
     func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result='='$func_stripname_result
+    func_replace_sysroot_result="=$func_stripname_result"
     ;;
   *)
     # Including no sysroot.
@@ -2650,8 +1374,7 @@ func_replace_sysroot ()
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
-    $debug_cmd
-
+    $opt_debug
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
@@ -2670,7 +1393,7 @@ func_infer_tag ()
        for z in $available_tags; do
          if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
            # Evaluate the configuration.
-           eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+           eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
            CC_quoted=
            for arg in $CC; do
              # Double-quote args containing other shell metacharacters.
@@ -2695,7 +1418,7 @@ func_infer_tag ()
        # line option must be used.
        if test -z "$tagname"; then
          func_echo "unable to infer tagged configuration"
-         func_fatal_error "specify a tag with '--tag'"
+         func_fatal_error "specify a tag with \`--tag'"
 #      else
 #        func_verbose "using $tagname tagged configuration"
        fi
@@ -2711,15 +1434,15 @@ func_infer_tag ()
 # but don't create it if we're doing a dry run.
 func_write_libtool_object ()
 {
-    write_libobj=$1
-    if test yes = "$build_libtool_libs"; then
-      write_lobj=\'$2\'
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
     else
       write_lobj=none
     fi
 
-    if test yes = "$build_old_libs"; then
-      write_oldobj=\'$3\'
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
     else
       write_oldobj=none
     fi
@@ -2727,7 +1450,7 @@ func_write_libtool_object ()
     $opt_dry_run || {
       cat >${write_libobj}T <<EOF
 # $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -2739,7 +1462,7 @@ pic_object=$write_lobj
 non_pic_object=$write_oldobj
 
 EOF
-      $MV "${write_libobj}T" "$write_libobj"
+      $MV "${write_libobj}T" "${write_libobj}"
     }
 }
 
@@ -2759,9 +1482,8 @@ EOF
 # be empty on error (or when ARG is empty)
 func_convert_core_file_wine_to_w32 ()
 {
-  $debug_cmd
-
-  func_convert_core_file_wine_to_w32_result=$1
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
   if test -n "$1"; then
     # Unfortunately, winepath does not exit with a non-zero error code, so we
     # are forced to check the contents of stdout. On the other hand, if the
@@ -2769,9 +1491,9 @@ func_convert_core_file_wine_to_w32 ()
     # *an error message* to stdout. So we must check for both error code of
     # zero AND non-empty stdout, which explains the odd construction:
     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$sed_naive_backslashify"`
+        $SED -e "$lt_sed_naive_backslashify"`
     else
       func_convert_core_file_wine_to_w32_result=
     fi
@@ -2792,19 +1514,18 @@ func_convert_core_file_wine_to_w32 ()
 # are convertible, then the result may be empty.
 func_convert_core_path_wine_to_w32 ()
 {
-  $debug_cmd
-
+  $opt_debug
   # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=
+  func_convert_core_path_wine_to_w32_result=""
   if test -n "$1"; then
     oldIFS=$IFS
     IFS=:
     for func_convert_core_path_wine_to_w32_f in $1; do
       IFS=$oldIFS
       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result"; then
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
         if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
         else
           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
         fi
@@ -2833,8 +1554,7 @@ func_convert_core_path_wine_to_w32 ()
 # environment variable; do not put it in $PATH.
 func_cygpath ()
 {
-  $debug_cmd
-
+  $opt_debug
   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
     if test "$?" -ne 0; then
@@ -2843,7 +1563,7 @@ func_cygpath ()
     fi
   else
     func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
   fi
 }
 #end: func_cygpath
@@ -2854,11 +1574,10 @@ func_cygpath ()
 # result in func_convert_core_msys_to_w32_result.
 func_convert_core_msys_to_w32 ()
 {
-  $debug_cmd
-
+  $opt_debug
   # awkward: cmd appends spaces to result
   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
 }
 #end: func_convert_core_msys_to_w32
 
@@ -2869,14 +1588,13 @@ func_convert_core_msys_to_w32 ()
 # func_to_host_file_result to ARG1).
 func_convert_file_check ()
 {
-  $debug_cmd
-
-  if test -z "$2" && test -n "$1"; then
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
     func_error "Could not determine host file name corresponding to"
-    func_error "  '$1'"
+    func_error "  \`$1'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback:
-    func_to_host_file_result=$1
+    func_to_host_file_result="$1"
   fi
 }
 # end func_convert_file_check
@@ -2888,11 +1606,10 @@ func_convert_file_check ()
 # func_to_host_file_result to a simplistic fallback value (see below).
 func_convert_path_check ()
 {
-  $debug_cmd
-
+  $opt_debug
   if test -z "$4" && test -n "$3"; then
     func_error "Could not determine the host path corresponding to"
-    func_error "  '$3'"
+    func_error "  \`$3'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback.  This is a deliberately simplistic "conversion" and
     # should not be "improved".  See libtool.info.
@@ -2901,7 +1618,7 @@ func_convert_path_check ()
       func_to_host_path_result=`echo "$3" |
         $SED -e "$lt_replace_pathsep_chars"`
     else
-      func_to_host_path_result=$3
+      func_to_host_path_result="$3"
     fi
   fi
 }
@@ -2913,10 +1630,9 @@ func_convert_path_check ()
 # and appending REPL if ORIG matches BACKPAT.
 func_convert_path_front_back_pathsep ()
 {
-  $debug_cmd
-
+  $opt_debug
   case $4 in
-  $1 ) func_to_host_path_result=$3$func_to_host_path_result
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
     ;;
   esac
   case $4 in
@@ -2930,7 +1646,7 @@ func_convert_path_front_back_pathsep ()
 ##################################################
 # $build to $host FILE NAME CONVERSION FUNCTIONS #
 ##################################################
-# invoked via '$to_host_file_cmd ARG'
+# invoked via `$to_host_file_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # Result will be available in $func_to_host_file_result.
@@ -2941,8 +1657,7 @@ func_convert_path_front_back_pathsep ()
 # in func_to_host_file_result.
 func_to_host_file ()
 {
-  $debug_cmd
-
+  $opt_debug
   $to_host_file_cmd "$1"
 }
 # end func_to_host_file
@@ -2954,8 +1669,7 @@ func_to_host_file ()
 # in (the comma separated) LAZY, no conversion takes place.
 func_to_tool_file ()
 {
-  $debug_cmd
-
+  $opt_debug
   case ,$2, in
     *,"$to_tool_file_cmd",*)
       func_to_tool_file_result=$1
@@ -2973,7 +1687,7 @@ func_to_tool_file ()
 # Copy ARG to func_to_host_file_result.
 func_convert_file_noop ()
 {
-  func_to_host_file_result=$1
+  func_to_host_file_result="$1"
 }
 # end func_convert_file_noop
 
@@ -2984,12 +1698,11 @@ func_convert_file_noop ()
 # func_to_host_file_result.
 func_convert_file_msys_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_file_result=$1
+  $opt_debug
+  func_to_host_file_result="$1"
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_msys_to_w32_result
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -3001,9 +1714,8 @@ func_convert_file_msys_to_w32 ()
 # func_to_host_file_result.
 func_convert_file_cygwin_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_file_result=$1
+  $opt_debug
+  func_to_host_file_result="$1"
   if test -n "$1"; then
     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
     # LT_CYGPATH in this case.
@@ -3019,12 +1731,11 @@ func_convert_file_cygwin_to_w32 ()
 # and a working winepath. Returns result in func_to_host_file_result.
 func_convert_file_nix_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_file_result=$1
+  $opt_debug
+  func_to_host_file_result="$1"
   if test -n "$1"; then
     func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -3036,13 +1747,12 @@ func_convert_file_nix_to_w32 ()
 # Returns result in func_to_host_file_result.
 func_convert_file_msys_to_cygwin ()
 {
-  $debug_cmd
-
-  func_to_host_file_result=$1
+  $opt_debug
+  func_to_host_file_result="$1"
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
     func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
+    func_to_host_file_result="$func_cygpath_result"
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -3055,14 +1765,13 @@ func_convert_file_msys_to_cygwin ()
 # in func_to_host_file_result.
 func_convert_file_nix_to_cygwin ()
 {
-  $debug_cmd
-
-  func_to_host_file_result=$1
+  $opt_debug
+  func_to_host_file_result="$1"
   if test -n "$1"; then
     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
     func_convert_core_file_wine_to_w32 "$1"
     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result=$func_cygpath_result
+    func_to_host_file_result="$func_cygpath_result"
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -3072,7 +1781,7 @@ func_convert_file_nix_to_cygwin ()
 #############################################
 # $build to $host PATH CONVERSION FUNCTIONS #
 #############################################
-# invoked via '$to_host_path_cmd ARG'
+# invoked via `$to_host_path_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # The result will be available in $func_to_host_path_result.
@@ -3096,11 +1805,10 @@ func_convert_file_nix_to_cygwin ()
 to_host_path_cmd=
 func_init_to_host_path_cmd ()
 {
-  $debug_cmd
-
+  $opt_debug
   if test -z "$to_host_path_cmd"; then
     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd=func_convert_path_$func_stripname_result
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
   fi
 }
 
@@ -3110,8 +1818,7 @@ func_init_to_host_path_cmd ()
 # in func_to_host_path_result.
 func_to_host_path ()
 {
-  $debug_cmd
-
+  $opt_debug
   func_init_to_host_path_cmd
   $to_host_path_cmd "$1"
 }
@@ -3122,7 +1829,7 @@ func_to_host_path ()
 # Copy ARG to func_to_host_path_result.
 func_convert_path_noop ()
 {
-  func_to_host_path_result=$1
+  func_to_host_path_result="$1"
 }
 # end func_convert_path_noop
 
@@ -3133,9 +1840,8 @@ func_convert_path_noop ()
 # func_to_host_path_result.
 func_convert_path_msys_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_path_result=$1
+  $opt_debug
+  func_to_host_path_result="$1"
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from ARG.  MSYS
     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
@@ -3143,7 +1849,7 @@ func_convert_path_msys_to_w32 ()
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_msys_to_w32_result
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -3157,9 +1863,8 @@ func_convert_path_msys_to_w32 ()
 # func_to_host_file_result.
 func_convert_path_cygwin_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_path_result=$1
+  $opt_debug
+  func_to_host_path_result="$1"
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
@@ -3178,15 +1883,14 @@ func_convert_path_cygwin_to_w32 ()
 # a working winepath.  Returns result in func_to_host_file_result.
 func_convert_path_nix_to_w32 ()
 {
-  $debug_cmd
-
-  func_to_host_path_result=$1
+  $opt_debug
+  func_to_host_path_result="$1"
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -3200,16 +1904,15 @@ func_convert_path_nix_to_w32 ()
 # Returns result in func_to_host_file_result.
 func_convert_path_msys_to_cygwin ()
 {
-  $debug_cmd
-
-  func_to_host_path_result=$1
+  $opt_debug
+  func_to_host_path_result="$1"
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
+    func_to_host_path_result="$func_cygpath_result"
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -3224,9 +1927,8 @@ func_convert_path_msys_to_cygwin ()
 # func_to_host_file_result.
 func_convert_path_nix_to_cygwin ()
 {
-  $debug_cmd
-
-  func_to_host_path_result=$1
+  $opt_debug
+  func_to_host_path_result="$1"
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from
     # ARG. msys behavior is inconsistent here, cygpath turns them
@@ -3235,7 +1937,7 @@ func_convert_path_nix_to_cygwin ()
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result=$func_cygpath_result
+    func_to_host_path_result="$func_cygpath_result"
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -3244,31 +1946,13 @@ func_convert_path_nix_to_cygwin ()
 # end func_convert_path_nix_to_cygwin
 
 
-# func_dll_def_p FILE
-# True iff FILE is a Windows DLL '.def' file.
-# Keep in sync with _LT_DLL_DEF_P in libtool.m4
-func_dll_def_p ()
-{
-  $debug_cmd
-
-  func_dll_def_p_tmp=`$SED -n \
-    -e 's/^[    ]*//' \
-    -e '/^\(;.*\)*$/d' \
-    -e 's/^\(EXPORTS\|LIBRARY\)\([      ].*\)*$/DEF/p' \
-    -e q \
-    "$1"`
-  test DEF = "$func_dll_def_p_tmp"
-}
-
-
 # func_mode_compile arg...
 func_mode_compile ()
 {
-    $debug_cmd
-
+    $opt_debug
     # Get the compilation command and the source file.
     base_compile=
-    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
     suppress_opt=yes
     suppress_output=
     arg_mode=normal
@@ -3281,12 +1965,12 @@ func_mode_compile ()
       case $arg_mode in
       arg  )
        # do not "continue".  Instead, add this to base_compile
-       lastarg=$arg
+       lastarg="$arg"
        arg_mode=normal
        ;;
 
       target )
-       libobj=$arg
+       libobj="$arg"
        arg_mode=normal
        continue
        ;;
@@ -3296,7 +1980,7 @@ func_mode_compile ()
        case $arg in
        -o)
          test -n "$libobj" && \
-           func_fatal_error "you cannot specify '-o' more than once"
+           func_fatal_error "you cannot specify \`-o' more than once"
          arg_mode=target
          continue
          ;;
@@ -3325,12 +2009,12 @@ func_mode_compile ()
          func_stripname '-Wc,' '' "$arg"
          args=$func_stripname_result
          lastarg=
-         save_ifs=$IFS; IFS=,
+         save_ifs="$IFS"; IFS=','
          for arg in $args; do
-           IFS=$save_ifs
+           IFS="$save_ifs"
            func_append_quoted lastarg "$arg"
          done
-         IFS=$save_ifs
+         IFS="$save_ifs"
          func_stripname ' ' '' "$lastarg"
          lastarg=$func_stripname_result
 
@@ -3343,8 +2027,8 @@ func_mode_compile ()
          # Accept the current argument as the source file.
          # The previous "srcfile" becomes the current argument.
          #
-         lastarg=$srcfile
-         srcfile=$arg
+         lastarg="$srcfile"
+         srcfile="$arg"
          ;;
        esac  #  case $arg
        ;;
@@ -3359,13 +2043,13 @@ func_mode_compile ()
       func_fatal_error "you must specify an argument for -Xcompile"
       ;;
     target)
-      func_fatal_error "you must specify a target with '-o'"
+      func_fatal_error "you must specify a target with \`-o'"
       ;;
     *)
       # Get the name of the library object.
       test -z "$libobj" && {
        func_basename "$srcfile"
-       libobj=$func_basename_result
+       libobj="$func_basename_result"
       }
       ;;
     esac
@@ -3385,7 +2069,7 @@ func_mode_compile ()
     case $libobj in
     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
-      func_fatal_error "cannot determine name of library object from '$libobj'"
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
       ;;
     esac
 
@@ -3394,8 +2078,8 @@ func_mode_compile ()
     for arg in $later; do
       case $arg in
       -shared)
-       test yes = "$build_libtool_libs" \
-         || func_fatal_configuration "cannot build a shared library"
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
        build_old_libs=no
        continue
        ;;
@@ -3421,17 +2105,17 @@ func_mode_compile ()
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
-      && func_warning "libobj name '$libobj' may not contain shell special characters."
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
     func_dirname_and_basename "$obj" "/" ""
-    objname=$func_basename_result
-    xdir=$func_dirname_result
-    lobj=$xdir$objdir/$objname
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
+    lobj=${xdir}$objdir/$objname
 
     test -z "$base_compile" && \
       func_fatal_help "you must specify a compilation command"
 
     # Delete any leftover library objects.
-    if test yes = "$build_old_libs"; then
+    if test "$build_old_libs" = yes; then
       removelist="$obj $lobj $libobj ${libobj}T"
     else
       removelist="$lobj $libobj ${libobj}T"
@@ -3443,16 +2127,16 @@ func_mode_compile ()
       pic_mode=default
       ;;
     esac
-    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
       # non-PIC code in shared libraries is not supported
       pic_mode=default
     fi
 
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
-    if test no = "$compiler_c_o"; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
-      lockfile=$output_obj.lock
+    if test "$compiler_c_o" = no; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
     else
       output_obj=
       need_locks=no
@@ -3461,12 +2145,12 @@ func_mode_compile ()
 
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
-    if test yes = "$need_locks"; then
+    if test "$need_locks" = yes; then
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
        func_echo "Waiting for $lockfile to be removed"
        sleep 2
       done
-    elif test warn = "$need_locks"; then
+    elif test "$need_locks" = warn; then
       if test -f "$lockfile"; then
        $ECHO "\
 *** ERROR, $lockfile exists and contains:
@@ -3474,7 +2158,7 @@ func_mode_compile ()
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
+your compiler does not support \`-c' and \`-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -3496,11 +2180,11 @@ compiler."
     qsrcfile=$func_quote_for_eval_result
 
     # Only build a PIC object if we are building libtool libraries.
-    if test yes = "$build_libtool_libs"; then
+    if test "$build_libtool_libs" = yes; then
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      if test no != "$pic_mode"; then
+      if test "$pic_mode" != no; then
        command="$base_compile $qsrcfile $pic_flag"
       else
        # Don't build PIC code
@@ -3517,7 +2201,7 @@ compiler."
       func_show_eval_locale "$command" \
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
-      if test warn = "$need_locks" &&
+      if test "$need_locks" = warn &&
         test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
        $ECHO "\
 *** ERROR, $lockfile contains:
@@ -3528,7 +2212,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
+your compiler does not support \`-c' and \`-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -3544,20 +2228,20 @@ compiler."
       fi
 
       # Allow error messages only from the first compilation.
-      if test yes = "$suppress_opt"; then
+      if test "$suppress_opt" = yes; then
        suppress_output=' >/dev/null 2>&1'
       fi
     fi
 
     # Only build a position-dependent object if we build old libraries.
-    if test yes = "$build_old_libs"; then
-      if test yes != "$pic_mode"; then
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
        # Don't build PIC code
        command="$base_compile $qsrcfile$pie_flag"
       else
        command="$base_compile $qsrcfile $pic_flag"
       fi
-      if test yes = "$compiler_c_o"; then
+      if test "$compiler_c_o" = yes; then
        func_append command " -o $obj"
       fi
 
@@ -3566,7 +2250,7 @@ compiler."
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
-      if test warn = "$need_locks" &&
+      if test "$need_locks" = warn &&
         test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
        $ECHO "\
 *** ERROR, $lockfile contains:
@@ -3577,7 +2261,7 @@ $srcfile
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support '-c' and '-o' together.  If you
+your compiler does not support \`-c' and \`-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -3597,7 +2281,7 @@ compiler."
       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
       # Unlock the critical section if it was locked
-      if test no != "$need_locks"; then
+      if test "$need_locks" != no; then
        removelist=$lockfile
         $RM "$lockfile"
       fi
@@ -3607,7 +2291,7 @@ compiler."
 }
 
 $opt_help || {
-  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
 }
 
 func_mode_help ()
@@ -3627,7 +2311,7 @@ func_mode_help ()
 Remove files from the build directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
 to RM.
 
 If FILE is a libtool library, object or program, all the files associated
@@ -3646,16 +2330,16 @@ This mode accepts the following additional options:
   -no-suppress      do not suppress compiler output for multiple passes
   -prefer-pic       try to build PIC objects only
   -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a '.o' file suitable for static linking
-  -static           only build a '.o' file suitable for static linking
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
   -Wc,FLAG          pass FLAG directly to the compiler
 
-COMPILE-COMMAND is a command to be used in creating a 'standard' object file
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
 from the given SOURCEFILE.
 
 The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix '.c' with the
-library object suffix, '.lo'."
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
         ;;
 
       execute)
@@ -3668,7 +2352,7 @@ This mode accepts the following additional options:
 
   -dlopen FILE      add the directory containing FILE to the library path
 
-This mode sets the library path environment variable according to '-dlopen'
+This mode sets the library path environment variable according to \`-dlopen'
 flags.
 
 If any of the ARGS are libtool executable wrappers, then they are translated
@@ -3687,7 +2371,7 @@ Complete the installation of libtool libraries.
 Each LIBDIR is a directory that contains libtool libraries.
 
 The commands that this mode executes may require superuser privileges.  Use
-the '--dry-run' option if you just want to see what would be executed."
+the \`--dry-run' option if you just want to see what would be executed."
         ;;
 
       install)
@@ -3697,7 +2381,7 @@ the '--dry-run' option if you just want to see what would be executed."
 Install executables or libraries.
 
 INSTALL-COMMAND is the installation command.  The first component should be
-either the 'install' or 'cp' program.
+either the \`install' or \`cp' program.
 
 The following components of INSTALL-COMMAND are treated specially:
 
@@ -3723,7 +2407,7 @@ The following components of LINK-COMMAND are treated specially:
   -avoid-version    do not add a version suffix if possible
   -bindir BINDIR    specify path to binaries directory (for systems where
                     libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
@@ -3737,8 +2421,7 @@ The following components of LINK-COMMAND are treated specially:
   -no-install       link a not-installable executable
   -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  use a list of object files found in FILE to specify objects
-  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
   -precious-files-regex REGEX
                     don't remove output files matching REGEX
   -release RELEASE  specify package release information
@@ -3758,20 +2441,20 @@ The following components of LINK-COMMAND are treated specially:
   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
 
-All other options (arguments beginning with '-') are ignored.
+All other options (arguments beginning with \`-') are ignored.
 
-Every other argument is treated as a filename.  Files ending in '.la' are
+Every other argument is treated as a filename.  Files ending in \`.la' are
 treated as uninstalled libtool libraries, other files are standard or library
 object files.
 
-If the OUTPUT-FILE ends in '.la', then a libtool library is created,
-only library objects ('.lo' files) may be specified, and '-rpath' is
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
 required, except when creating a convenience library.
 
-If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
-using 'ar' and 'ranlib', or on Windows using 'lib'.
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
 
-If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
 is created, otherwise an executable program is created."
         ;;
 
@@ -3782,7 +2465,7 @@ is created, otherwise an executable program is created."
 Remove libraries from an installation directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
 to RM.
 
 If FILE is a libtool library, all the files associated with it are deleted.
@@ -3790,17 +2473,17 @@ Otherwise, only FILE itself is deleted using RM."
         ;;
 
       *)
-        func_fatal_help "invalid operation mode '$opt_mode'"
+        func_fatal_help "invalid operation mode \`$opt_mode'"
         ;;
     esac
 
     echo
-    $ECHO "Try '$progname --help' for more information about other modes."
+    $ECHO "Try \`$progname --help' for more information about other modes."
 }
 
 # Now that we've collected a possible --mode arg, show help if necessary
 if $opt_help; then
-  if test : = "$opt_help"; then
+  if test "$opt_help" = :; then
     func_mode_help
   else
     {
@@ -3808,7 +2491,7 @@ if $opt_help; then
       for opt_mode in compile link execute install finish uninstall clean; do
        func_mode_help
       done
-    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
     {
       func_help noexit
       for opt_mode in compile link execute install finish uninstall clean; do
@@ -3816,7 +2499,7 @@ if $opt_help; then
        func_mode_help
       done
     } |
-    $SED '1d
+    sed '1d
       /^When reporting/,/^Report/{
        H
        d
@@ -3833,17 +2516,16 @@ fi
 # func_mode_execute arg...
 func_mode_execute ()
 {
-    $debug_cmd
-
+    $opt_debug
     # The first argument is the command name.
-    cmd=$nonopt
+    cmd="$nonopt"
     test -z "$cmd" && \
       func_fatal_help "you must specify a COMMAND"
 
     # Handle -dlopen flags immediately.
     for file in $opt_dlopen; do
       test -f "$file" \
-       || func_fatal_help "'$file' is not a file"
+       || func_fatal_help "\`$file' is not a file"
 
       dir=
       case $file in
@@ -3853,7 +2535,7 @@ func_mode_execute ()
 
        # Check to see that this really is a libtool archive.
        func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$lib' is not a valid libtool archive"
+         || func_fatal_help "\`$lib' is not a valid libtool archive"
 
        # Read the libtool library.
        dlname=
@@ -3864,18 +2546,18 @@ func_mode_execute ()
        if test -z "$dlname"; then
          # Warn if it was a shared library.
          test -n "$library_names" && \
-           func_warning "'$file' was not linked with '-export-dynamic'"
+           func_warning "\`$file' was not linked with \`-export-dynamic'"
          continue
        fi
 
        func_dirname "$file" "" "."
-       dir=$func_dirname_result
+       dir="$func_dirname_result"
 
        if test -f "$dir/$objdir/$dlname"; then
          func_append dir "/$objdir"
        else
          if test ! -f "$dir/$dlname"; then
-           func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
+           func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
          fi
        fi
        ;;
@@ -3883,18 +2565,18 @@ func_mode_execute ()
       *.lo)
        # Just add the directory containing the .lo file.
        func_dirname "$file" "" "."
-       dir=$func_dirname_result
+       dir="$func_dirname_result"
        ;;
 
       *)
-       func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
+       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
        continue
        ;;
       esac
 
       # Get the absolute pathname.
       absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir=$absdir
+      test -n "$absdir" && dir="$absdir"
 
       # Now add the directory to shlibpath_var.
       if eval "test -z \"\$$shlibpath_var\""; then
@@ -3906,7 +2588,7 @@ func_mode_execute ()
 
     # This variable tells wrapper scripts just to set shlibpath_var
     # rather than running their programs.
-    libtool_execute_magic=$magic
+    libtool_execute_magic="$magic"
 
     # Check if any of the arguments is a wrapper script.
     args=
@@ -3919,12 +2601,12 @@ func_mode_execute ()
        if func_ltwrapper_script_p "$file"; then
          func_source "$file"
          # Transform arg to wrapped name.
-         file=$progdir/$program
+         file="$progdir/$program"
        elif func_ltwrapper_executable_p "$file"; then
          func_ltwrapper_scriptname "$file"
          func_source "$func_ltwrapper_scriptname_result"
          # Transform arg to wrapped name.
-         file=$progdir/$program
+         file="$progdir/$program"
        fi
        ;;
       esac
@@ -3932,15 +2614,7 @@ func_mode_execute ()
       func_append_quoted args "$file"
     done
 
-    if $opt_dry_run; then
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-       echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
-    else
+    if test "X$opt_dry_run" = Xfalse; then
       if test -n "$shlibpath_var"; then
        # Export the shlibpath_var.
        eval "export $shlibpath_var"
@@ -3957,18 +2631,25 @@ func_mode_execute ()
       done
 
       # Now prepare to actually exec the command.
-      exec_cmd=\$cmd$args
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+       echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
     fi
 }
 
-test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
 
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
-    $debug_cmd
-
+    $opt_debug
     libs=
     libdirs=
     admincmds=
@@ -3982,11 +2663,11 @@ func_mode_finish ()
        if func_lalib_unsafe_p "$opt"; then
          func_append libs " $opt"
        else
-         func_warning "'$opt' is not a valid libtool archive"
+         func_warning "\`$opt' is not a valid libtool archive"
        fi
 
       else
-       func_fatal_error "invalid argument '$opt'"
+       func_fatal_error "invalid argument \`$opt'"
       fi
     done
 
@@ -4001,12 +2682,12 @@ func_mode_finish ()
       # Remove sysroot references
       if $opt_dry_run; then
         for lib in $libs; do
-          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
         done
       else
         tmpdir=`func_mktempdir`
         for lib in $libs; do
-         $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+         sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
            > $tmpdir/tmp-la
          mv -f $tmpdir/tmp-la $lib
        done
@@ -4031,7 +2712,7 @@ func_mode_finish ()
     fi
 
     # Exit here if they wanted silent mode.
-    $opt_quiet && exit $EXIT_SUCCESS
+    $opt_silent && exit $EXIT_SUCCESS
 
     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       echo "----------------------------------------------------------------------"
@@ -4042,27 +2723,27 @@ func_mode_finish ()
       echo
       echo "If you ever happen to want to link against installed libraries"
       echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
       echo "flag during linking and do at least one of the following:"
       if test -n "$shlibpath_var"; then
-       echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
+       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
        echo "     during execution"
       fi
       if test -n "$runpath_var"; then
-       echo "   - add LIBDIR to the '$runpath_var' environment variable"
+       echo "   - add LIBDIR to the \`$runpath_var' environment variable"
        echo "     during linking"
       fi
       if test -n "$hardcode_libdir_flag_spec"; then
        libdir=LIBDIR
        eval flag=\"$hardcode_libdir_flag_spec\"
 
-       $ECHO "   - use the '$flag' linker flag"
+       $ECHO "   - use the \`$flag' linker flag"
       fi
       if test -n "$admincmds"; then
        $ECHO "   - have your system administrator run these commands:$admincmds"
       fi
       if test -f /etc/ld.so.conf; then
-       echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
+       echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
       fi
       echo
 
@@ -4081,20 +2762,18 @@ func_mode_finish ()
     exit $EXIT_SUCCESS
 }
 
-test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
 
 
 # func_mode_install arg...
 func_mode_install ()
 {
-    $debug_cmd
-
+    $opt_debug
     # There may be an optional sh(1) argument at the beginning of
     # install_prog (especially on Windows NT).
-    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
        # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac
-    then
+       case $nonopt in *shtool*) :;; *) false;; esac; then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -4121,7 +2800,7 @@ func_mode_install ()
     opts=
     prev=
     install_type=
-    isdir=false
+    isdir=no
     stripme=
     no_mode=:
     for arg
@@ -4134,7 +2813,7 @@ func_mode_install ()
       fi
 
       case $arg in
-      -d) isdir=: ;;
+      -d) isdir=yes ;;
       -f)
        if $install_cp; then :; else
          prev=$arg
@@ -4152,7 +2831,7 @@ func_mode_install ()
       *)
        # If the previous option needed an argument, then skip it.
        if test -n "$prev"; then
-         if test X-m = "X$prev" && test -n "$install_override_mode"; then
+         if test "x$prev" = x-m && test -n "$install_override_mode"; then
            arg2=$install_override_mode
            no_mode=false
          fi
@@ -4177,7 +2856,7 @@ func_mode_install ()
       func_fatal_help "you must specify an install program"
 
     test -n "$prev" && \
-      func_fatal_help "the '$prev' option requires an argument"
+      func_fatal_help "the \`$prev' option requires an argument"
 
     if test -n "$install_override_mode" && $no_mode; then
       if $install_cp; then :; else
@@ -4199,19 +2878,19 @@ func_mode_install ()
     dest=$func_stripname_result
 
     # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=:
-    if $isdir; then
-      destdir=$dest
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
       destname=
     else
       func_dirname_and_basename "$dest" "" "."
-      destdir=$func_dirname_result
-      destname=$func_basename_result
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
 
       # Not a directory, so check to see that there is only one file specified.
       set dummy $files; shift
       test "$#" -gt 1 && \
-       func_fatal_help "'$dest' is not a directory"
+       func_fatal_help "\`$dest' is not a directory"
     fi
     case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -4220,7 +2899,7 @@ func_mode_install ()
        case $file in
        *.lo) ;;
        *)
-         func_fatal_help "'$destdir' must be an absolute directory name"
+         func_fatal_help "\`$destdir' must be an absolute directory name"
          ;;
        esac
       done
@@ -4229,7 +2908,7 @@ func_mode_install ()
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic=$magic
+    libtool_install_magic="$magic"
 
     staticlibs=
     future_libdirs=
@@ -4249,7 +2928,7 @@ func_mode_install ()
 
        # Check to see that this really is a libtool archive.
        func_lalib_unsafe_p "$file" \
-         || func_fatal_help "'$file' is not a valid libtool archive"
+         || func_fatal_help "\`$file' is not a valid libtool archive"
 
        library_names=
        old_library=
@@ -4271,7 +2950,7 @@ func_mode_install ()
        fi
 
        func_dirname "$file" "/" ""
-       dir=$func_dirname_result
+       dir="$func_dirname_result"
        func_append dir "$objdir"
 
        if test -n "$relink_command"; then
@@ -4285,7 +2964,7 @@ func_mode_install ()
          # are installed into $libdir/../bin (currently, that works fine)
          # but it's something to keep an eye on.
          test "$inst_prefix_dir" = "$destdir" && \
-           func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
+           func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
 
          if test -n "$inst_prefix_dir"; then
            # Stick the inst_prefix_dir data into the link command.
@@ -4294,36 +2973,29 @@ func_mode_install ()
            relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
          fi
 
-         func_warning "relinking '$file'"
+         func_warning "relinking \`$file'"
          func_show_eval "$relink_command" \
-           'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
+           'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
        fi
 
        # See the names of the shared library.
        set dummy $library_names; shift
        if test -n "$1"; then
-         realname=$1
+         realname="$1"
          shift
 
-         srcname=$realname
-         test -n "$relink_command" && srcname=${realname}T
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
 
          # Install the shared library and build the symlinks.
          func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
              'exit $?'
-         tstripme=$stripme
+         tstripme="$stripme"
          case $host_os in
          cygwin* | mingw* | pw32* | cegcc*)
            case $realname in
            *.dll.a)
-             tstripme=
-             ;;
-           esac
-           ;;
-         os2*)
-           case $realname in
-           *_dll.a)
-             tstripme=
+             tstripme=""
              ;;
            esac
            ;;
@@ -4334,7 +3006,7 @@ func_mode_install ()
 
          if test "$#" -gt 0; then
            # Delete the old symlinks, and create new ones.
-           # Try 'ln -sf' first, because the 'ln' binary might depend on
+           # Try `ln -sf' first, because the `ln' binary might depend on
            # the symlink we replace!  Solaris /bin/ln does not understand -f,
            # so we also need to try rm && ln -s.
            for linkname
@@ -4345,14 +3017,14 @@ func_mode_install ()
          fi
 
          # Do each command in the postinstall commands.
-         lib=$destdir/$realname
+         lib="$destdir/$realname"
          func_execute_cmds "$postinstall_cmds" 'exit $?'
        fi
 
        # Install the pseudo-library for information purposes.
        func_basename "$file"
-       name=$func_basename_result
-       instname=$dir/${name}i
+       name="$func_basename_result"
+       instname="$dir/$name"i
        func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
        # Maybe install the static library, too.
@@ -4364,11 +3036,11 @@ func_mode_install ()
 
        # Figure out destination file name, if it wasn't already specified.
        if test -n "$destname"; then
-         destfile=$destdir/$destname
+         destfile="$destdir/$destname"
        else
          func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
        fi
 
        # Deduce the name of the destination old-style object file.
@@ -4378,11 +3050,11 @@ func_mode_install ()
          staticdest=$func_lo2o_result
          ;;
        *.$objext)
-         staticdest=$destfile
+         staticdest="$destfile"
          destfile=
          ;;
        *)
-         func_fatal_help "cannot copy a libtool object to '$destfile'"
+         func_fatal_help "cannot copy a libtool object to \`$destfile'"
          ;;
        esac
 
@@ -4391,7 +3063,7 @@ func_mode_install ()
          func_show_eval "$install_prog $file $destfile" 'exit $?'
 
        # Install the old object if enabled.
-       if test yes = "$build_old_libs"; then
+       if test "$build_old_libs" = yes; then
          # Deduce the name of the old-style object file.
          func_lo2o "$file"
          staticobj=$func_lo2o_result
@@ -4403,23 +3075,23 @@ func_mode_install ()
       *)
        # Figure out destination file name, if it wasn't already specified.
        if test -n "$destname"; then
-         destfile=$destdir/$destname
+         destfile="$destdir/$destname"
        else
          func_basename "$file"
-         destfile=$func_basename_result
-         destfile=$destdir/$destfile
+         destfile="$func_basename_result"
+         destfile="$destdir/$destfile"
        fi
 
        # If the file is missing, and there is a .exe on the end, strip it
        # because it is most likely a libtool script we actually want to
        # install
-       stripped_ext=
+       stripped_ext=""
        case $file in
          *.exe)
            if test ! -f "$file"; then
              func_stripname '' '.exe' "$file"
              file=$func_stripname_result
-             stripped_ext=.exe
+             stripped_ext=".exe"
            fi
            ;;
        esac
@@ -4447,19 +3119,19 @@ func_mode_install ()
 
          # Check the variables that should have been set.
          test -z "$generated_by_libtool_version" && \
-           func_fatal_error "invalid libtool wrapper script '$wrapper'"
+           func_fatal_error "invalid libtool wrapper script \`$wrapper'"
 
-         finalize=:
+         finalize=yes
          for lib in $notinst_deplibs; do
            # Check to see that each library is installed.
            libdir=
            if test -f "$lib"; then
              func_source "$lib"
            fi
-           libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
+           libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
            if test -n "$libdir" && test ! -f "$libfile"; then
-             func_warning "'$lib' has not been installed in '$libdir'"
-             finalize=false
+             func_warning "\`$lib' has not been installed in \`$libdir'"
+             finalize=no
            fi
          done
 
@@ -4467,29 +3139,29 @@ func_mode_install ()
          func_source "$wrapper"
 
          outputname=
-         if test no = "$fast_install" && test -n "$relink_command"; then
+         if test "$fast_install" = no && test -n "$relink_command"; then
            $opt_dry_run || {
-             if $finalize; then
+             if test "$finalize" = yes; then
                tmpdir=`func_mktempdir`
                func_basename "$file$stripped_ext"
-               file=$func_basename_result
-               outputname=$tmpdir/$file
+               file="$func_basename_result"
+               outputname="$tmpdir/$file"
                # Replace the output file specification.
                relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
-               $opt_quiet || {
+               $opt_silent || {
                  func_quote_for_expand "$relink_command"
                  eval "func_echo $func_quote_for_expand_result"
                }
                if eval "$relink_command"; then :
                  else
-                 func_error "error: relink '$file' with the above command before installing it"
+                 func_error "error: relink \`$file' with the above command before installing it"
                  $opt_dry_run || ${RM}r "$tmpdir"
                  continue
                fi
-               file=$outputname
+               file="$outputname"
              else
-               func_warning "cannot relink '$file'"
+               func_warning "cannot relink \`$file'"
              fi
            }
          else
@@ -4526,10 +3198,10 @@ func_mode_install ()
 
     for file in $staticlibs; do
       func_basename "$file"
-      name=$func_basename_result
+      name="$func_basename_result"
 
       # Set up the ranlib parameters.
-      oldlib=$destdir/$name
+      oldlib="$destdir/$name"
       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
       tool_oldlib=$func_to_tool_file_result
 
@@ -4544,18 +3216,18 @@ func_mode_install ()
     done
 
     test -n "$future_libdirs" && \
-      func_warning "remember to run '$progname --finish$future_libdirs'"
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
 
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
     else
       exit $EXIT_SUCCESS
     fi
 }
 
-test install = "$opt_mode" && func_mode_install ${1+"$@"}
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
 
 
 # func_generate_dlsyms outputname originator pic_p
@@ -4563,17 +3235,16 @@ test install = "$opt_mode" && func_mode_install ${1+"$@"}
 # a dlpreopen symbol table.
 func_generate_dlsyms ()
 {
-    $debug_cmd
-
-    my_outputname=$1
-    my_originator=$2
-    my_pic_p=${3-false}
-    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
     my_dlsyms=
 
-    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
       if test -n "$NM" && test -n "$global_symbol_pipe"; then
-       my_dlsyms=${my_outputname}S.c
+       my_dlsyms="${my_outputname}S.c"
       else
        func_error "not configured to extract global symbols from dlpreopened files"
       fi
@@ -4584,7 +3255,7 @@ func_generate_dlsyms ()
       "") ;;
       *.c)
        # Discover the nlist of each of the dlfiles.
-       nlist=$output_objdir/$my_outputname.nm
+       nlist="$output_objdir/${my_outputname}.nm"
 
        func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
 
@@ -4592,36 +3263,34 @@ func_generate_dlsyms ()
        func_verbose "creating $output_objdir/$my_dlsyms"
 
        $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
 
 #ifdef __cplusplus
 extern \"C\" {
 #endif
 
-#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
 #endif
 
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT_DLSYM_CONST
-#elif defined __osf__
+#elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
 # define LT_DLSYM_CONST
 #else
 # define LT_DLSYM_CONST const
 #endif
 
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
 /* External symbol declarations for the compiler. */\
 "
 
-       if test yes = "$dlself"; then
-         func_verbose "generating symbol list for '$output'"
+       if test "$dlself" = yes; then
+         func_verbose "generating symbol list for \`$output'"
 
          $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
@@ -4629,7 +3298,7 @@ extern \"C\" {
          progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
          for progfile in $progfiles; do
            func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-           func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
+           func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
            $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
          done
 
@@ -4649,10 +3318,10 @@ extern \"C\" {
 
          # Prepare the list of exported symbols
          if test -z "$export_symbols"; then
-           export_symbols=$output_objdir/$outputname.exp
+           export_symbols="$output_objdir/$outputname.exp"
            $opt_dry_run || {
              $RM $export_symbols
-             eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
              case $host in
              *cygwin* | *mingw* | *cegcc* )
                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -4662,7 +3331,7 @@ extern \"C\" {
            }
          else
            $opt_dry_run || {
-             eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
              eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
              eval '$MV "$nlist"T "$nlist"'
              case $host in
@@ -4676,22 +3345,22 @@ extern \"C\" {
        fi
 
        for dlprefile in $dlprefiles; do
-         func_verbose "extracting global C symbols from '$dlprefile'"
+         func_verbose "extracting global C symbols from \`$dlprefile'"
          func_basename "$dlprefile"
-         name=$func_basename_result
+         name="$func_basename_result"
           case $host in
            *cygwin* | *mingw* | *cegcc* )
              # if an import library, we need to obtain dlname
              if func_win32_import_lib_p "$dlprefile"; then
                func_tr_sh "$dlprefile"
                eval "curr_lafile=\$libfile_$func_tr_sh_result"
-               dlprefile_dlbasename=
+               dlprefile_dlbasename=""
                if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
                  # Use subshell, to avoid clobbering current variable values
                  dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-                 if test -n "$dlprefile_dlname"; then
+                 if test -n "$dlprefile_dlname" ; then
                    func_basename "$dlprefile_dlname"
-                   dlprefile_dlbasename=$func_basename_result
+                   dlprefile_dlbasename="$func_basename_result"
                  else
                    # no lafile. user explicitly requested -dlpreopen <import library>.
                    $sharedlib_from_linklib_cmd "$dlprefile"
@@ -4699,7 +3368,7 @@ extern \"C\" {
                  fi
                fi
                $opt_dry_run || {
-                 if test -n "$dlprefile_dlbasename"; then
+                 if test -n "$dlprefile_dlbasename" ; then
                    eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
                  else
                    func_warning "Could not compute DLL name from $name"
@@ -4755,11 +3424,6 @@ extern \"C\" {
            echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
          fi
 
-         func_show_eval '$RM "${nlist}I"'
-         if test -n "$global_symbol_to_import"; then
-           eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
-         fi
-
          echo >> "$output_objdir/$my_dlsyms" "\
 
 /* The mapping between symbol names and symbols.  */
@@ -4768,30 +3432,11 @@ typedef struct {
   void *address;
 } lt_dlsymlist;
 extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];\
-"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-static void lt_syminit(void)
-{
-  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
-  for (; symbol->name; ++symbol)
-    {"
-           $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
-           echo >> "$output_objdir/$my_dlsyms" "\
-    }
-}"
-         fi
-         echo >> "$output_objdir/$my_dlsyms" "\
+lt_${my_prefix}_LTX_preloaded_symbols[];
 LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[] =
-{ {\"$my_originator\", (void *) 0},"
-
-         if test -s "$nlist"I; then
-           echo >> "$output_objdir/$my_dlsyms" "\
-  {\"@INIT@\", (void *) &lt_syminit},"
-         fi
+{\
+  { \"$my_originator\", (void *) 0 },"
 
          case $need_lib_prefix in
          no)
@@ -4833,7 +3478,9 @@ static const void *lt_preloaded_setup() {
          *-*-hpux*)
            pic_flag_for_symtable=" $pic_flag"  ;;
          *)
-           $my_pic_p && pic_flag_for_symtable=" $pic_flag"
+           if test "X$my_pic_p" != Xno; then
+             pic_flag_for_symtable=" $pic_flag"
+           fi
            ;;
          esac
          ;;
@@ -4850,10 +3497,10 @@ static const void *lt_preloaded_setup() {
        func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
 
        # Clean up the generated files.
-       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
+       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
 
        # Transform the symbol file into the correct name.
-       symfileobj=$output_objdir/${my_outputname}S.$objext
+       symfileobj="$output_objdir/${my_outputname}S.$objext"
        case $host in
        *cygwin* | *mingw* | *cegcc* )
          if test -f "$output_objdir/$my_outputname.def"; then
@@ -4871,7 +3518,7 @@ static const void *lt_preloaded_setup() {
        esac
        ;;
       *)
-       func_fatal_error "unknown suffix for '$my_dlsyms'"
+       func_fatal_error "unknown suffix for \`$my_dlsyms'"
        ;;
       esac
     else
@@ -4885,32 +3532,6 @@ static const void *lt_preloaded_setup() {
     fi
 }
 
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $debug_cmd
-
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
 # func_win32_libid arg
 # return the library type of file 'arg'
 #
@@ -4920,9 +3541,8 @@ func_cygming_ms_implib_p ()
 # Despite the name, also deal with 64 bit binaries.
 func_win32_libid ()
 {
-  $debug_cmd
-
-  win32_libid_type=unknown
+  $opt_debug
+  win32_libid_type="unknown"
   win32_fileres=`file -L $1 2>/dev/null`
   case $win32_fileres in
   *ar\ archive\ import\ library*) # definitely import
@@ -4932,29 +3552,16 @@ func_win32_libid ()
     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      case $nm_interface in
-      "MS dumpbin")
-       if func_cygming_ms_implib_p "$1" ||
-          func_cygming_gnu_implib_p "$1"
-       then
-         win32_nmres=import
-       else
-         win32_nmres=
-       fi
-       ;;
-      *)
-       func_to_tool_file "$1" func_convert_file_msys_to_w32
-       win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-         $SED -n -e '
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+       $SED -n -e '
            1,100{
                / I /{
-                   s|.*|import|
+                   s,.*,import,
                    p
                    q
                }
            }'`
-       ;;
-      esac
       case $win32_nmres in
       import*)  win32_libid_type="x86 archive import";;
       *)        win32_libid_type="x86 archive static";;
@@ -4986,8 +3593,7 @@ func_win32_libid ()
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib ()
 {
-  $debug_cmd
-
+  $opt_debug
   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
 }
 
@@ -5004,8 +3610,7 @@ func_cygming_dll_for_implib ()
 # specified import library.
 func_cygming_dll_for_implib_fallback_core ()
 {
-  $debug_cmd
-
+  $opt_debug
   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
     $SED '/^Contents of section '"$match_literal"':/{
@@ -5041,8 +3646,8 @@ func_cygming_dll_for_implib_fallback_core ()
       /./p' |
     # we now have a list, one entry per line, of the stringified
     # contents of the appropriate section of all members of the
-    # archive that possess that section. Heuristic: eliminate
-    # all those that have a first or second character that is
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
     # a '.' (that is, objdump's representation of an unprintable
     # character.) This should work for all archives with less than
     # 0x302f exports -- but will fail for DLLs whose name actually
@@ -5053,6 +3658,30 @@ func_cygming_dll_for_implib_fallback_core ()
     $SED -e '/^\./d;/^.\./d;q'
 }
 
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
 # func_cygming_dll_for_implib_fallback ARG
 # Platform-specific function to extract the
 # name of the DLL associated with the specified
@@ -5066,17 +3695,16 @@ func_cygming_dll_for_implib_fallback_core ()
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib_fallback ()
 {
-  $debug_cmd
-
-  if func_cygming_gnu_implib_p "$1"; then
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
     # binutils import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1"; then
+  elif func_cygming_ms_implib_p "$1" ; then
     # ms-generated import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
   else
     # unknown
-    sharedlib_from_linklib_result=
+    sharedlib_from_linklib_result=""
   fi
 }
 
@@ -5084,11 +3712,10 @@ func_cygming_dll_for_implib_fallback ()
 # func_extract_an_archive dir oldlib
 func_extract_an_archive ()
 {
-    $debug_cmd
-
-    f_ex_an_ar_dir=$1; shift
-    f_ex_an_ar_oldlib=$1
-    if test yes = "$lock_old_archive_extraction"; then
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
       lockfile=$f_ex_an_ar_oldlib.lock
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
        func_echo "Waiting for $lockfile to be removed"
@@ -5097,7 +3724,7 @@ func_extract_an_archive ()
     fi
     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
                   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test yes = "$lock_old_archive_extraction"; then
+    if test "$lock_old_archive_extraction" = yes; then
       $opt_dry_run || rm -f "$lockfile"
     fi
     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
@@ -5111,23 +3738,22 @@ func_extract_an_archive ()
 # func_extract_archives gentop oldlib ...
 func_extract_archives ()
 {
-    $debug_cmd
-
-    my_gentop=$1; shift
+    $opt_debug
+    my_gentop="$1"; shift
     my_oldlibs=${1+"$@"}
-    my_oldobjs=
-    my_xlib=
-    my_xabs=
-    my_xdir=
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
 
     for my_xlib in $my_oldlibs; do
       # Extract the objects.
       case $my_xlib in
-       [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
        *) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       func_basename "$my_xlib"
-      my_xlib=$func_basename_result
+      my_xlib="$func_basename_result"
       my_xlib_u=$my_xlib
       while :; do
         case " $extracted_archives " in
@@ -5139,7 +3765,7 @@ func_extract_archives ()
        esac
       done
       extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir=$my_gentop/$my_xlib_u
+      my_xdir="$my_gentop/$my_xlib_u"
 
       func_mkdir_p "$my_xdir"
 
@@ -5152,23 +3778,22 @@ func_extract_archives ()
          cd $my_xdir || exit $?
          darwin_archive=$my_xabs
          darwin_curdir=`pwd`
-         func_basename "$darwin_archive"
-         darwin_base_archive=$func_basename_result
+         darwin_base_archive=`basename "$darwin_archive"`
          darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
          if test -n "$darwin_arches"; then
            darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
            darwin_arch=
            func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-           for darwin_arch in  $darwin_arches; do
-             func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
-             $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
-             cd "unfat-$$/$darwin_base_archive-$darwin_arch"
-             func_extract_an_archive "`pwd`" "$darwin_base_archive"
+           for darwin_arch in  $darwin_arches ; do
+             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
              cd "$darwin_curdir"
-             $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
+             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
            done # $darwin_arches
             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
            darwin_file=
            darwin_files=
            for darwin_file in $darwin_filelist; do
@@ -5190,7 +3815,7 @@ func_extract_archives ()
       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
-    func_extract_archives_result=$my_oldobjs
+    func_extract_archives_result="$my_oldobjs"
 }
 
 
@@ -5205,7 +3830,7 @@ func_extract_archives ()
 #
 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
 # variable will take.  If 'yes', then the emitted script
-# will assume that the directory where it is stored is
+# will assume that the directory in which it is stored is
 # the $objdir directory.  This is a cygwin/mingw-specific
 # behavior.
 func_emit_wrapper ()
@@ -5216,7 +3841,7 @@ func_emit_wrapper ()
 #! $SHELL
 
 # $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 #
 # The $output program cannot be directly executed until all the libtool
 # libraries that it depends on are installed.
@@ -5273,9 +3898,9 @@ _LTECHO_EOF'
 
 # Very basic option parsing. These options are (a) specific to
 # the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ that is used only on
+# /script/ and the wrapper /executable/ which is used only on
 # windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options that match
+# (application programs are unlikely to have options which match
 # this pattern).
 #
 # There are only two supported options: --lt-debug and
@@ -5308,7 +3933,7 @@ func_parse_lt_options ()
 
   # Print the debug banner immediately:
   if test -n \"\$lt_option_debug\"; then
-    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
   fi
 }
 
@@ -5319,7 +3944,7 @@ func_lt_dump_args ()
   lt_dump_args_N=1;
   for lt_arg
   do
-    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
   done
 }
@@ -5333,7 +3958,7 @@ func_exec_program_core ()
   *-*-mingw | *-*-os2* | *-cegcc*)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
@@ -5343,7 +3968,7 @@ func_exec_program_core ()
   *)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir/\$program\" \${1+\"\$@\"}
@@ -5418,13 +4043,13 @@ func_exec_program ()
   test -n \"\$absdir\" && thisdir=\"\$absdir\"
 "
 
-       if test yes = "$fast_install"; then
+       if test "$fast_install" = yes; then
          $ECHO "\
   program=lt-'$outputname'$exeext
   progdir=\"\$thisdir/$objdir\"
 
   if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
 
     file=\"\$\$-\$program\"
@@ -5441,7 +4066,7 @@ func_exec_program ()
     if test -n \"\$relink_command\"; then
       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       else
-       \$ECHO \"\$relink_command_output\" >&2
+       $ECHO \"\$relink_command_output\" >&2
        $RM \"\$progdir/\$file\"
        exit 1
       fi
@@ -5476,7 +4101,7 @@ func_exec_program ()
        fi
 
        # Export our shlibpath_var if we have one.
-       if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
          $ECHO "\
     # Add our own library path to $shlibpath_var
     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
@@ -5496,7 +4121,7 @@ func_exec_program ()
     fi
   else
     # The program doesn't exist.
-    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
@@ -5515,7 +4140,7 @@ func_emit_cwrapperexe_src ()
        cat <<EOF
 
 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 
    The $output program cannot be directly executed until all the libtool
    libraries that it depends on are installed.
@@ -5550,45 +4175,47 @@ EOF
 #include <fcntl.h>
 #include <sys/stat.h>
 
-#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
-
 /* declarations of non-ANSI functions */
-#if defined __MINGW32__
+#if defined(__MINGW32__)
 # ifdef __STRICT_ANSI__
 int _putenv (const char *);
 # endif
-#elif defined __CYGWIN__
+#elif defined(__CYGWIN__)
 # ifdef __STRICT_ANSI__
 char *realpath (const char *, char *);
 int putenv (char *);
 int setenv (const char *, const char *, int);
 # endif
-/* #elif defined other_platform || defined ... */
+/* #elif defined (other platforms) ... */
 #endif
 
 /* portability defines, excluding path handling macros */
-#if defined _MSC_VER
+#if defined(_MSC_VER)
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
 # define S_IXUSR _S_IEXEC
-#elif defined __MINGW32__
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
-#elif defined __CYGWIN__
+#elif defined(__CYGWIN__)
 # define HAVE_SETENV
 # define FOPEN_WB "wb"
-/* #elif defined other platforms ... */
+/* #elif defined (other platforms) ... */
 #endif
 
-#if defined PATH_MAX
+#if defined(PATH_MAX)
 # define LT_PATHMAX PATH_MAX
-#elif defined MAXPATHLEN
+#elif defined(MAXPATHLEN)
 # define LT_PATHMAX MAXPATHLEN
 #else
 # define LT_PATHMAX 1024
@@ -5607,8 +4234,8 @@ int setenv (const char *, const char *, int);
 # define PATH_SEPARATOR ':'
 #endif
 
-#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
-  defined __OS2__
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
 # define HAVE_DOS_BASED_FILE_SYSTEM
 # define FOPEN_WB "wb"
 # ifndef DIR_SEPARATOR_2
@@ -5641,10 +4268,10 @@ int setenv (const char *, const char *, int);
 
 #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
 #define XFREE(stale) do { \
-  if (stale) { free (stale); stale = 0; } \
+  if (stale) { free ((void *) stale); stale = 0; } \
 } while (0)
 
-#if defined LT_DEBUGWRAPPER
+#if defined(LT_DEBUGWRAPPER)
 static int lt_debug = 1;
 #else
 static int lt_debug = 0;
@@ -5673,16 +4300,11 @@ void lt_dump_script (FILE *f);
 EOF
 
            cat <<EOF
-#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
-# define externally_visible volatile
-#else
-# define externally_visible __attribute__((externally_visible)) volatile
-#endif
-externally_visible const char * MAGIC_EXE = "$magic_exe";
+volatile const char * MAGIC_EXE = "$magic_exe";
 const char * LIB_PATH_VARNAME = "$shlibpath_var";
 EOF
 
-           if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
               func_to_host_path "$temp_rpath"
              cat <<EOF
 const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
@@ -5706,7 +4328,7 @@ const char * EXE_PATH_VALUE   = "";
 EOF
            fi
 
-           if test yes = "$fast_install"; then
+           if test "$fast_install" = yes; then
              cat <<EOF
 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
 EOF
@@ -5735,12 +4357,12 @@ main (int argc, char *argv[])
   char *actual_cwrapper_name;
   char *target_name;
   char *lt_argv_zero;
-  int rval = 127;
+  intptr_t rval = 127;
 
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, (size_t) argc + 1);
+  newargz = XMALLOC (char *, argc + 1);
 
   /* very simple arg parsing; don't want to rely on getopt
    * also, copy all non cwrapper options to newargz, except
@@ -5749,10 +4371,10 @@ main (int argc, char *argv[])
   newargc=0;
   for (i = 1; i < argc; i++)
     {
-      if (STREQ (argv[i], dumpscript_opt))
+      if (strcmp (argv[i], dumpscript_opt) == 0)
        {
 EOF
-           case $host in
+           case "$host" in
              *mingw* | *cygwin* )
                # make stdout use "unix" line endings
                echo "          setmode(1,_O_BINARY);"
@@ -5763,12 +4385,12 @@ EOF
          lt_dump_script (stdout);
          return 0;
        }
-      if (STREQ (argv[i], debug_opt))
+      if (strcmp (argv[i], debug_opt) == 0)
        {
           lt_debug = 1;
           continue;
        }
-      if (STREQ (argv[i], ltwrapper_option_prefix))
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
         {
           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
              namespace, but it is not one of the ones we know about and
@@ -5791,7 +4413,7 @@ EOF
 EOF
            cat <<EOF
   /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
 EOF
            cat <<"EOF"
   lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
@@ -5902,7 +4524,7 @@ EOF
                cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
   newargz = prepare_spawn (newargz);
-  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   if (rval == -1)
     {
       /* failed to start process */
@@ -5947,7 +4569,7 @@ base_name (const char *name)
 {
   const char *base;
 
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
   /* Skip over the disk name in MSDOS pathnames. */
   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
     name += 2;
@@ -6006,7 +4628,7 @@ find_executable (const char *wrapper)
   const char *p_next;
   /* static buffer for getcwd */
   char tmp[LT_PATHMAX + 1];
-  size_t tmp_len;
+  int tmp_len;
   char *concat_name;
 
   lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
@@ -6016,7 +4638,7 @@ find_executable (const char *wrapper)
     return NULL;
 
   /* Absolute path? */
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
     {
       concat_name = xstrdup (wrapper);
@@ -6034,7 +4656,7 @@ find_executable (const char *wrapper)
            return concat_name;
          XFREE (concat_name);
        }
-#if defined HAVE_DOS_BASED_FILE_SYSTEM
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
     }
 #endif
 
@@ -6057,7 +4679,7 @@ find_executable (const char *wrapper)
              for (q = p; *q; q++)
                if (IS_PATH_SEPARATOR (*q))
                  break;
-             p_len = (size_t) (q - p);
+             p_len = q - p;
              p_next = (*q == '\0' ? q : q + 1);
              if (p_len == 0)
                {
@@ -6176,7 +4798,7 @@ strendzap (char *str, const char *pat)
   if (patlen <= len)
     {
       str += len - patlen;
-      if (STREQ (str, pat))
+      if (strcmp (str, pat) == 0)
        *str = '\0';
     }
   return str;
@@ -6241,7 +4863,7 @@ lt_setenv (const char *name, const char *value)
     char *str = xstrdup (value);
     setenv (name, str, 1);
 #else
-    size_t len = strlen (name) + 1 + strlen (value) + 1;
+    int len = strlen (name) + 1 + strlen (value) + 1;
     char *str = XMALLOC (char, len);
     sprintf (str, "%s=%s", name, value);
     if (putenv (str) != EXIT_SUCCESS)
@@ -6258,8 +4880,8 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
   char *new_value;
   if (orig_value && *orig_value)
     {
-      size_t orig_value_len = strlen (orig_value);
-      size_t add_len = strlen (add);
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
       new_value = XMALLOC (char, add_len + orig_value_len + 1);
       if (to_end)
         {
@@ -6290,10 +4912,10 @@ lt_update_exe_path (const char *name, const char *value)
     {
       char *new_value = lt_extend_str (getenv (name), value, 0);
       /* some systems can't cope with a ':'-terminated path #' */
-      size_t len = strlen (new_value);
-      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
         {
-          new_value[--len] = '\0';
+          new_value[len-1] = '\0';
         }
       lt_setenv (name, new_value);
       XFREE (new_value);
@@ -6460,47 +5082,27 @@ EOF
 # True if ARG is an import lib, as indicated by $file_magic_cmd
 func_win32_import_lib_p ()
 {
-    $debug_cmd
-
+    $opt_debug
     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
     *import*) : ;;
     *) false ;;
     esac
 }
 
-# func_suncc_cstd_abi
-# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
-# Several compiler flags select an ABI that is incompatible with the
-# Cstd library. Avoid specifying it if any are in CXXFLAGS.
-func_suncc_cstd_abi ()
-{
-    $debug_cmd
-
-    case " $compile_command " in
-    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
-      suncc_use_cstd_abi=no
-      ;;
-    *)
-      suncc_use_cstd_abi=yes
-      ;;
-    esac
-}
-
 # func_mode_link arg...
 func_mode_link ()
 {
-    $debug_cmd
-
+    $opt_debug
     case $host in
     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
-      # what system we are compiling for in order to pass an extra
+      # which system we are compiling for in order to pass an extra
       # flag for every libtool invocation.
       # allow_undefined=no
 
       # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll that has undefined symbols, in which case not
+      # to make a dll which has undefined symbols, in which case not
       # even a static library is built.  For now, we need to specify
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
@@ -6544,11 +5146,10 @@ func_mode_link ()
     module=no
     no_install=no
     objs=
-    os2dllname=
     non_pic_objects=
     precious_files_regex=
     prefer_static_libs=no
-    preload=false
+    preload=no
     prev=
     prevarg=
     release=
@@ -6560,7 +5161,7 @@ func_mode_link ()
     vinfo=
     vinfo_number=no
     weak_libs=
-    single_module=$wl-single_module
+    single_module="${wl}-single_module"
     func_infer_tag $base_compile
 
     # We need to know -static, to get the right output filenames.
@@ -6568,15 +5169,15 @@ func_mode_link ()
     do
       case $arg in
       -shared)
-       test yes != "$build_libtool_libs" \
-         && func_fatal_configuration "cannot build a shared library"
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
        build_old_libs=no
        break
        ;;
       -all-static | -static | -static-libtool-libs)
        case $arg in
        -all-static)
-         if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
            func_warning "complete static linking is impossible in this configuration"
          fi
          if test -n "$link_static_flag"; then
@@ -6609,7 +5210,7 @@ func_mode_link ()
 
     # Go through the arguments, transforming them on the way.
     while test "$#" -gt 0; do
-      arg=$1
+      arg="$1"
       shift
       func_quote_for_eval "$arg"
       qarg=$func_quote_for_eval_unquoted_result
@@ -6626,21 +5227,21 @@ func_mode_link ()
 
        case $prev in
        bindir)
-         bindir=$arg
+         bindir="$arg"
          prev=
          continue
          ;;
        dlfiles|dlprefiles)
-         $preload || {
+         if test "$preload" = no; then
            # Add the symbol object into the linking commands.
            func_append compile_command " @SYMFILE@"
            func_append finalize_command " @SYMFILE@"
-           preload=:
-         }
+           preload=yes
+         fi
          case $arg in
          *.la | *.lo) ;;  # We handle these cases below.
          force)
-           if test no = "$dlself"; then
+           if test "$dlself" = no; then
              dlself=needless
              export_dynamic=yes
            fi
@@ -6648,9 +5249,9 @@ func_mode_link ()
            continue
            ;;
          self)
-           if test dlprefiles = "$prev"; then
+           if test "$prev" = dlprefiles; then
              dlself=yes
-           elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
              dlself=yes
            else
              dlself=needless
@@ -6660,7 +5261,7 @@ func_mode_link ()
            continue
            ;;
          *)
-           if test dlfiles = "$prev"; then
+           if test "$prev" = dlfiles; then
              func_append dlfiles " $arg"
            else
              func_append dlprefiles " $arg"
@@ -6671,14 +5272,14 @@ func_mode_link ()
          esac
          ;;
        expsyms)
-         export_symbols=$arg
+         export_symbols="$arg"
          test -f "$arg" \
-           || func_fatal_error "symbol file '$arg' does not exist"
+           || func_fatal_error "symbol file \`$arg' does not exist"
          prev=
          continue
          ;;
        expsyms_regex)
-         export_symbols_regex=$arg
+         export_symbols_regex="$arg"
          prev=
          continue
          ;;
@@ -6696,13 +5297,7 @@ func_mode_link ()
          continue
          ;;
        inst_prefix)
-         inst_prefix_dir=$arg
-         prev=
-         continue
-         ;;
-       mllvm)
-         # Clang does not use LLVM to link, so we can simply discard any
-         # '-mllvm $arg' options when doing the link step.
+         inst_prefix_dir="$arg"
          prev=
          continue
          ;;
@@ -6726,21 +5321,21 @@ func_mode_link ()
 
                if test -z "$pic_object" ||
                   test -z "$non_pic_object" ||
-                  test none = "$pic_object" &&
-                  test none = "$non_pic_object"; then
-                 func_fatal_error "cannot find name of object for '$arg'"
+                  test "$pic_object" = none &&
+                  test "$non_pic_object" = none; then
+                 func_fatal_error "cannot find name of object for \`$arg'"
                fi
 
                # Extract subdirectory from the argument.
                func_dirname "$arg" "/" ""
-               xdir=$func_dirname_result
+               xdir="$func_dirname_result"
 
-               if test none != "$pic_object"; then
+               if test "$pic_object" != none; then
                  # Prepend the subdirectory the object is found in.
-                 pic_object=$xdir$pic_object
+                 pic_object="$xdir$pic_object"
 
-                 if test dlfiles = "$prev"; then
-                   if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
                      func_append dlfiles " $pic_object"
                      prev=
                      continue
@@ -6751,7 +5346,7 @@ func_mode_link ()
                  fi
 
                  # CHECK ME:  I think I busted this.  -Ossama
-                 if test dlprefiles = "$prev"; then
+                 if test "$prev" = dlprefiles; then
                    # Preload the old-style object.
                    func_append dlprefiles " $pic_object"
                    prev=
@@ -6759,23 +5354,23 @@ func_mode_link ()
 
                  # A PIC object.
                  func_append libobjs " $pic_object"
-                 arg=$pic_object
+                 arg="$pic_object"
                fi
 
                # Non-PIC object.
-               if test none != "$non_pic_object"; then
+               if test "$non_pic_object" != none; then
                  # Prepend the subdirectory the object is found in.
-                 non_pic_object=$xdir$non_pic_object
+                 non_pic_object="$xdir$non_pic_object"
 
                  # A standard non-PIC object
                  func_append non_pic_objects " $non_pic_object"
-                 if test -z "$pic_object" || test none = "$pic_object"; then
-                   arg=$non_pic_object
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
                  fi
                else
                  # If the PIC object exists, use it instead.
                  # $xdir was prepended to $pic_object above.
-                 non_pic_object=$pic_object
+                 non_pic_object="$pic_object"
                  func_append non_pic_objects " $non_pic_object"
                fi
              else
@@ -6783,7 +5378,7 @@ func_mode_link ()
                if $opt_dry_run; then
                  # Extract subdirectory from the argument.
                  func_dirname "$arg" "/" ""
-                 xdir=$func_dirname_result
+                 xdir="$func_dirname_result"
 
                  func_lo2o "$arg"
                  pic_object=$xdir$objdir/$func_lo2o_result
@@ -6791,29 +5386,24 @@ func_mode_link ()
                  func_append libobjs " $pic_object"
                  func_append non_pic_objects " $non_pic_object"
                else
-                 func_fatal_error "'$arg' is not a valid libtool object"
+                 func_fatal_error "\`$arg' is not a valid libtool object"
                fi
              fi
            done
          else
-           func_fatal_error "link input file '$arg' does not exist"
+           func_fatal_error "link input file \`$arg' does not exist"
          fi
          arg=$save_arg
          prev=
          continue
          ;;
-       os2dllname)
-         os2dllname=$arg
-         prev=
-         continue
-         ;;
        precious_regex)
-         precious_files_regex=$arg
+         precious_files_regex="$arg"
          prev=
          continue
          ;;
        release)
-         release=-$arg
+         release="-$arg"
          prev=
          continue
          ;;
@@ -6825,7 +5415,7 @@ func_mode_link ()
            func_fatal_error "only absolute run-paths are allowed"
            ;;
          esac
-         if test rpath = "$prev"; then
+         if test "$prev" = rpath; then
            case "$rpath " in
            *" $arg "*) ;;
            *) func_append rpath " $arg" ;;
@@ -6840,7 +5430,7 @@ func_mode_link ()
          continue
          ;;
        shrext)
-         shrext_cmds=$arg
+         shrext_cmds="$arg"
          prev=
          continue
          ;;
@@ -6880,7 +5470,7 @@ func_mode_link ()
        esac
       fi # test -n "$prev"
 
-      prevarg=$arg
+      prevarg="$arg"
 
       case $arg in
       -all-static)
@@ -6894,7 +5484,7 @@ func_mode_link ()
 
       -allow-undefined)
        # FIXME: remove this flag sometime in the future.
-       func_fatal_error "'-allow-undefined' must not be used because it is the default"
+       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
        ;;
 
       -avoid-version)
@@ -6926,7 +5516,7 @@ func_mode_link ()
        if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
          func_fatal_error "more than one -exported-symbols argument is not allowed"
        fi
-       if test X-export-symbols = "X$arg"; then
+       if test "X$arg" = "X-export-symbols"; then
          prev=expsyms
        else
          prev=expsyms_regex
@@ -6960,9 +5550,9 @@ func_mode_link ()
        func_stripname "-L" '' "$arg"
        if test -z "$func_stripname_result"; then
          if test "$#" -gt 0; then
-           func_fatal_error "require no space between '-L' and '$1'"
+           func_fatal_error "require no space between \`-L' and \`$1'"
          else
-           func_fatal_error "need path for '-L' option"
+           func_fatal_error "need path for \`-L' option"
          fi
        fi
        func_resolve_sysroot "$func_stripname_result"
@@ -6973,8 +5563,8 @@ func_mode_link ()
        *)
          absdir=`cd "$dir" && pwd`
          test -z "$absdir" && \
-           func_fatal_error "cannot determine absolute directory name of '$dir'"
-         dir=$absdir
+           func_fatal_error "cannot determine absolute directory name of \`$dir'"
+         dir="$absdir"
          ;;
        esac
        case "$deplibs " in
@@ -7009,7 +5599,7 @@ func_mode_link ()
        ;;
 
       -l*)
-       if test X-lc = "X$arg" || test X-lm = "X$arg"; then
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
          case $host in
          *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
            # These systems don't actually have a C or math library (as such)
@@ -7017,11 +5607,11 @@ func_mode_link ()
            ;;
          *-*-os2*)
            # These systems don't actually have a C library (as such)
-           test X-lc = "X$arg" && continue
+           test "X$arg" = "X-lc" && continue
            ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
            # Do not include libc due to us having libc/libc_r.
-           test X-lc = "X$arg" && continue
+           test "X$arg" = "X-lc" && continue
            ;;
          *-*-rhapsody* | *-*-darwin1.[012])
            # Rhapsody C and math libraries are in the System framework
@@ -7030,16 +5620,16 @@ func_mode_link ()
            ;;
          *-*-sco3.2v5* | *-*-sco5v6*)
            # Causes problems with __ctype
-           test X-lc = "X$arg" && continue
+           test "X$arg" = "X-lc" && continue
            ;;
          *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
            # Compiler inserts libc in the correct place for threads to work
-           test X-lc = "X$arg" && continue
+           test "X$arg" = "X-lc" && continue
            ;;
          esac
-       elif test X-lc_r = "X$arg"; then
+       elif test "X$arg" = "X-lc_r"; then
         case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
           # Do not include libc_r directly, use -pthread flag.
           continue
           ;;
@@ -7049,11 +5639,6 @@ func_mode_link ()
        continue
        ;;
 
-      -mllvm)
-       prev=mllvm
-       continue
-       ;;
-
       -module)
        module=yes
        continue
@@ -7083,7 +5668,7 @@ func_mode_link ()
        ;;
 
       -multi_module)
-       single_module=$wl-multi_module
+       single_module="${wl}-multi_module"
        continue
        ;;
 
@@ -7097,8 +5682,8 @@ func_mode_link ()
        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
          # The PATH hackery in wrapper scripts is required on Windows
          # and Darwin in order for the loader to find any dlls it needs.
-         func_warning "'-no-install' is ignored for $host"
-         func_warning "assuming '-no-fast-install' instead"
+         func_warning "\`-no-install' is ignored for $host"
+         func_warning "assuming \`-no-fast-install' instead"
          fast_install=no
          ;;
        *) no_install=yes ;;
@@ -7116,11 +5701,6 @@ func_mode_link ()
        continue
        ;;
 
-      -os2dllname)
-       prev=os2dllname
-       continue
-       ;;
-
       -o) prev=output ;;
 
       -precious-files-regex)
@@ -7208,14 +5788,14 @@ func_mode_link ()
        func_stripname '-Wc,' '' "$arg"
        args=$func_stripname_result
        arg=
-       save_ifs=$IFS; IFS=,
+       save_ifs="$IFS"; IFS=','
        for flag in $args; do
-         IFS=$save_ifs
+         IFS="$save_ifs"
           func_quote_for_eval "$flag"
          func_append arg " $func_quote_for_eval_result"
          func_append compiler_flags " $func_quote_for_eval_result"
        done
-       IFS=$save_ifs
+       IFS="$save_ifs"
        func_stripname ' ' '' "$arg"
        arg=$func_stripname_result
        ;;
@@ -7224,15 +5804,15 @@ func_mode_link ()
        func_stripname '-Wl,' '' "$arg"
        args=$func_stripname_result
        arg=
-       save_ifs=$IFS; IFS=,
+       save_ifs="$IFS"; IFS=','
        for flag in $args; do
-         IFS=$save_ifs
+         IFS="$save_ifs"
           func_quote_for_eval "$flag"
          func_append arg " $wl$func_quote_for_eval_result"
          func_append compiler_flags " $wl$func_quote_for_eval_result"
          func_append linker_flags " $func_quote_for_eval_result"
        done
-       IFS=$save_ifs
+       IFS="$save_ifs"
        func_stripname ' ' '' "$arg"
        arg=$func_stripname_result
        ;;
@@ -7255,7 +5835,7 @@ func_mode_link ()
       # -msg_* for osf cc
       -msg_*)
        func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       arg="$func_quote_for_eval_result"
        ;;
 
       # Flags to be passed through unchanged, with rationale:
@@ -7267,49 +5847,25 @@ func_mode_link ()
       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
       # -F/path              path to uninstalled frameworks, gcc on darwin
       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
-      # -fstack-protector*   stack protector flags for GCC
       # @file                GCC response files
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
-      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
-      # -specs=*             GCC specs files
-      # -stdlib=*            select c++ std lib with clang
-      # -fsanitize=*         Clang/GCC memory and address sanitizer
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-      -specs=*|-fsanitize=*)
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
         func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       arg="$func_quote_for_eval_result"
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
         func_append compiler_flags " $arg"
         continue
         ;;
 
-      -Z*)
-        if test os2 = "`expr $host : '.*\(os2\)'`"; then
-          # OS/2 uses -Zxxx to specify OS/2-specific options
-         compiler_flags="$compiler_flags $arg"
-         func_append compile_command " $arg"
-         func_append finalize_command " $arg"
-         case $arg in
-         -Zlinker | -Zstack)
-           prev=xcompiler
-           ;;
-         esac
-         continue
-        else
-         # Otherwise treat like 'Some other compiler flag' below
-         func_quote_for_eval "$arg"
-         arg=$func_quote_for_eval_result
-        fi
-       ;;
-
       # Some other compiler flag.
       -* | +*)
         func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       arg="$func_quote_for_eval_result"
        ;;
 
       *.$objext)
@@ -7330,21 +5886,21 @@ func_mode_link ()
 
          if test -z "$pic_object" ||
             test -z "$non_pic_object" ||
-            test none = "$pic_object" &&
-            test none = "$non_pic_object"; then
-           func_fatal_error "cannot find name of object for '$arg'"
+            test "$pic_object" = none &&
+            test "$non_pic_object" = none; then
+           func_fatal_error "cannot find name of object for \`$arg'"
          fi
 
          # Extract subdirectory from the argument.
          func_dirname "$arg" "/" ""
-         xdir=$func_dirname_result
+         xdir="$func_dirname_result"
 
-         test none = "$pic_object" || {
+         if test "$pic_object" != none; then
            # Prepend the subdirectory the object is found in.
-           pic_object=$xdir$pic_object
+           pic_object="$xdir$pic_object"
 
-           if test dlfiles = "$prev"; then
-             if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
                func_append dlfiles " $pic_object"
                prev=
                continue
@@ -7355,7 +5911,7 @@ func_mode_link ()
            fi
 
            # CHECK ME:  I think I busted this.  -Ossama
-           if test dlprefiles = "$prev"; then
+           if test "$prev" = dlprefiles; then
              # Preload the old-style object.
              func_append dlprefiles " $pic_object"
              prev=
@@ -7363,23 +5919,23 @@ func_mode_link ()
 
            # A PIC object.
            func_append libobjs " $pic_object"
-           arg=$pic_object
-         }
+           arg="$pic_object"
+         fi
 
          # Non-PIC object.
-         if test none != "$non_pic_object"; then
+         if test "$non_pic_object" != none; then
            # Prepend the subdirectory the object is found in.
-           non_pic_object=$xdir$non_pic_object
+           non_pic_object="$xdir$non_pic_object"
 
            # A standard non-PIC object
            func_append non_pic_objects " $non_pic_object"
-           if test -z "$pic_object" || test none = "$pic_object"; then
-             arg=$non_pic_object
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
            fi
          else
            # If the PIC object exists, use it instead.
            # $xdir was prepended to $pic_object above.
-           non_pic_object=$pic_object
+           non_pic_object="$pic_object"
            func_append non_pic_objects " $non_pic_object"
          fi
        else
@@ -7387,7 +5943,7 @@ func_mode_link ()
          if $opt_dry_run; then
            # Extract subdirectory from the argument.
            func_dirname "$arg" "/" ""
-           xdir=$func_dirname_result
+           xdir="$func_dirname_result"
 
            func_lo2o "$arg"
            pic_object=$xdir$objdir/$func_lo2o_result
@@ -7395,7 +5951,7 @@ func_mode_link ()
            func_append libobjs " $pic_object"
            func_append non_pic_objects " $non_pic_object"
          else
-           func_fatal_error "'$arg' is not a valid libtool object"
+           func_fatal_error "\`$arg' is not a valid libtool object"
          fi
        fi
        ;;
@@ -7411,11 +5967,11 @@ func_mode_link ()
        # A libtool-controlled library.
 
        func_resolve_sysroot "$arg"
-       if test dlfiles = "$prev"; then
+       if test "$prev" = dlfiles; then
          # This library was specified with -dlopen.
          func_append dlfiles " $func_resolve_sysroot_result"
          prev=
-       elif test dlprefiles = "$prev"; then
+       elif test "$prev" = dlprefiles; then
          # The library was specified with -dlpreopen.
          func_append dlprefiles " $func_resolve_sysroot_result"
          prev=
@@ -7430,7 +5986,7 @@ func_mode_link ()
        # Unknown arguments in both finalize_command and compile_command need
        # to be aesthetically quoted because they are evaled later.
        func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       arg="$func_quote_for_eval_result"
        ;;
       esac # arg
 
@@ -7442,9 +5998,9 @@ func_mode_link ()
     done # argument parsing loop
 
     test -n "$prev" && \
-      func_fatal_help "the '$prevarg' option requires an argument"
+      func_fatal_help "the \`$prevarg' option requires an argument"
 
-    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
       eval arg=\"$export_dynamic_flag_spec\"
       func_append compile_command " $arg"
       func_append finalize_command " $arg"
@@ -7453,23 +6009,20 @@ func_mode_link ()
     oldlibs=
     # calculate the name of the file, without its directory
     func_basename "$output"
-    outputname=$func_basename_result
-    libobjs_save=$libobjs
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
-    # Definition is injected by LT_CONFIG during libtool generation.
-    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
-
     func_dirname "$output" "/" ""
-    output_objdir=$func_dirname_result$objdir
+    output_objdir="$func_dirname_result$objdir"
     func_to_tool_file "$output_objdir/"
     tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
@@ -7492,7 +6045,7 @@ func_mode_link ()
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if $opt_preserve_dup_deps; then
+      if $opt_preserve_dup_deps ; then
        case "$libs " in
        *" $deplib "*) func_append specialdeplibs " $deplib" ;;
        esac
@@ -7500,7 +6053,7 @@ func_mode_link ()
       func_append libs " $deplib"
     done
 
-    if test lib = "$linkmode"; then
+    if test "$linkmode" = lib; then
       libs="$predeps $libs $compiler_lib_search_path $postdeps"
 
       # Compute libraries that are listed more than once in $predeps
@@ -7532,7 +6085,7 @@ func_mode_link ()
          case $file in
          *.la) ;;
          *)
-           func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
+           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
            ;;
          esac
        done
@@ -7540,7 +6093,7 @@ func_mode_link ()
     prog)
        compile_deplibs=
        finalize_deplibs=
-       alldeplibs=false
+       alldeplibs=no
        newdlfiles=
        newdlprefiles=
        passes="conv scan dlopen dlpreopen link"
@@ -7552,32 +6105,32 @@ func_mode_link ()
     for pass in $passes; do
       # The preopen pass in lib mode reverses $deplibs; put it back here
       # so that -L comes before libs that need it for instance...
-      if test lib,link = "$linkmode,$pass"; then
+      if test "$linkmode,$pass" = "lib,link"; then
        ## FIXME: Find the place where the list is rebuilt in the wrong
        ##        order, and fix it there properly
         tmp_deplibs=
        for deplib in $deplibs; do
          tmp_deplibs="$deplib $tmp_deplibs"
        done
-       deplibs=$tmp_deplibs
+       deplibs="$tmp_deplibs"
       fi
 
-      if test lib,link = "$linkmode,$pass" ||
-        test prog,scan = "$linkmode,$pass"; then
-       libs=$deplibs
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
        deplibs=
       fi
-      if test prog = "$linkmode"; then
+      if test "$linkmode" = prog; then
        case $pass in
-       dlopen) libs=$dlfiles ;;
-       dlpreopen) libs=$dlprefiles ;;
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
        link)
          libs="$deplibs %DEPLIBS%"
          test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
          ;;
        esac
       fi
-      if test lib,dlpreopen = "$linkmode,$pass"; then
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
        # Collect and forward deplibs of preopened libtool libs
        for lib in $dlprefiles; do
          # Ignore non-libtool-libs
@@ -7598,26 +6151,26 @@ func_mode_link ()
            esac
          done
        done
-       libs=$dlprefiles
+       libs="$dlprefiles"
       fi
-      if test dlopen = "$pass"; then
+      if test "$pass" = dlopen; then
        # Collect dlpreopened libraries
-       save_deplibs=$deplibs
+       save_deplibs="$deplibs"
        deplibs=
       fi
 
       for deplib in $libs; do
        lib=
-       found=false
+       found=no
        case $deplib in
        -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
         |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-         if test prog,link = "$linkmode,$pass"; then
+         if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"
            finalize_deplibs="$deplib $finalize_deplibs"
          else
            func_append compiler_flags " $deplib"
-           if test lib = "$linkmode"; then
+           if test "$linkmode" = lib ; then
                case "$new_inherited_linker_flags " in
                    *" $deplib "*) ;;
                    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -7627,13 +6180,13 @@ func_mode_link ()
          continue
          ;;
        -l*)
-         if test lib != "$linkmode" && test prog != "$linkmode"; then
-           func_warning "'-l' is ignored for archives/objects"
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           func_warning "\`-l' is ignored for archives/objects"
            continue
          fi
          func_stripname '-l' '' "$deplib"
          name=$func_stripname_result
-         if test lib = "$linkmode"; then
+         if test "$linkmode" = lib; then
            searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
          else
            searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -7641,22 +6194,31 @@ func_mode_link ()
          for searchdir in $searchdirs; do
            for search_ext in .la $std_shrext .so .a; do
              # Search the libtool library
-             lib=$searchdir/lib$name$search_ext
+             lib="$searchdir/lib${name}${search_ext}"
              if test -f "$lib"; then
-               if test .la = "$search_ext"; then
-                 found=:
+               if test "$search_ext" = ".la"; then
+                 found=yes
                else
-                 found=false
+                 found=no
                fi
                break 2
              fi
            done
          done
-         if $found; then
-           # deplib is a libtool library
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
            # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
            # We need to do some special things here, and not later.
-           if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
              case " $predeps $postdeps " in
              *" $deplib "*)
                if func_lalib_p "$lib"; then
@@ -7664,19 +6226,19 @@ func_mode_link ()
                  old_library=
                  func_source "$lib"
                  for l in $old_library $library_names; do
-                   ll=$l
+                   ll="$l"
                  done
-                 if test "X$ll" = "X$old_library"; then # only static version available
-                   found=false
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
                    func_dirname "$lib" "" "."
-                   ladir=$func_dirname_result
+                   ladir="$func_dirname_result"
                    lib=$ladir/$old_library
-                   if test prog,link = "$linkmode,$pass"; then
+                   if test "$linkmode,$pass" = "prog,link"; then
                      compile_deplibs="$deplib $compile_deplibs"
                      finalize_deplibs="$deplib $finalize_deplibs"
                    else
                      deplibs="$deplib $deplibs"
-                     test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
                    fi
                    continue
                  fi
@@ -7685,25 +6247,15 @@ func_mode_link ()
              *) ;;
              esac
            fi
-         else
-           # deplib doesn't seem to be a libtool library
-           if test prog,link = "$linkmode,$pass"; then
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             deplibs="$deplib $deplibs"
-             test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
-           fi
-           continue
          fi
          ;; # -l
        *.ltframework)
-         if test prog,link = "$linkmode,$pass"; then
+         if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"
            finalize_deplibs="$deplib $finalize_deplibs"
          else
            deplibs="$deplib $deplibs"
-           if test lib = "$linkmode"; then
+           if test "$linkmode" = lib ; then
                case "$new_inherited_linker_flags " in
                    *" $deplib "*) ;;
                    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -7716,18 +6268,18 @@ func_mode_link ()
          case $linkmode in
          lib)
            deplibs="$deplib $deplibs"
-           test conv = "$pass" && continue
+           test "$pass" = conv && continue
            newdependency_libs="$deplib $newdependency_libs"
            func_stripname '-L' '' "$deplib"
            func_resolve_sysroot "$func_stripname_result"
            func_append newlib_search_path " $func_resolve_sysroot_result"
            ;;
          prog)
-           if test conv = "$pass"; then
+           if test "$pass" = conv; then
              deplibs="$deplib $deplibs"
              continue
            fi
-           if test scan = "$pass"; then
+           if test "$pass" = scan; then
              deplibs="$deplib $deplibs"
            else
              compile_deplibs="$deplib $compile_deplibs"
@@ -7738,13 +6290,13 @@ func_mode_link ()
            func_append newlib_search_path " $func_resolve_sysroot_result"
            ;;
          *)
-           func_warning "'-L' is ignored for archives/objects"
+           func_warning "\`-L' is ignored for archives/objects"
            ;;
          esac # linkmode
          continue
          ;; # -L
        -R*)
-         if test link = "$pass"; then
+         if test "$pass" = link; then
            func_stripname '-R' '' "$deplib"
            func_resolve_sysroot "$func_stripname_result"
            dir=$func_resolve_sysroot_result
@@ -7762,7 +6314,7 @@ func_mode_link ()
          lib=$func_resolve_sysroot_result
          ;;
        *.$libext)
-         if test conv = "$pass"; then
+         if test "$pass" = conv; then
            deplibs="$deplib $deplibs"
            continue
          fi
@@ -7773,26 +6325,21 @@ func_mode_link ()
            case " $dlpreconveniencelibs " in
            *" $deplib "*) ;;
            *)
-             valid_a_lib=false
+             valid_a_lib=no
              case $deplibs_check_method in
                match_pattern*)
                  set dummy $deplibs_check_method; shift
                  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
                  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
                    | $EGREP "$match_pattern_regex" > /dev/null; then
-                   valid_a_lib=:
+                   valid_a_lib=yes
                  fi
                ;;
                pass_all)
-                 valid_a_lib=:
+                 valid_a_lib=yes
                ;;
              esac
-             if $valid_a_lib; then
-               echo
-               $ECHO "*** Warning: Linking the shared library $output against the"
-               $ECHO "*** static library $deplib is not portable!"
-               deplibs="$deplib $deplibs"
-             else
+             if test "$valid_a_lib" != yes; then
                echo
                $ECHO "*** Warning: Trying to link with static lib archive $deplib."
                echo "*** I have the capability to make that library automatically link in when"
@@ -7800,13 +6347,18 @@ func_mode_link ()
                echo "*** shared version of the library, which you do not appear to have"
                echo "*** because the file extensions .$libext of this argument makes me believe"
                echo "*** that it is just a static archive that I should not use here."
+             else
+               echo
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
              fi
              ;;
            esac
            continue
            ;;
          prog)
-           if test link != "$pass"; then
+           if test "$pass" != link; then
              deplibs="$deplib $deplibs"
            else
              compile_deplibs="$deplib $compile_deplibs"
@@ -7817,10 +6369,10 @@ func_mode_link ()
          esac # linkmode
          ;; # *.$libext
        *.lo | *.$objext)
-         if test conv = "$pass"; then
+         if test "$pass" = conv; then
            deplibs="$deplib $deplibs"
-         elif test prog = "$linkmode"; then
-           if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
              # If there is no dlopen support or we're linking statically,
              # we need to preload.
              func_append newdlprefiles " $deplib"
@@ -7833,20 +6385,22 @@ func_mode_link ()
          continue
          ;;
        %DEPLIBS%)
-         alldeplibs=:
+         alldeplibs=yes
          continue
          ;;
        esac # case $deplib
 
-       $found || test -f "$lib" \
-         || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+       fi
 
        # Check to see that this really is a libtool archive.
        func_lalib_unsafe_p "$lib" \
-         || func_fatal_error "'$lib' is not a valid libtool archive"
+         || func_fatal_error "\`$lib' is not a valid libtool archive"
 
        func_dirname "$lib" "" "."
-       ladir=$func_dirname_result
+       ladir="$func_dirname_result"
 
        dlname=
        dlopen=
@@ -7876,19 +6430,19 @@ func_mode_link ()
          done
        fi
        dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-       if test lib,link = "$linkmode,$pass" ||
-          test prog,scan = "$linkmode,$pass" ||
-          { test prog != "$linkmode" && test lib != "$linkmode"; }; then
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
          test -n "$dlopen" && func_append dlfiles " $dlopen"
          test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
        fi
 
-       if test conv = "$pass"; then
+       if test "$pass" = conv; then
          # Only check for convenience libraries
          deplibs="$lib $deplibs"
          if test -z "$libdir"; then
            if test -z "$old_library"; then
-             func_fatal_error "cannot find name of link library for '$lib'"
+             func_fatal_error "cannot find name of link library for \`$lib'"
            fi
            # It is a libtool convenience library, so add in its objects.
            func_append convenience " $ladir/$objdir/$old_library"
@@ -7896,15 +6450,15 @@ func_mode_link ()
            tmp_libs=
            for deplib in $dependency_libs; do
              deplibs="$deplib $deplibs"
-             if $opt_preserve_dup_deps; then
+             if $opt_preserve_dup_deps ; then
                case "$tmp_libs " in
                *" $deplib "*) func_append specialdeplibs " $deplib" ;;
                esac
              fi
              func_append tmp_libs " $deplib"
            done
-         elif test prog != "$linkmode" && test lib != "$linkmode"; then
-           func_fatal_error "'$lib' is not a convenience library"
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           func_fatal_error "\`$lib' is not a convenience library"
          fi
          continue
        fi # $pass = conv
@@ -7913,26 +6467,26 @@ func_mode_link ()
        # Get the name of the library we link against.
        linklib=
        if test -n "$old_library" &&
-          { test yes = "$prefer_static_libs" ||
-            test built,no = "$prefer_static_libs,$installed"; }; then
+          { test "$prefer_static_libs" = yes ||
+            test "$prefer_static_libs,$installed" = "built,no"; }; then
          linklib=$old_library
        else
          for l in $old_library $library_names; do
-           linklib=$l
+           linklib="$l"
          done
        fi
        if test -z "$linklib"; then
-         func_fatal_error "cannot find name of link library for '$lib'"
+         func_fatal_error "cannot find name of link library for \`$lib'"
        fi
 
        # This library was specified with -dlopen.
-       if test dlopen = "$pass"; then
-         test -z "$libdir" \
-           && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+         fi
          if test -z "$dlname" ||
-            test yes != "$dlopen_support" ||
-            test no = "$build_libtool_libs"
-         then
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
            # If there is no dlname, no dlopen support or we're linking
            # statically, we need to preload.  We also need to preload any
            # dependent libraries so libltdl's deplib preloader doesn't
@@ -7946,40 +6500,40 @@ func_mode_link ()
 
        # We need an absolute path.
        case $ladir in
-       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
        *)
          abs_ladir=`cd "$ladir" && pwd`
          if test -z "$abs_ladir"; then
-           func_warning "cannot determine absolute directory name of '$ladir'"
+           func_warning "cannot determine absolute directory name of \`$ladir'"
            func_warning "passing it literally to the linker, although it might fail"
-           abs_ladir=$ladir
+           abs_ladir="$ladir"
          fi
          ;;
        esac
        func_basename "$lib"
-       laname=$func_basename_result
+       laname="$func_basename_result"
 
        # Find the relevant object directory and library name.
-       if test yes = "$installed"; then
+       if test "X$installed" = Xyes; then
          if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           func_warning "library '$lib' was moved."
-           dir=$ladir
-           absdir=$abs_ladir
-           libdir=$abs_ladir
+           func_warning "library \`$lib' was moved."
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
          else
-           dir=$lt_sysroot$libdir
-           absdir=$lt_sysroot$libdir
+           dir="$lt_sysroot$libdir"
+           absdir="$lt_sysroot$libdir"
          fi
-         test yes = "$hardcode_automatic" && avoidtemprpath=yes
+         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
        else
          if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           dir=$ladir
-           absdir=$abs_ladir
+           dir="$ladir"
+           absdir="$abs_ladir"
            # Remove this search path later
            func_append notinst_path " $abs_ladir"
          else
-           dir=$ladir/$objdir
-           absdir=$abs_ladir/$objdir
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
            # Remove this search path later
            func_append notinst_path " $abs_ladir"
          fi
@@ -7988,11 +6542,11 @@ func_mode_link ()
        name=$func_stripname_result
 
        # This library was specified with -dlpreopen.
-       if test dlpreopen = "$pass"; then
-         if test -z "$libdir" && test prog = "$linkmode"; then
-           func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir" && test "$linkmode" = prog; then
+           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
          fi
-         case $host in
+         case "$host" in
            # special handling for platforms with PE-DLLs.
            *cygwin* | *mingw* | *cegcc* )
              # Linker will automatically link against shared library if both
@@ -8036,9 +6590,9 @@ func_mode_link ()
 
        if test -z "$libdir"; then
          # Link the convenience library
-         if test lib = "$linkmode"; then
+         if test "$linkmode" = lib; then
            deplibs="$dir/$old_library $deplibs"
-         elif test prog,link = "$linkmode,$pass"; then
+         elif test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$dir/$old_library $compile_deplibs"
            finalize_deplibs="$dir/$old_library $finalize_deplibs"
          else
@@ -8048,14 +6602,14 @@ func_mode_link ()
        fi
 
 
-       if test prog = "$linkmode" && test link != "$pass"; then
+       if test "$linkmode" = prog && test "$pass" != link; then
          func_append newlib_search_path " $ladir"
          deplibs="$lib $deplibs"
 
-         linkalldeplibs=false
-         if test no != "$link_all_deplibs" || test -z "$library_names" ||
-            test no = "$build_libtool_libs"; then
-           linkalldeplibs=:
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
          fi
 
          tmp_libs=
@@ -8067,14 +6621,14 @@ func_mode_link ()
                 ;;
            esac
            # Need to link against all dependency_libs?
-           if $linkalldeplibs; then
+           if test "$linkalldeplibs" = yes; then
              deplibs="$deplib $deplibs"
            else
              # Need to hardcode shared library paths
              # or/and link against static libraries
              newdependency_libs="$deplib $newdependency_libs"
            fi
-           if $opt_preserve_dup_deps; then
+           if $opt_preserve_dup_deps ; then
              case "$tmp_libs " in
              *" $deplib "*) func_append specialdeplibs " $deplib" ;;
              esac
@@ -8084,15 +6638,15 @@ func_mode_link ()
          continue
        fi # $linkmode = prog...
 
-       if test prog,link = "$linkmode,$pass"; then
+       if test "$linkmode,$pass" = "prog,link"; then
          if test -n "$library_names" &&
-            { { test no = "$prefer_static_libs" ||
-                test built,yes = "$prefer_static_libs,$installed"; } ||
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
               test -z "$old_library"; }; then
            # We need to hardcode the library path
-           if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
              # Make sure the rpath contains only unique directories.
-             case $temp_rpath: in
+             case "$temp_rpath:" in
              *"$absdir:"*) ;;
              *) func_append temp_rpath "$absdir:" ;;
              esac
@@ -8121,9 +6675,9 @@ func_mode_link ()
            esac
          fi # $linkmode,$pass = prog,link...
 
-         if $alldeplibs &&
-            { test pass_all = "$deplibs_check_method" ||
-              { test yes = "$build_libtool_libs" &&
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
                 test -n "$library_names"; }; }; then
            # We only need to search for static libraries
            continue
@@ -8132,19 +6686,19 @@ func_mode_link ()
 
        link_static=no # Whether the deplib will be linked statically
        use_static_libs=$prefer_static_libs
-       if test built = "$use_static_libs" && test yes = "$installed"; then
+       if test "$use_static_libs" = built && test "$installed" = yes; then
          use_static_libs=no
        fi
        if test -n "$library_names" &&
-          { test no = "$use_static_libs" || test -z "$old_library"; }; then
+          { test "$use_static_libs" = no || test -z "$old_library"; }; then
          case $host in
-         *cygwin* | *mingw* | *cegcc* | *os2*)
+         *cygwin* | *mingw* | *cegcc*)
              # No point in relinking DLLs because paths are not encoded
              func_append notinst_deplibs " $lib"
              need_relink=no
            ;;
          *)
-           if test no = "$installed"; then
+           if test "$installed" = no; then
              func_append notinst_deplibs " $lib"
              need_relink=yes
            fi
@@ -8154,24 +6708,24 @@ func_mode_link ()
 
          # Warn about portability, can't link against -module's on some
          # systems (darwin).  Don't bleat about dlopened modules though!
-         dlopenmodule=
+         dlopenmodule=""
          for dlpremoduletest in $dlprefiles; do
            if test "X$dlpremoduletest" = "X$lib"; then
-             dlopenmodule=$dlpremoduletest
+             dlopenmodule="$dlpremoduletest"
              break
            fi
          done
-         if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
+         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
            echo
-           if test prog = "$linkmode"; then
+           if test "$linkmode" = prog; then
              $ECHO "*** Warning: Linking the executable $output against the loadable module"
            else
              $ECHO "*** Warning: Linking the shared library $output against the loadable module"
            fi
            $ECHO "*** $linklib is not portable!"
          fi
-         if test lib = "$linkmode" &&
-            test yes = "$hardcode_into_libs"; then
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
            # Hardcode the library path.
            # Skip directories that are in the system default run-time
            # search path.
@@ -8199,43 +6753,43 @@ func_mode_link ()
            # figure out the soname
            set dummy $library_names
            shift
-           realname=$1
+           realname="$1"
            shift
            libname=`eval "\\$ECHO \"$libname_spec\""`
            # use dlname if we got it. it's perfectly good, no?
            if test -n "$dlname"; then
-             soname=$dlname
+             soname="$dlname"
            elif test -n "$soname_spec"; then
              # bleh windows
              case $host in
-             *cygwin* | mingw* | *cegcc* | *os2*)
+             *cygwin* | mingw* | *cegcc*)
                func_arith $current - $age
                major=$func_arith_result
-               versuffix=-$major
+               versuffix="-$major"
                ;;
              esac
              eval soname=\"$soname_spec\"
            else
-             soname=$realname
+             soname="$realname"
            fi
 
            # Make a new name for the extract_expsyms_cmds to use
-           soroot=$soname
+           soroot="$soname"
            func_basename "$soroot"
-           soname=$func_basename_result
+           soname="$func_basename_result"
            func_stripname 'lib' '.dll' "$soname"
            newlib=libimp-$func_stripname_result.a
 
            # If the library has no export list, then create one now
            if test -f "$output_objdir/$soname-def"; then :
            else
-             func_verbose "extracting exported symbol list from '$soname'"
+             func_verbose "extracting exported symbol list from \`$soname'"
              func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
            fi
 
            # Create $newlib
            if test -f "$output_objdir/$newlib"; then :; else
-             func_verbose "generating import library for '$soname'"
+             func_verbose "generating import library for \`$soname'"
              func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
            fi
            # make sure the library variables are pointing to the new library
@@ -8243,58 +6797,58 @@ func_mode_link ()
            linklib=$newlib
          fi # test -n "$old_archive_from_expsyms_cmds"
 
-         if test prog = "$linkmode" || test relink != "$opt_mode"; then
+         if test "$linkmode" = prog || test "$opt_mode" != relink; then
            add_shlibpath=
            add_dir=
            add=
            lib_linked=yes
            case $hardcode_action in
            immediate | unsupported)
-             if test no = "$hardcode_direct"; then
-               add=$dir/$linklib
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
                case $host in
-                 *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
-                 *-*-sysv4*uw2*) add_dir=-L$dir ;;
+                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
                  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-                   *-*-unixware7*) add_dir=-L$dir ;;
+                   *-*-unixware7*) add_dir="-L$dir" ;;
                  *-*-darwin* )
-                   # if the lib is a (non-dlopened) module then we cannot
+                   # if the lib is a (non-dlopened) module then we can not
                    # link against it, someone is ignoring the earlier warnings
                    if /usr/bin/file -L $add 2> /dev/null |
-                        $GREP ": [^:]* bundle" >/dev/null; then
+                        $GREP ": [^:]* bundle" >/dev/null ; then
                      if test "X$dlopenmodule" != "X$lib"; then
                        $ECHO "*** Warning: lib $linklib is a module, not a shared library"
-                       if test -z "$old_library"; then
+                       if test -z "$old_library" ; then
                          echo
                          echo "*** And there doesn't seem to be a static archive available"
                          echo "*** The link will probably fail, sorry"
                        else
-                         add=$dir/$old_library
+                         add="$dir/$old_library"
                        fi
                      elif test -n "$old_library"; then
-                       add=$dir/$old_library
+                       add="$dir/$old_library"
                      fi
                    fi
                esac
-             elif test no = "$hardcode_minus_L"; then
+             elif test "$hardcode_minus_L" = no; then
                case $host in
-               *-*-sunos*) add_shlibpath=$dir ;;
+               *-*-sunos*) add_shlibpath="$dir" ;;
                esac
-               add_dir=-L$dir
-               add=-l$name
-             elif test no = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
              else
                lib_linked=no
              fi
              ;;
            relink)
-             if test yes = "$hardcode_direct" &&
-                test no = "$hardcode_direct_absolute"; then
-               add=$dir/$linklib
-             elif test yes = "$hardcode_minus_L"; then
-               add_dir=-L$absdir
+             if test "$hardcode_direct" = yes &&
+                test "$hardcode_direct_absolute" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$absdir"
                # Try looking first in the location we're being installed to.
                if test -n "$inst_prefix_dir"; then
                  case $libdir in
@@ -8303,10 +6857,10 @@ func_mode_link ()
                      ;;
                  esac
                fi
-               add=-l$name
-             elif test yes = "$hardcode_shlibpath_var"; then
-               add_shlibpath=$dir
-               add=-l$name
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
              else
                lib_linked=no
              fi
@@ -8314,7 +6868,7 @@ func_mode_link ()
            *) lib_linked=no ;;
            esac
 
-           if test yes != "$lib_linked"; then
+           if test "$lib_linked" != yes; then
              func_fatal_configuration "unsupported hardcode properties"
            fi
 
@@ -8324,15 +6878,15 @@ func_mode_link ()
              *) func_append compile_shlibpath "$add_shlibpath:" ;;
              esac
            fi
-           if test prog = "$linkmode"; then
+           if test "$linkmode" = prog; then
              test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
              test -n "$add" && compile_deplibs="$add $compile_deplibs"
            else
              test -n "$add_dir" && deplibs="$add_dir $deplibs"
              test -n "$add" && deplibs="$add $deplibs"
-             if test yes != "$hardcode_direct" &&
-                test yes != "$hardcode_minus_L" &&
-                test yes = "$hardcode_shlibpath_var"; then
+             if test "$hardcode_direct" != yes &&
+                test "$hardcode_minus_L" != yes &&
+                test "$hardcode_shlibpath_var" = yes; then
                case :$finalize_shlibpath: in
                *":$libdir:"*) ;;
                *) func_append finalize_shlibpath "$libdir:" ;;
@@ -8341,33 +6895,33 @@ func_mode_link ()
            fi
          fi
 
-         if test prog = "$linkmode" || test relink = "$opt_mode"; then
+         if test "$linkmode" = prog || test "$opt_mode" = relink; then
            add_shlibpath=
            add_dir=
            add=
            # Finalize command for both is simple: just hardcode it.
-           if test yes = "$hardcode_direct" &&
-              test no = "$hardcode_direct_absolute"; then
-             add=$libdir/$linklib
-           elif test yes = "$hardcode_minus_L"; then
-             add_dir=-L$libdir
-             add=-l$name
-           elif test yes = "$hardcode_shlibpath_var"; then
+           if test "$hardcode_direct" = yes &&
+              test "$hardcode_direct_absolute" = no; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
              case :$finalize_shlibpath: in
              *":$libdir:"*) ;;
              *) func_append finalize_shlibpath "$libdir:" ;;
              esac
-             add=-l$name
-           elif test yes = "$hardcode_automatic"; then
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
              if test -n "$inst_prefix_dir" &&
-                test -f "$inst_prefix_dir$libdir/$linklib"; then
-               add=$inst_prefix_dir$libdir/$linklib
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
              else
-               add=$libdir/$linklib
+               add="$libdir/$linklib"
              fi
            else
              # We cannot seem to hardcode it, guess we'll fake it.
-             add_dir=-L$libdir
+             add_dir="-L$libdir"
              # Try looking first in the location we're being installed to.
              if test -n "$inst_prefix_dir"; then
                case $libdir in
@@ -8376,10 +6930,10 @@ func_mode_link ()
                    ;;
                esac
              fi
-             add=-l$name
+             add="-l$name"
            fi
 
-           if test prog = "$linkmode"; then
+           if test "$linkmode" = prog; then
              test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
              test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
            else
@@ -8387,43 +6941,43 @@ func_mode_link ()
              test -n "$add" && deplibs="$add $deplibs"
            fi
          fi
-       elif test prog = "$linkmode"; then
+       elif test "$linkmode" = prog; then
          # Here we assume that one of hardcode_direct or hardcode_minus_L
          # is not unsupported.  This is valid on all known static and
          # shared platforms.
-         if test unsupported != "$hardcode_direct"; then
-           test -n "$old_library" && linklib=$old_library
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
            compile_deplibs="$dir/$linklib $compile_deplibs"
            finalize_deplibs="$dir/$linklib $finalize_deplibs"
          else
            compile_deplibs="-l$name -L$dir $compile_deplibs"
            finalize_deplibs="-l$name -L$dir $finalize_deplibs"
          fi
-       elif test yes = "$build_libtool_libs"; then
+       elif test "$build_libtool_libs" = yes; then
          # Not a shared library
-         if test pass_all != "$deplibs_check_method"; then
+         if test "$deplibs_check_method" != pass_all; then
            # We're trying link a shared library against a static one
            # but the system doesn't support it.
 
            # Just print a warning and add the library to dependency_libs so
            # that the program can be linked against the static library.
            echo
-           $ECHO "*** Warning: This system cannot link to static lib archive $lib."
+           $ECHO "*** Warning: This system can not link to static lib archive $lib."
            echo "*** I have the capability to make that library automatically link in when"
            echo "*** you link to this library.  But I can only do this if you have a"
            echo "*** shared version of the library, which you do not appear to have."
-           if test yes = "$module"; then
+           if test "$module" = yes; then
              echo "*** But as you try to build a module library, libtool will still create "
              echo "*** a static module, that should work as long as the dlopening application"
              echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
              if test -z "$global_symbol_pipe"; then
                echo
                echo "*** However, this would only work if libtool was able to extract symbol"
-               echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
                echo "*** not find such a program.  So, this module is probably useless."
-               echo "*** 'nm' from GNU binutils and a full rebuild may help."
+               echo "*** \`nm' from GNU binutils and a full rebuild may help."
              fi
-             if test no = "$build_old_libs"; then
+             if test "$build_old_libs" = no; then
                build_libtool_libs=module
                build_old_libs=yes
              else
@@ -8436,11 +6990,11 @@ func_mode_link ()
          fi
        fi # link shared/static library?
 
-       if test lib = "$linkmode"; then
+       if test "$linkmode" = lib; then
          if test -n "$dependency_libs" &&
-            { test yes != "$hardcode_into_libs" ||
-              test yes = "$build_old_libs" ||
-              test yes = "$link_static"; }; then
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
            # Extract -R from dependency_libs
            temp_deplibs=
            for libdir in $dependency_libs; do
@@ -8454,12 +7008,12 @@ func_mode_link ()
              *) func_append temp_deplibs " $libdir";;
              esac
            done
-           dependency_libs=$temp_deplibs
+           dependency_libs="$temp_deplibs"
          fi
 
          func_append newlib_search_path " $absdir"
          # Link against this library
-         test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
          # ... and its dependency_libs
          tmp_libs=
          for deplib in $dependency_libs; do
@@ -8469,7 +7023,7 @@ func_mode_link ()
                    func_resolve_sysroot "$func_stripname_result";;
               *) func_resolve_sysroot "$deplib" ;;
             esac
-           if $opt_preserve_dup_deps; then
+           if $opt_preserve_dup_deps ; then
              case "$tmp_libs " in
              *" $func_resolve_sysroot_result "*)
                 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
@@ -8478,12 +7032,12 @@ func_mode_link ()
            func_append tmp_libs " $func_resolve_sysroot_result"
          done
 
-         if test no != "$link_all_deplibs"; then
+         if test "$link_all_deplibs" != no; then
            # Add the search paths of all dependency libraries
            for deplib in $dependency_libs; do
              path=
              case $deplib in
-             -L*) path=$deplib ;;
+             -L*) path="$deplib" ;;
              *.la)
                func_resolve_sysroot "$deplib"
                deplib=$func_resolve_sysroot_result
@@ -8491,12 +7045,12 @@ func_mode_link ()
                dir=$func_dirname_result
                # We need an absolute path.
                case $dir in
-               [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
                *)
                  absdir=`cd "$dir" && pwd`
                  if test -z "$absdir"; then
-                   func_warning "cannot determine absolute directory name of '$dir'"
-                   absdir=$dir
+                   func_warning "cannot determine absolute directory name of \`$dir'"
+                   absdir="$dir"
                  fi
                  ;;
                esac
@@ -8504,35 +7058,35 @@ func_mode_link ()
                case $host in
                *-*-darwin*)
                  depdepl=
-                 eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-                 if test -n "$deplibrary_names"; then
-                   for tmp in $deplibrary_names; do
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
                      depdepl=$tmp
                    done
-                   if test -f "$absdir/$objdir/$depdepl"; then
-                     depdepl=$absdir/$objdir/$depdepl
-                     darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                   if test -f "$absdir/$objdir/$depdepl" ; then
+                     depdepl="$absdir/$objdir/$depdepl"
+                     darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
                       if test -z "$darwin_install_name"; then
-                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
                       fi
-                     func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
-                     func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
+                     func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+                     func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
                      path=
                    fi
                  fi
                  ;;
                *)
-                 path=-L$absdir/$objdir
+                 path="-L$absdir/$objdir"
                  ;;
                esac
                else
-                 eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
                  test -z "$libdir" && \
-                   func_fatal_error "'$deplib' is not a valid libtool archive"
+                   func_fatal_error "\`$deplib' is not a valid libtool archive"
                  test "$absdir" != "$libdir" && \
-                   func_warning "'$deplib' seems to be moved"
+                   func_warning "\`$deplib' seems to be moved"
 
-                 path=-L$absdir
+                 path="-L$absdir"
                fi
                ;;
              esac
@@ -8544,23 +7098,23 @@ func_mode_link ()
          fi # link_all_deplibs != no
        fi # linkmode = lib
       done # for deplib in $libs
-      if test link = "$pass"; then
-       if test prog = "$linkmode"; then
+      if test "$pass" = link; then
+       if test "$linkmode" = "prog"; then
          compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
          finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
        else
          compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
        fi
       fi
-      dependency_libs=$newdependency_libs
-      if test dlpreopen = "$pass"; then
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
        # Link the dlpreopened libraries before other libraries
        for deplib in $save_deplibs; do
          deplibs="$deplib $deplibs"
        done
       fi
-      if test dlopen != "$pass"; then
-       test conv = "$pass" || {
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
          # Make sure lib_search_path contains only unique directories.
          lib_search_path=
          for dir in $newlib_search_path; do
@@ -8570,12 +7124,12 @@ func_mode_link ()
            esac
          done
          newlib_search_path=
-       }
+       fi
 
-       if test prog,link = "$linkmode,$pass"; then
-         vars="compile_deplibs finalize_deplibs"
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
        else
-         vars=deplibs
+         vars="compile_deplibs finalize_deplibs"
        fi
        for var in $vars dependency_libs; do
          # Add libraries to $var in reverse order
@@ -8633,93 +7187,62 @@ func_mode_link ()
          eval $var=\"$tmp_libs\"
        done # for var
       fi
-
-      # Add Sun CC postdeps if required:
-      test CXX = "$tagname" && {
-        case $host_os in
-        linux*)
-          case `$CC -V 2>&1 | sed 5q` in
-          *Sun\ C*) # Sun C++ 5.9
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-
-        solaris*)
-          func_cc_basename "$CC"
-          case $func_cc_basename_result in
-          CC* | sunCC*)
-            func_suncc_cstd_abi
-
-            if test no != "$suncc_use_cstd_abi"; then
-              func_append postdeps ' -library=Cstd -library=Crun'
-            fi
-            ;;
-          esac
-          ;;
-        esac
-      }
-
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
-      for i in $dependency_libs; do
+      for i in $dependency_libs ; do
        case " $predeps $postdeps $compiler_lib_search_path " in
        *" $i "*)
-         i=
+         i=""
          ;;
        esac
-       if test -n "$i"; then
+       if test -n "$i" ; then
          func_append tmp_libs " $i"
        fi
       done
       dependency_libs=$tmp_libs
     done # for pass
-    if test prog = "$linkmode"; then
-      dlfiles=$newdlfiles
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
     fi
-    if test prog = "$linkmode" || test lib = "$linkmode"; then
-      dlprefiles=$newdlprefiles
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
     fi
 
     case $linkmode in
     oldlib)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for archives"
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for archives"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for archives" ;;
+       func_warning "\`-l' and \`-L' are ignored for archives" ;;
       esac
 
       test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for archives"
+       func_warning "\`-rpath' is ignored for archives"
 
       test -n "$xrpath" && \
-       func_warning "'-R' is ignored for archives"
+       func_warning "\`-R' is ignored for archives"
 
       test -n "$vinfo" && \
-       func_warning "'-version-info/-version-number' is ignored for archives"
+       func_warning "\`-version-info/-version-number' is ignored for archives"
 
       test -n "$release" && \
-       func_warning "'-release' is ignored for archives"
+       func_warning "\`-release' is ignored for archives"
 
       test -n "$export_symbols$export_symbols_regex" && \
-       func_warning "'-export-symbols' is ignored for archives"
+       func_warning "\`-export-symbols' is ignored for archives"
 
       # Now set the variables for building old libraries.
       build_libtool_libs=no
-      oldlibs=$output
+      oldlibs="$output"
       func_append objs "$old_deplibs"
       ;;
 
     lib)
-      # Make sure we only generate libraries of the form 'libNAME.la'.
+      # Make sure we only generate libraries of the form `libNAME.la'.
       case $outputname in
       lib*)
        func_stripname 'lib' '.la' "$outputname"
@@ -8728,10 +7251,10 @@ func_mode_link ()
        eval libname=\"$libname_spec\"
        ;;
       *)
-       test no = "$module" \
-         && func_fatal_help "libtool library '$output' must begin with 'lib'"
+       test "$module" = no && \
+         func_fatal_help "libtool library \`$output' must begin with \`lib'"
 
-       if test no != "$need_lib_prefix"; then
+       if test "$need_lib_prefix" != no; then
          # Add the "lib" prefix for modules if required
          func_stripname '' '.la' "$outputname"
          name=$func_stripname_result
@@ -8745,8 +7268,8 @@ func_mode_link ()
       esac
 
       if test -n "$objs"; then
-       if test pass_all != "$deplibs_check_method"; then
-         func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
+       if test "$deplibs_check_method" != pass_all; then
+         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
        else
          echo
          $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
@@ -8755,21 +7278,21 @@ func_mode_link ()
        fi
       fi
 
-      test no = "$dlself" \
-       || func_warning "'-dlopen self' is ignored for libtool libraries"
+      test "$dlself" != no && \
+       func_warning "\`-dlopen self' is ignored for libtool libraries"
 
       set dummy $rpath
       shift
-      test 1 -lt "$#" \
-       && func_warning "ignoring multiple '-rpath's for a libtool library"
+      test "$#" -gt 1 && \
+       func_warning "ignoring multiple \`-rpath's for a libtool library"
 
-      install_libdir=$1
+      install_libdir="$1"
 
       oldlibs=
       if test -z "$rpath"; then
-       if test yes = "$build_libtool_libs"; then
+       if test "$build_libtool_libs" = yes; then
          # Building a libtool convenience library.
-         # Some compilers have problems with a '.al' extension so
+         # Some compilers have problems with a `.al' extension so
          # convenience libraries should have the same extension an
          # archive normally would.
          oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -8778,20 +7301,20 @@ func_mode_link ()
        fi
 
        test -n "$vinfo" && \
-         func_warning "'-version-info/-version-number' is ignored for convenience libraries"
+         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
 
        test -n "$release" && \
-         func_warning "'-release' is ignored for convenience libraries"
+         func_warning "\`-release' is ignored for convenience libraries"
       else
 
        # Parse the version information argument.
-       save_ifs=$IFS; IFS=:
+       save_ifs="$IFS"; IFS=':'
        set dummy $vinfo 0 0 0
        shift
-       IFS=$save_ifs
+       IFS="$save_ifs"
 
        test -n "$7" && \
-         func_fatal_help "too many parameters to '-version-info'"
+         func_fatal_help "too many parameters to \`-version-info'"
 
        # convert absolute version numbers to libtool ages
        # this retains compatibility with .la files and attempts
@@ -8799,45 +7322,45 @@ func_mode_link ()
 
        case $vinfo_number in
        yes)
-         number_major=$1
-         number_minor=$2
-         number_revision=$3
+         number_major="$1"
+         number_minor="$2"
+         number_revision="$3"
          #
          # There are really only two kinds -- those that
          # use the current revision as the major version
          # and those that subtract age and use age as
          # a minor version.  But, then there is irix
-         # that has an extra 1 added just for fun
+         # which has an extra 1 added just for fun
          #
          case $version_type in
          # correct linux to gnu/linux during the next big refactor
-         darwin|freebsd-elf|linux|osf|windows|none)
+         darwin|linux|osf|windows|none)
            func_arith $number_major + $number_minor
            current=$func_arith_result
-           age=$number_minor
-           revision=$number_revision
+           age="$number_minor"
+           revision="$number_revision"
            ;;
-         freebsd-aout|qnx|sunos)
-           current=$number_major
-           revision=$number_minor
-           age=0
+         freebsd-aout|freebsd-elf|qnx|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
            ;;
          irix|nonstopux)
            func_arith $number_major + $number_minor
            current=$func_arith_result
-           age=$number_minor
-           revision=$number_minor
+           age="$number_minor"
+           revision="$number_minor"
            lt_irix_increment=no
            ;;
          *)
-           func_fatal_configuration "$modename: unknown library version type '$version_type'"
+           func_fatal_configuration "$modename: unknown library version type \`$version_type'"
            ;;
          esac
          ;;
        no)
-         current=$1
-         revision=$2
-         age=$3
+         current="$1"
+         revision="$2"
+         age="$3"
          ;;
        esac
 
@@ -8845,30 +7368,30 @@ func_mode_link ()
        case $current in
        0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
        *)
-         func_error "CURRENT '$current' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
+         func_error "CURRENT \`$current' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
          ;;
        esac
 
        case $revision in
        0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
        *)
-         func_error "REVISION '$revision' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
+         func_error "REVISION \`$revision' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
          ;;
        esac
 
        case $age in
        0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
        *)
-         func_error "AGE '$age' must be a nonnegative integer"
-         func_fatal_error "'$vinfo' is not valid version information"
+         func_error "AGE \`$age' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
          ;;
        esac
 
        if test "$age" -gt "$current"; then
-         func_error "AGE '$age' is greater than the current interface number '$current'"
-         func_fatal_error "'$vinfo' is not valid version information"
+         func_error "AGE \`$age' is greater than the current interface number \`$current'"
+         func_fatal_error "\`$vinfo' is not valid version information"
        fi
 
        # Calculate the version variables.
@@ -8883,36 +7406,26 @@ func_mode_link ()
          # verstring for coding it into the library header
          func_arith $current - $age
          major=.$func_arith_result
-         versuffix=$major.$age.$revision
+         versuffix="$major.$age.$revision"
          # Darwin ld doesn't like 0 for these options...
          func_arith $current + 1
          minor_current=$func_arith_result
-         xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
          verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-          # On Darwin other compilers
-          case $CC in
-              nagfor*)
-                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
-                  ;;
-              *)
-                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
-                  ;;
-          esac
          ;;
 
        freebsd-aout)
-         major=.$current
-         versuffix=.$current.$revision
+         major=".$current"
+         versuffix=".$current.$revision";
          ;;
 
        freebsd-elf)
-         func_arith $current - $age
-         major=.$func_arith_result
-         versuffix=$major.$age.$revision
+         major=".$current"
+         versuffix=".$current"
          ;;
 
        irix | nonstopux)
-         if test no = "$lt_irix_increment"; then
+         if test "X$lt_irix_increment" = "Xno"; then
            func_arith $current - $age
          else
            func_arith $current - $age + 1
@@ -8923,74 +7436,69 @@ func_mode_link ()
            nonstopux) verstring_prefix=nonstopux ;;
            *)         verstring_prefix=sgi ;;
          esac
-         verstring=$verstring_prefix$major.$revision
+         verstring="$verstring_prefix$major.$revision"
 
          # Add in all the interfaces that we are compatible with.
          loop=$revision
-         while test 0 -ne "$loop"; do
+         while test "$loop" -ne 0; do
            func_arith $revision - $loop
            iface=$func_arith_result
            func_arith $loop - 1
            loop=$func_arith_result
-           verstring=$verstring_prefix$major.$iface:$verstring
+           verstring="$verstring_prefix$major.$iface:$verstring"
          done
 
-         # Before this point, $major must not contain '.'.
+         # Before this point, $major must not contain `.'.
          major=.$major
-         versuffix=$major.$revision
+         versuffix="$major.$revision"
          ;;
 
        linux) # correct to gnu/linux during the next big refactor
          func_arith $current - $age
          major=.$func_arith_result
-         versuffix=$major.$age.$revision
+         versuffix="$major.$age.$revision"
          ;;
 
        osf)
          func_arith $current - $age
          major=.$func_arith_result
-         versuffix=.$current.$age.$revision
-         verstring=$current.$age.$revision
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
 
          # Add in all the interfaces that we are compatible with.
          loop=$age
-         while test 0 -ne "$loop"; do
+         while test "$loop" -ne 0; do
            func_arith $current - $loop
            iface=$func_arith_result
            func_arith $loop - 1
            loop=$func_arith_result
-           verstring=$verstring:$iface.0
+           verstring="$verstring:${iface}.0"
          done
 
          # Make executables depend on our current version.
-         func_append verstring ":$current.0"
+         func_append verstring ":${current}.0"
          ;;
 
        qnx)
-         major=.$current
-         versuffix=.$current
-         ;;
-
-       sco)
-         major=.$current
-         versuffix=.$current
+         major=".$current"
+         versuffix=".$current"
          ;;
 
        sunos)
-         major=.$current
-         versuffix=.$current.$revision
+         major=".$current"
+         versuffix=".$current.$revision"
          ;;
 
        windows)
          # Use '-' rather than '.', since we only want one
-         # extension on DOS 8.3 file systems.
+         # extension on DOS 8.3 filesystems.
          func_arith $current - $age
          major=$func_arith_result
-         versuffix=-$major
+         versuffix="-$major"
          ;;
 
        *)
-         func_fatal_configuration "unknown library version type '$version_type'"
+         func_fatal_configuration "unknown library version type \`$version_type'"
          ;;
        esac
 
@@ -9004,45 +7512,42 @@ func_mode_link ()
            verstring=
            ;;
          *)
-           verstring=0.0
+           verstring="0.0"
            ;;
          esac
-         if test no = "$need_version"; then
+         if test "$need_version" = no; then
            versuffix=
          else
-           versuffix=.0.0
+           versuffix=".0.0"
          fi
        fi
 
        # Remove version info from name if versioning should be avoided
-       if test yes,no = "$avoid_version,$need_version"; then
+       if test "$avoid_version" = yes && test "$need_version" = no; then
          major=
          versuffix=
-         verstring=
+         verstring=""
        fi
 
        # Check to see if the archive will have undefined symbols.
-       if test yes = "$allow_undefined"; then
-         if test unsupported = "$allow_undefined_flag"; then
-           if test yes = "$build_old_libs"; then
-             func_warning "undefined symbols not allowed in $host shared libraries; building static only"
-             build_libtool_libs=no
-           else
-             func_fatal_error "can't build $host shared library unless -no-undefined is specified"
-           fi
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           func_warning "undefined symbols not allowed in $host shared libraries"
+           build_libtool_libs=no
+           build_old_libs=yes
          fi
        else
          # Don't allow undefined symbols.
-         allow_undefined_flag=$no_undefined_flag
+         allow_undefined_flag="$no_undefined_flag"
        fi
 
       fi
 
-      func_generate_dlsyms "$libname" "$libname" :
+      func_generate_dlsyms "$libname" "$libname" "yes"
       func_append libobjs " $symfileobj"
-      test " " = "$libobjs" && libobjs=
+      test "X$libobjs" = "X " && libobjs=
 
-      if test relink != "$opt_mode"; then
+      if test "$opt_mode" != relink; then
        # Remove our outputs, but don't remove object files since they
        # may have been created when compiling PIC objects.
        removelist=
@@ -9051,8 +7556,8 @@ func_mode_link ()
          case $p in
            *.$objext | *.gcno)
               ;;
-           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
-              if test -n "$precious_files_regex"; then
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
                 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
                 then
                   continue
@@ -9068,11 +7573,11 @@ func_mode_link ()
       fi
 
       # Now set the variables for building old libraries.
-      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
        func_append oldlibs " $output_objdir/$libname.$libext"
 
        # Transform .lo files to .o files.
-       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
+       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
@@ -9093,13 +7598,13 @@ func_mode_link ()
          *) func_append finalize_rpath " $libdir" ;;
          esac
        done
-       if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
          dependency_libs="$temp_xrpath $dependency_libs"
        fi
       fi
 
       # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles=$dlfiles
+      old_dlfiles="$dlfiles"
       dlfiles=
       for lib in $old_dlfiles; do
        case " $dlprefiles $dlfiles " in
@@ -9109,7 +7614,7 @@ func_mode_link ()
       done
 
       # Make sure dlprefiles contains only unique files
-      old_dlprefiles=$dlprefiles
+      old_dlprefiles="$dlprefiles"
       dlprefiles=
       for lib in $old_dlprefiles; do
        case "$dlprefiles " in
@@ -9118,7 +7623,7 @@ func_mode_link ()
        esac
       done
 
-      if test yes = "$build_libtool_libs"; then
+      if test "$build_libtool_libs" = yes; then
        if test -n "$rpath"; then
          case $host in
          *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
@@ -9142,7 +7647,7 @@ func_mode_link ()
            ;;
          *)
            # Add libc to deplibs on all other systems if necessary.
-           if test yes = "$build_libtool_need_lc"; then
+           if test "$build_libtool_need_lc" = "yes"; then
              func_append deplibs " -lc"
            fi
            ;;
@@ -9158,9 +7663,9 @@ func_mode_link ()
        # I'm not sure if I'm treating the release correctly.  I think
        # release should show up in the -l (ie -lgmp5) so we don't want to
        # add it in twice.  Is that correct?
-       release=
-       versuffix=
-       major=
+       release=""
+       versuffix=""
+       major=""
        newdeplibs=
        droppeddeps=no
        case $deplibs_check_method in
@@ -9189,20 +7694,20 @@ EOF
              -l*)
                func_stripname -l '' "$i"
                name=$func_stripname_result
-               if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                  case " $predeps $postdeps " in
                  *" $i "*)
                    func_append newdeplibs " $i"
-                   i=
+                   i=""
                    ;;
                  esac
                fi
-               if test -n "$i"; then
+               if test -n "$i" ; then
                  libname=`eval "\\$ECHO \"$libname_spec\""`
                  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
                  set dummy $deplib_matches; shift
                  deplib_match=$1
-                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
                    func_append newdeplibs " $i"
                  else
                    droppeddeps=yes
@@ -9232,20 +7737,20 @@ EOF
                $opt_dry_run || $RM conftest
                if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
                  ldd_output=`ldd conftest`
-                 if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                    case " $predeps $postdeps " in
                    *" $i "*)
                      func_append newdeplibs " $i"
-                     i=
+                     i=""
                      ;;
                    esac
                  fi
-                 if test -n "$i"; then
+                 if test -n "$i" ; then
                    libname=`eval "\\$ECHO \"$libname_spec\""`
                    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
                    set dummy $deplib_matches; shift
                    deplib_match=$1
-                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
                      func_append newdeplibs " $i"
                    else
                      droppeddeps=yes
@@ -9282,24 +7787,24 @@ EOF
            -l*)
              func_stripname -l '' "$a_deplib"
              name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                case " $predeps $postdeps " in
                *" $a_deplib "*)
                  func_append newdeplibs " $a_deplib"
-                 a_deplib=
+                 a_deplib=""
                  ;;
                esac
              fi
-             if test -n "$a_deplib"; then
+             if test -n "$a_deplib" ; then
                libname=`eval "\\$ECHO \"$libname_spec\""`
                if test -n "$file_magic_glob"; then
                  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
                else
                  libnameglob=$libname
                fi
-               test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
+               test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
                for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 if test yes = "$want_nocaseglob"; then
+                 if test "$want_nocaseglob" = yes; then
                    shopt -s nocaseglob
                    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
                    $nocaseglob
@@ -9317,25 +7822,25 @@ EOF
                      # We might still enter an endless loop, since a link
                      # loop can be closed while we follow links,
                      # but so what?
-                     potlib=$potent_lib
+                     potlib="$potent_lib"
                      while test -h "$potlib" 2>/dev/null; do
-                       potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
                        case $potliblink in
-                       [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
-                       *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
                        esac
                      done
                      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
                         $SED -e 10q |
                         $EGREP "$file_magic_regex" > /dev/null; then
                        func_append newdeplibs " $a_deplib"
-                       a_deplib=
+                       a_deplib=""
                        break 2
                      fi
                  done
                done
              fi
-             if test -n "$a_deplib"; then
+             if test -n "$a_deplib" ; then
                droppeddeps=yes
                echo
                $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -9343,7 +7848,7 @@ EOF
                echo "*** you link to this library.  But I can only do this if you have a"
                echo "*** shared version of the library, which you do not appear to have"
                echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
+               if test -z "$potlib" ; then
                  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
                else
                  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -9366,30 +7871,30 @@ EOF
            -l*)
              func_stripname -l '' "$a_deplib"
              name=$func_stripname_result
-             if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
                case " $predeps $postdeps " in
                *" $a_deplib "*)
                  func_append newdeplibs " $a_deplib"
-                 a_deplib=
+                 a_deplib=""
                  ;;
                esac
              fi
-             if test -n "$a_deplib"; then
+             if test -n "$a_deplib" ; then
                libname=`eval "\\$ECHO \"$libname_spec\""`
                for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
                  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
                  for potent_lib in $potential_libs; do
-                   potlib=$potent_lib # see symlink-check above in file_magic test
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
                    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
                       $EGREP "$match_pattern_regex" > /dev/null; then
                      func_append newdeplibs " $a_deplib"
-                     a_deplib=
+                     a_deplib=""
                      break 2
                    fi
                  done
                done
              fi
-             if test -n "$a_deplib"; then
+             if test -n "$a_deplib" ; then
                droppeddeps=yes
                echo
                $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -9397,7 +7902,7 @@ EOF
                echo "*** you link to this library.  But I can only do this if you have a"
                echo "*** shared version of the library, which you do not appear to have"
                echo "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib"; then
+               if test -z "$potlib" ; then
                  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
                else
                  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -9413,18 +7918,18 @@ EOF
          done # Gone through all deplibs.
          ;;
        none | unknown | *)
-         newdeplibs=
+         newdeplibs=""
          tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-         if test yes = "$allow_libtool_libs_with_static_runtimes"; then
-           for i in $predeps $postdeps; do
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
              # can't use Xsed below, because $i might contain '/'
-             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
+             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
            done
          fi
          case $tmp_deplibs in
          *[!\  \ ]*)
            echo
-           if test none = "$deplibs_check_method"; then
+           if test "X$deplibs_check_method" = "Xnone"; then
              echo "*** Warning: inter-library dependencies are not supported in this platform."
            else
              echo "*** Warning: inter-library dependencies are not known to be supported."
@@ -9448,8 +7953,8 @@ EOF
          ;;
        esac
 
-       if test yes = "$droppeddeps"; then
-         if test yes = "$module"; then
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
            echo
            echo "*** Warning: libtool could not satisfy all declared inter-library"
            $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
@@ -9458,12 +7963,12 @@ EOF
            if test -z "$global_symbol_pipe"; then
              echo
              echo "*** However, this would only work if libtool was able to extract symbol"
-             echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
+             echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
              echo "*** not find such a program.  So, this module is probably useless."
-             echo "*** 'nm' from GNU binutils and a full rebuild may help."
+             echo "*** \`nm' from GNU binutils and a full rebuild may help."
            fi
-           if test no = "$build_old_libs"; then
-             oldlibs=$output_objdir/$libname.$libext
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
              build_libtool_libs=module
              build_old_libs=yes
            else
@@ -9474,14 +7979,14 @@ EOF
            echo "*** automatically added whenever a program is linked with this library"
            echo "*** or is declared to -dlopen it."
 
-           if test no = "$allow_undefined"; then
+           if test "$allow_undefined" = no; then
              echo
              echo "*** Since this library must not contain undefined symbols,"
              echo "*** because either the platform does not support them or"
              echo "*** it was explicitly requested with -no-undefined,"
              echo "*** libtool will only create a static version of it."
-             if test no = "$build_old_libs"; then
-               oldlibs=$output_objdir/$libname.$libext
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
                build_libtool_libs=module
                build_old_libs=yes
              else
@@ -9527,7 +8032,7 @@ EOF
        *) func_append new_libs " $deplib" ;;
        esac
       done
-      deplibs=$new_libs
+      deplibs="$new_libs"
 
       # All the library-specific variables (install_libdir is set above).
       library_names=
@@ -9535,25 +8040,25 @@ EOF
       dlname=
 
       # Test again, we may have decided not to build it any more
-      if test yes = "$build_libtool_libs"; then
-       # Remove $wl instances when linking with ld.
+      if test "$build_libtool_libs" = yes; then
+       # Remove ${wl} instances when linking with ld.
        # FIXME: should test the right _cmds variable.
        case $archive_cmds in
          *\$LD\ *) wl= ;;
         esac
-       if test yes = "$hardcode_into_libs"; then
+       if test "$hardcode_into_libs" = yes; then
          # Hardcode the library paths
          hardcode_libdirs=
          dep_rpath=
-         rpath=$finalize_rpath
-         test relink = "$opt_mode" || rpath=$compile_rpath$rpath
+         rpath="$finalize_rpath"
+         test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
          for libdir in $rpath; do
            if test -n "$hardcode_libdir_flag_spec"; then
              if test -n "$hardcode_libdir_separator"; then
                func_replace_sysroot "$libdir"
                libdir=$func_replace_sysroot_result
                if test -z "$hardcode_libdirs"; then
-                 hardcode_libdirs=$libdir
+                 hardcode_libdirs="$libdir"
                else
                  # Just accumulate the unique libdirs.
                  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -9578,7 +8083,7 @@ EOF
          # Substitute the hardcoded libdirs into the rpath.
          if test -n "$hardcode_libdir_separator" &&
             test -n "$hardcode_libdirs"; then
-           libdir=$hardcode_libdirs
+           libdir="$hardcode_libdirs"
            eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
          fi
          if test -n "$runpath_var" && test -n "$perm_rpath"; then
@@ -9592,8 +8097,8 @@ EOF
          test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
        fi
 
-       shlibpath=$finalize_shlibpath
-       test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
+       shlibpath="$finalize_shlibpath"
+       test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
        if test -n "$shlibpath"; then
          eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
        fi
@@ -9603,19 +8108,19 @@ EOF
        eval library_names=\"$library_names_spec\"
        set dummy $library_names
        shift
-       realname=$1
+       realname="$1"
        shift
 
        if test -n "$soname_spec"; then
          eval soname=\"$soname_spec\"
        else
-         soname=$realname
+         soname="$realname"
        fi
        if test -z "$dlname"; then
          dlname=$soname
        fi
 
-       lib=$output_objdir/$realname
+       lib="$output_objdir/$realname"
        linknames=
        for link
        do
@@ -9629,7 +8134,7 @@ EOF
        delfiles=
        if test -n "$export_symbols" && test -n "$include_expsyms"; then
          $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-         export_symbols=$output_objdir/$libname.uexp
+         export_symbols="$output_objdir/$libname.uexp"
          func_append delfiles " $export_symbols"
        fi
 
@@ -9638,31 +8143,31 @@ EOF
        cygwin* | mingw* | cegcc*)
          if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
            # exporting using user supplied symfile
-           func_dll_def_p "$export_symbols" || {
+           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
              # and it's NOT already a .def file. Must figure out
              # which of the given symbols are data symbols and tag
              # them as such. So, trigger use of export_symbols_cmds.
              # export_symbols gets reassigned inside the "prepare
              # the list of exported symbols" if statement, so the
              # include_expsyms logic still works.
-             orig_export_symbols=$export_symbols
+             orig_export_symbols="$export_symbols"
              export_symbols=
              always_export_symbols=yes
-           }
+           fi
          fi
          ;;
        esac
 
        # Prepare the list of exported symbols
        if test -z "$export_symbols"; then
-         if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
-           func_verbose "generating symbol list for '$libname.la'"
-           export_symbols=$output_objdir/$libname.exp
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           func_verbose "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
            $opt_dry_run || $RM $export_symbols
            cmds=$export_symbols_cmds
-           save_ifs=$IFS; IFS='~'
+           save_ifs="$IFS"; IFS='~'
            for cmd1 in $cmds; do
-             IFS=$save_ifs
+             IFS="$save_ifs"
              # Take the normal branch if the nm_file_list_spec branch
              # doesn't work or if tool conversion is not needed.
              case $nm_file_list_spec~$to_tool_file_cmd in
@@ -9676,7 +8181,7 @@ EOF
                  try_normal_branch=no
                  ;;
              esac
-             if test yes = "$try_normal_branch" \
+             if test "$try_normal_branch" = yes \
                 && { test "$len" -lt "$max_cmd_len" \
                      || test "$max_cmd_len" -le -1; }
              then
@@ -9687,7 +8192,7 @@ EOF
                output_la=$func_basename_result
                save_libobjs=$libobjs
                save_output=$output
-               output=$output_objdir/$output_la.nm
+               output=${output_objdir}/${output_la}.nm
                func_to_tool_file "$output"
                libobjs=$nm_file_list_spec$func_to_tool_file_result
                func_append delfiles " $output"
@@ -9710,8 +8215,8 @@ EOF
                break
              fi
            done
-           IFS=$save_ifs
-           if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
              func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
              func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
            fi
@@ -9719,16 +8224,16 @@ EOF
        fi
 
        if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         tmp_export_symbols=$export_symbols
-         test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+         tmp_export_symbols="$export_symbols"
+         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
          $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
        fi
 
-       if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
+       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
          # The given exports_symbols file has to be filtered, so filter it.
-         func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+         func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
          # FIXME: $output_objdir/$libname.filter potentially contains lots of
-         # 's' commands, which not all seds can handle. GNU sed should be fine
+         # 's' commands which not all seds can handle. GNU sed should be fine
          # though. Also, the filter scales superlinearly with the number of
          # global variables. join(1) would be nice here, but unfortunately
          # isn't a blessed tool.
@@ -9747,11 +8252,11 @@ EOF
            ;;
          esac
        done
-       deplibs=$tmp_deplibs
+       deplibs="$tmp_deplibs"
 
        if test -n "$convenience"; then
          if test -n "$whole_archive_flag_spec" &&
-           test yes = "$compiler_needs_object" &&
+           test "$compiler_needs_object" = yes &&
            test -z "$libobjs"; then
            # extract the archives, so we have objects to list.
            # TODO: could optimize this to just extract one archive.
@@ -9762,7 +8267,7 @@ EOF
            eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
            test "X$libobjs" = "X " && libobjs=
          else
-           gentop=$output_objdir/${outputname}x
+           gentop="$output_objdir/${outputname}x"
            func_append generated " $gentop"
 
            func_extract_archives $gentop $convenience
@@ -9771,18 +8276,18 @@ EOF
          fi
        fi
 
-       if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
          eval flag=\"$thread_safe_flag_spec\"
          func_append linker_flags " $flag"
        fi
 
        # Make a backup of the uninstalled library when relinking
-       if test relink = "$opt_mode"; then
+       if test "$opt_mode" = relink; then
          $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
        fi
 
        # Do each of the archive commands.
-       if test yes = "$module" && test -n "$module_cmds"; then
+       if test "$module" = yes && test -n "$module_cmds" ; then
          if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
            eval test_cmds=\"$module_expsym_cmds\"
            cmds=$module_expsym_cmds
@@ -9800,7 +8305,7 @@ EOF
          fi
        fi
 
-       if test : != "$skipped_export" &&
+       if test "X$skipped_export" != "X:" &&
           func_len " $test_cmds" &&
           len=$func_len_result &&
           test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -9833,8 +8338,8 @@ EOF
          last_robj=
          k=1
 
-         if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
-           output=$output_objdir/$output_la.lnkscript
+         if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+           output=${output_objdir}/${output_la}.lnkscript
            func_verbose "creating GNU ld script: $output"
            echo 'INPUT (' > $output
            for obj in $save_libobjs
@@ -9846,14 +8351,14 @@ EOF
            func_append delfiles " $output"
            func_to_tool_file "$output"
            output=$func_to_tool_file_result
-         elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
-           output=$output_objdir/$output_la.lnk
+         elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+           output=${output_objdir}/${output_la}.lnk
            func_verbose "creating linker input file list: $output"
            : > $output
            set x $save_libobjs
            shift
            firstobj=
-           if test yes = "$compiler_needs_object"; then
+           if test "$compiler_needs_object" = yes; then
              firstobj="$1 "
              shift
            fi
@@ -9868,7 +8373,7 @@ EOF
          else
            if test -n "$save_libobjs"; then
              func_verbose "creating reloadable object files..."
-             output=$output_objdir/$output_la-$k.$objext
+             output=$output_objdir/$output_la-${k}.$objext
              eval test_cmds=\"$reload_cmds\"
              func_len " $test_cmds"
              len0=$func_len_result
@@ -9880,13 +8385,13 @@ EOF
                func_len " $obj"
                func_arith $len + $func_len_result
                len=$func_arith_result
-               if test -z "$objlist" ||
+               if test "X$objlist" = X ||
                   test "$len" -lt "$max_cmd_len"; then
                  func_append objlist " $obj"
                else
                  # The command $test_cmds is almost too long, add a
                  # command to the queue.
-                 if test 1 -eq "$k"; then
+                 if test "$k" -eq 1 ; then
                    # The first file doesn't have a previous command to add.
                    reload_objs=$objlist
                    eval concat_cmds=\"$reload_cmds\"
@@ -9896,10 +8401,10 @@ EOF
                    reload_objs="$objlist $last_robj"
                    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
                  fi
-                 last_robj=$output_objdir/$output_la-$k.$objext
+                 last_robj=$output_objdir/$output_la-${k}.$objext
                  func_arith $k + 1
                  k=$func_arith_result
-                 output=$output_objdir/$output_la-$k.$objext
+                 output=$output_objdir/$output_la-${k}.$objext
                  objlist=" $obj"
                  func_len " $last_robj"
                  func_arith $len0 + $func_len_result
@@ -9911,9 +8416,9 @@ EOF
              # files will link in the last one created.
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
              reload_objs="$objlist $last_robj"
-             eval concat_cmds=\"\$concat_cmds$reload_cmds\"
+             eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
              if test -n "$last_robj"; then
-               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+               eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
              fi
              func_append delfiles " $output"
 
@@ -9921,9 +8426,9 @@ EOF
              output=
            fi
 
-           ${skipped_export-false} && {
-             func_verbose "generating symbol list for '$libname.la'"
-             export_symbols=$output_objdir/$libname.exp
+           if ${skipped_export-false}; then
+             func_verbose "generating symbol list for \`$libname.la'"
+             export_symbols="$output_objdir/$libname.exp"
              $opt_dry_run || $RM $export_symbols
              libobjs=$output
              # Append the command to create the export file.
@@ -9932,16 +8437,16 @@ EOF
              if test -n "$last_robj"; then
                eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
              fi
-           }
+           fi
 
            test -n "$save_libobjs" &&
              func_verbose "creating a temporary reloadable object file: $output"
 
            # Loop through the commands generated above and execute them.
-           save_ifs=$IFS; IFS='~'
+           save_ifs="$IFS"; IFS='~'
            for cmd in $concat_cmds; do
-             IFS=$save_ifs
-             $opt_quiet || {
+             IFS="$save_ifs"
+             $opt_silent || {
                  func_quote_for_expand "$cmd"
                  eval "func_echo $func_quote_for_expand_result"
              }
@@ -9949,7 +8454,7 @@ EOF
                lt_exit=$?
 
                # Restore the uninstalled library and exit
-               if test relink = "$opt_mode"; then
+               if test "$opt_mode" = relink; then
                  ( cd "$output_objdir" && \
                    $RM "${realname}T" && \
                    $MV "${realname}U" "$realname" )
@@ -9958,7 +8463,7 @@ EOF
                exit $lt_exit
              }
            done
-           IFS=$save_ifs
+           IFS="$save_ifs"
 
            if test -n "$export_symbols_regex" && ${skipped_export-false}; then
              func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -9966,18 +8471,18 @@ EOF
            fi
          fi
 
-          ${skipped_export-false} && {
+          if ${skipped_export-false}; then
            if test -n "$export_symbols" && test -n "$include_expsyms"; then
-             tmp_export_symbols=$export_symbols
-             test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
+             tmp_export_symbols="$export_symbols"
+             test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
              $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
            fi
 
            if test -n "$orig_export_symbols"; then
              # The given exports_symbols file has to be filtered, so filter it.
-             func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
+             func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
              # FIXME: $output_objdir/$libname.filter potentially contains lots of
-             # 's' commands, which not all seds can handle. GNU sed should be fine
+             # 's' commands which not all seds can handle. GNU sed should be fine
              # though. Also, the filter scales superlinearly with the number of
              # global variables. join(1) would be nice here, but unfortunately
              # isn't a blessed tool.
@@ -9986,7 +8491,7 @@ EOF
              export_symbols=$output_objdir/$libname.def
              $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
            fi
-         }
+         fi
 
          libobjs=$output
          # Restore the value of output.
@@ -10000,7 +8505,7 @@ EOF
          # value of $libobjs for piecewise linking.
 
          # Do each of the archive commands.
-         if test yes = "$module" && test -n "$module_cmds"; then
+         if test "$module" = yes && test -n "$module_cmds" ; then
            if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
              cmds=$module_expsym_cmds
            else
@@ -10022,7 +8527,7 @@ EOF
 
        # Add any objects from preloaded convenience libraries
        if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
+         gentop="$output_objdir/${outputname}x"
          func_append generated " $gentop"
 
          func_extract_archives $gentop $dlprefiles
@@ -10030,12 +8535,11 @@ EOF
          test "X$libobjs" = "X " && libobjs=
        fi
 
-       save_ifs=$IFS; IFS='~'
+       save_ifs="$IFS"; IFS='~'
        for cmd in $cmds; do
-         IFS=$sp$nl
+         IFS="$save_ifs"
          eval cmd=\"$cmd\"
-         IFS=$save_ifs
-         $opt_quiet || {
+         $opt_silent || {
            func_quote_for_expand "$cmd"
            eval "func_echo $func_quote_for_expand_result"
          }
@@ -10043,7 +8547,7 @@ EOF
            lt_exit=$?
 
            # Restore the uninstalled library and exit
-           if test relink = "$opt_mode"; then
+           if test "$opt_mode" = relink; then
              ( cd "$output_objdir" && \
                $RM "${realname}T" && \
                $MV "${realname}U" "$realname" )
@@ -10052,10 +8556,10 @@ EOF
            exit $lt_exit
          }
        done
-       IFS=$save_ifs
+       IFS="$save_ifs"
 
        # Restore the uninstalled library and exit
-       if test relink = "$opt_mode"; then
+       if test "$opt_mode" = relink; then
          $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
          if test -n "$convenience"; then
@@ -10075,39 +8579,39 @@ EOF
        done
 
        # If -module or -export-dynamic was specified, set the dlname.
-       if test yes = "$module" || test yes = "$export_dynamic"; then
+       if test "$module" = yes || test "$export_dynamic" = yes; then
          # On all known operating systems, these are identical.
-         dlname=$soname
+         dlname="$soname"
        fi
       fi
       ;;
 
     obj)
-      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
-       func_warning "'-dlopen' is ignored for objects"
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for objects"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-       func_warning "'-l' and '-L' are ignored for objects" ;;
+       func_warning "\`-l' and \`-L' are ignored for objects" ;;
       esac
 
       test -n "$rpath" && \
-       func_warning "'-rpath' is ignored for objects"
+       func_warning "\`-rpath' is ignored for objects"
 
       test -n "$xrpath" && \
-       func_warning "'-R' is ignored for objects"
+       func_warning "\`-R' is ignored for objects"
 
       test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for objects"
+       func_warning "\`-version-info' is ignored for objects"
 
       test -n "$release" && \
-       func_warning "'-release' is ignored for objects"
+       func_warning "\`-release' is ignored for objects"
 
       case $output in
       *.lo)
        test -n "$objs$old_deplibs" && \
-         func_fatal_error "cannot build library object '$output' from non-libtool objects"
+         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
 
        libobj=$output
        func_lo2o "$libobj"
@@ -10115,7 +8619,7 @@ EOF
        ;;
       *)
        libobj=
-       obj=$output
+       obj="$output"
        ;;
       esac
 
@@ -10128,19 +8632,17 @@ EOF
       # the extraction.
       reload_conv_objs=
       gentop=
-      # if reload_cmds runs $LD directly, get rid of -Wl from
-      # whole_archive_flag_spec and hope we can get by with turning comma
-      # into space.
-      case $reload_cmds in
-        *\$LD[\ \$]*) wl= ;;
-      esac
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
       if test -n "$convenience"; then
        if test -n "$whole_archive_flag_spec"; then
          eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-         test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
-         reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
+         reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
        else
-         gentop=$output_objdir/${obj}x
+         gentop="$output_objdir/${obj}x"
          func_append generated " $gentop"
 
          func_extract_archives $gentop $convenience
@@ -10149,12 +8651,12 @@ EOF
       fi
 
       # If we're not building shared, we need to use non_pic_objs
-      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
 
       # Create the old-style object.
-      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
 
-      output=$obj
+      output="$obj"
       func_execute_cmds "$reload_cmds" 'exit $?'
 
       # Exit if we aren't doing a library object file.
@@ -10166,7 +8668,7 @@ EOF
        exit $EXIT_SUCCESS
       fi
 
-      test yes = "$build_libtool_libs" || {
+      if test "$build_libtool_libs" != yes; then
        if test -n "$gentop"; then
          func_show_eval '${RM}r "$gentop"'
        fi
@@ -10176,12 +8678,12 @@ EOF
        # $show "echo timestamp > $libobj"
        # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
        exit $EXIT_SUCCESS
-      }
+      fi
 
-      if test -n "$pic_flag" || test default != "$pic_mode"; then
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
        # Only do commands if we really have different PIC objects.
        reload_objs="$libobjs $reload_conv_objs"
-       output=$libobj
+       output="$libobj"
        func_execute_cmds "$reload_cmds" 'exit $?'
       fi
 
@@ -10198,14 +8700,16 @@ EOF
                  output=$func_stripname_result.exe;;
       esac
       test -n "$vinfo" && \
-       func_warning "'-version-info' is ignored for programs"
+       func_warning "\`-version-info' is ignored for programs"
 
       test -n "$release" && \
-       func_warning "'-release' is ignored for programs"
+       func_warning "\`-release' is ignored for programs"
 
-      $preload \
-       && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
-       && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+       && test "$dlopen_self" = unknown \
+       && test "$dlopen_self_static" = unknown && \
+         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
@@ -10219,11 +8723,11 @@ EOF
       *-*-darwin*)
        # Don't allow lazy linking, it breaks C++ global constructors
        # But is supposedly fixed on 10.4 or later (yay!).
-       if test CXX = "$tagname"; then
+       if test "$tagname" = CXX ; then
          case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
            10.[0123])
-             func_append compile_command " $wl-bind_at_load"
-             func_append finalize_command " $wl-bind_at_load"
+             func_append compile_command " ${wl}-bind_at_load"
+             func_append finalize_command " ${wl}-bind_at_load"
            ;;
          esac
        fi
@@ -10259,7 +8763,7 @@ EOF
        *) func_append new_libs " $deplib" ;;
        esac
       done
-      compile_deplibs=$new_libs
+      compile_deplibs="$new_libs"
 
 
       func_append compile_command " $compile_deplibs"
@@ -10283,7 +8787,7 @@ EOF
        if test -n "$hardcode_libdir_flag_spec"; then
          if test -n "$hardcode_libdir_separator"; then
            if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
+             hardcode_libdirs="$libdir"
            else
              # Just accumulate the unique libdirs.
              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -10306,7 +8810,7 @@ EOF
        fi
        case $host in
        *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-         testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
+         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
          case :$dllsearchpath: in
          *":$libdir:"*) ;;
          ::) dllsearchpath=$libdir;;
@@ -10323,10 +8827,10 @@ EOF
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
         test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
+       libdir="$hardcode_libdirs"
        eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      compile_rpath=$rpath
+      compile_rpath="$rpath"
 
       rpath=
       hardcode_libdirs=
@@ -10334,7 +8838,7 @@ EOF
        if test -n "$hardcode_libdir_flag_spec"; then
          if test -n "$hardcode_libdir_separator"; then
            if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs=$libdir
+             hardcode_libdirs="$libdir"
            else
              # Just accumulate the unique libdirs.
              case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -10359,43 +8863,45 @@ EOF
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
         test -n "$hardcode_libdirs"; then
-       libdir=$hardcode_libdirs
+       libdir="$hardcode_libdirs"
        eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      finalize_rpath=$rpath
+      finalize_rpath="$rpath"
 
-      if test -n "$libobjs" && test yes = "$build_old_libs"; then
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
        # Transform all the library objects into standard objects.
        compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
        finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
-      func_generate_dlsyms "$outputname" "@PROGRAM@" false
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
 
       # template prelinking step
       if test -n "$prelink_cmds"; then
        func_execute_cmds "$prelink_cmds" 'exit $?'
       fi
 
-      wrappers_required=:
+      wrappers_required=yes
       case $host in
       *cegcc* | *mingw32ce*)
         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=false
+        wrappers_required=no
         ;;
       *cygwin* | *mingw* )
-        test yes = "$build_libtool_libs" || wrappers_required=false
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
         ;;
       *)
-        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
-          wrappers_required=false
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
         fi
         ;;
       esac
-      $wrappers_required || {
+      if test "$wrappers_required" = no; then
        # Replace the output file specification.
        compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-       link_command=$compile_command$compile_rpath
+       link_command="$compile_command$compile_rpath"
 
        # We have no uninstalled library dependencies, so finalize right now.
        exit_status=0
@@ -10408,12 +8914,12 @@ EOF
        fi
 
        # Delete the generated files.
-       if test -f "$output_objdir/${outputname}S.$objext"; then
-         func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
+       if test -f "$output_objdir/${outputname}S.${objext}"; then
+         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
        fi
 
        exit $exit_status
-      }
+      fi
 
       if test -n "$compile_shlibpath$finalize_shlibpath"; then
        compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -10443,9 +8949,9 @@ EOF
        fi
       fi
 
-      if test yes = "$no_install"; then
+      if test "$no_install" = yes; then
        # We don't need to create a wrapper script.
-       link_command=$compile_var$compile_command$compile_rpath
+       link_command="$compile_var$compile_command$compile_rpath"
        # Replace the output file specification.
        link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
        # Delete the old output file.
@@ -10462,28 +8968,27 @@ EOF
        exit $EXIT_SUCCESS
       fi
 
-      case $hardcode_action,$fast_install in
-        relink,*)
-         # Fast installation is not supported
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
 
-         func_warning "this platform does not like uninstalled shared libraries"
-         func_warning "'$output' will be relinked during installation"
-         ;;
-        *,yes)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-          ;;
-       *,no)
-         link_command=$compile_var$compile_command$compile_rpath
-         relink_command=$finalize_var$finalize_command$finalize_rpath
-          ;;
-       *,needless)
-         link_command=$finalize_var$compile_command$finalize_rpath
-         relink_command=
-          ;;
-      esac
+       func_warning "this platform does not like uninstalled shared libraries"
+       func_warning "\`$output' will be relinked during installation"
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
 
       # Replace the output file specification.
       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
@@ -10540,8 +9045,8 @@ EOF
            func_dirname_and_basename "$output" "" "."
            output_name=$func_basename_result
            output_path=$func_dirname_result
-           cwrappersource=$output_path/$objdir/lt-$output_name.c
-           cwrapper=$output_path/$output_name.exe
+           cwrappersource="$output_path/$objdir/lt-$output_name.c"
+           cwrapper="$output_path/$output_name.exe"
            $RM $cwrappersource $cwrapper
            trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
@@ -10562,7 +9067,7 @@ EOF
            trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
            $opt_dry_run || {
              # note: this script will not be executed, so do not chmod.
-             if test "x$build" = "x$host"; then
+             if test "x$build" = "x$host" ; then
                $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
              else
                func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -10585,27 +9090,25 @@ EOF
     # See if we need to build an old-fashioned archive.
     for oldlib in $oldlibs; do
 
-      case $build_libtool_libs in
-        convenience)
-         oldobjs="$libobjs_save $symfileobj"
-         addlibs=$convenience
-         build_libtool_libs=no
-         ;;
-       module)
-         oldobjs=$libobjs_save
-         addlibs=$old_convenience
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save $symfileobj"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
          build_libtool_libs=no
-          ;;
-       *)
+       else
          oldobjs="$old_deplibs $non_pic_objects"
-         $preload && test -f "$symfileobj" \
-           && func_append oldobjs " $symfileobj"
-         addlibs=$old_convenience
-         ;;
-      esac
+         if test "$preload" = yes && test -f "$symfileobj"; then
+           func_append oldobjs " $symfileobj"
+         fi
+       fi
+       addlibs="$old_convenience"
+      fi
 
       if test -n "$addlibs"; then
-       gentop=$output_objdir/${outputname}x
+       gentop="$output_objdir/${outputname}x"
        func_append generated " $gentop"
 
        func_extract_archives $gentop $addlibs
@@ -10613,13 +9116,13 @@ EOF
       fi
 
       # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
        cmds=$old_archive_from_new_cmds
       else
 
        # Add any objects from preloaded convenience libraries
        if test -n "$dlprefiles"; then
-         gentop=$output_objdir/${outputname}x
+         gentop="$output_objdir/${outputname}x"
          func_append generated " $gentop"
 
          func_extract_archives $gentop $dlprefiles
@@ -10640,7 +9143,7 @@ EOF
          :
        else
          echo "copying selected object files to avoid basename conflicts..."
-         gentop=$output_objdir/${outputname}x
+         gentop="$output_objdir/${outputname}x"
          func_append generated " $gentop"
          func_mkdir_p "$gentop"
          save_oldobjs=$oldobjs
@@ -10649,7 +9152,7 @@ EOF
          for obj in $save_oldobjs
          do
            func_basename "$obj"
-           objbase=$func_basename_result
+           objbase="$func_basename_result"
            case " $oldobjs " in
            " ") oldobjs=$obj ;;
            *[\ /]"$objbase "*)
@@ -10718,18 +9221,18 @@ EOF
            else
              # the above command should be used before it gets too long
              oldobjs=$objlist
-             if test "$obj" = "$last_oldobj"; then
+             if test "$obj" = "$last_oldobj" ; then
                RANLIB=$save_RANLIB
              fi
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-             eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
+             eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
              objlist=
              len=$len0
            fi
          done
          RANLIB=$save_RANLIB
          oldobjs=$objlist
-         if test -z "$oldobjs"; then
+         if test "X$oldobjs" = "X" ; then
            eval cmds=\"\$concat_cmds\"
          else
            eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -10746,7 +9249,7 @@ EOF
     case $output in
     *.la)
       old_library=
-      test yes = "$build_old_libs" && old_library=$libname.$libext
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
       func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
@@ -10761,31 +9264,31 @@ EOF
        fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test yes = "$hardcode_automatic"; then
+      if test "$hardcode_automatic" = yes ; then
        relink_command=
       fi
 
       # Only create the output if not a dry run.
       $opt_dry_run || {
        for installed in no yes; do
-         if test yes = "$installed"; then
+         if test "$installed" = yes; then
            if test -z "$install_libdir"; then
              break
            fi
-           output=$output_objdir/${outputname}i
+           output="$output_objdir/$outputname"i
            # Replace all uninstalled libtool libraries with the installed ones
            newdependency_libs=
            for deplib in $dependency_libs; do
              case $deplib in
              *.la)
                func_basename "$deplib"
-               name=$func_basename_result
+               name="$func_basename_result"
                func_resolve_sysroot "$deplib"
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
                test -z "$libdir" && \
-                 func_fatal_error "'$deplib' is not a valid libtool archive"
+                 func_fatal_error "\`$deplib' is not a valid libtool archive"
                func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
                ;;
              -L*)
@@ -10801,23 +9304,23 @@ EOF
              *) func_append newdependency_libs " $deplib" ;;
              esac
            done
-           dependency_libs=$newdependency_libs
+           dependency_libs="$newdependency_libs"
            newdlfiles=
 
            for lib in $dlfiles; do
              case $lib in
              *.la)
                func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
                func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
                ;;
              *) func_append newdlfiles " $lib" ;;
              esac
            done
-           dlfiles=$newdlfiles
+           dlfiles="$newdlfiles"
            newdlprefiles=
            for lib in $dlprefiles; do
              case $lib in
@@ -10827,34 +9330,34 @@ EOF
                # didn't already link the preopened objects directly into
                # the library:
                func_basename "$lib"
-               name=$func_basename_result
-               eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+               name="$func_basename_result"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
-                 func_fatal_error "'$lib' is not a valid libtool archive"
+                 func_fatal_error "\`$lib' is not a valid libtool archive"
                func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
                ;;
              esac
            done
-           dlprefiles=$newdlprefiles
+           dlprefiles="$newdlprefiles"
          else
            newdlfiles=
            for lib in $dlfiles; do
              case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
                *) abs=`pwd`"/$lib" ;;
              esac
              func_append newdlfiles " $abs"
            done
-           dlfiles=$newdlfiles
+           dlfiles="$newdlfiles"
            newdlprefiles=
            for lib in $dlprefiles; do
              case $lib in
-               [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
+               [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
                *) abs=`pwd`"/$lib" ;;
              esac
              func_append newdlprefiles " $abs"
            done
-           dlprefiles=$newdlprefiles
+           dlprefiles="$newdlprefiles"
          fi
          $RM $output
          # place dlname in correct position for cygwin
@@ -10870,9 +9373,10 @@ EOF
          case $host,$output,$installed,$module,$dlname in
            *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
              # If a -bindir argument was supplied, place the dll there.
-             if test -n "$bindir"; then
+             if test "x$bindir" != x ;
+             then
                func_relative_path "$install_libdir" "$bindir"
-               tdlname=$func_relative_path_result/$dlname
+               tdlname=$func_relative_path_result$dlname
              else
                # Otherwise fall back on heuristic.
                tdlname=../bin/$dlname
@@ -10881,7 +9385,7 @@ EOF
          esac
          $ECHO > $output "\
 # $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -10895,7 +9399,7 @@ library_names='$library_names'
 # The name of the static archive.
 old_library='$old_library'
 
-# Linker flags that cannot go in dependency_libs.
+# Linker flags that can not go in dependency_libs.
 inherited_linker_flags='$new_inherited_linker_flags'
 
 # Libraries that this one depends upon.
@@ -10921,7 +9425,7 @@ dlpreopen='$dlprefiles'
 
 # Directory that this library needs to be installed in:
 libdir='$install_libdir'"
-         if test no,yes = "$installed,$need_relink"; then
+         if test "$installed" = no && test "$need_relink" = yes; then
            $ECHO >> $output "\
 relink_command=\"$relink_command\""
          fi
@@ -10936,29 +9440,27 @@ relink_command=\"$relink_command\""
     exit $EXIT_SUCCESS
 }
 
-if test link = "$opt_mode" || test relink = "$opt_mode"; then
-  func_mode_link ${1+"$@"}
-fi
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
 
 
 # func_mode_uninstall arg...
 func_mode_uninstall ()
 {
-    $debug_cmd
-
-    RM=$nonopt
+    $opt_debug
+    RM="$nonopt"
     files=
-    rmforce=false
+    rmforce=
     exit_status=0
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic=$magic
+    libtool_install_magic="$magic"
 
     for arg
     do
       case $arg in
-      -f) func_append RM " $arg"; rmforce=: ;;
+      -f) func_append RM " $arg"; rmforce=yes ;;
       -*) func_append RM " $arg" ;;
       *) func_append files " $arg" ;;
       esac
@@ -10971,18 +9473,18 @@ func_mode_uninstall ()
 
     for file in $files; do
       func_dirname "$file" "" "."
-      dir=$func_dirname_result
-      if test . = "$dir"; then
-       odir=$objdir
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+       odir="$objdir"
       else
-       odir=$dir/$objdir
+       odir="$dir/$objdir"
       fi
       func_basename "$file"
-      name=$func_basename_result
-      test uninstall = "$opt_mode" && odir=$dir
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
 
       # Remember odir for removal later, being careful to avoid duplicates
-      if test clean = "$opt_mode"; then
+      if test "$opt_mode" = clean; then
        case " $rmdirs " in
          *" $odir "*) ;;
          *) func_append rmdirs " $odir" ;;
@@ -10997,11 +9499,11 @@ func_mode_uninstall ()
       elif test -d "$file"; then
        exit_status=1
        continue
-      elif $rmforce; then
+      elif test "$rmforce" = yes; then
        continue
       fi
 
-      rmfiles=$file
+      rmfiles="$file"
 
       case $name in
       *.la)
@@ -11015,7 +9517,7 @@ func_mode_uninstall ()
          done
          test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-         case $opt_mode in
+         case "$opt_mode" in
          clean)
            case " $library_names " in
            *" $dlname "*) ;;
@@ -11026,12 +9528,12 @@ func_mode_uninstall ()
          uninstall)
            if test -n "$library_names"; then
              # Do each command in the postuninstall commands.
-             func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
+             func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
            fi
 
            if test -n "$old_library"; then
              # Do each command in the old_postuninstall commands.
-             func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
+             func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
            fi
            # FIXME: should reinstall the best remaining shared library.
            ;;
@@ -11047,19 +9549,21 @@ func_mode_uninstall ()
          func_source $dir/$name
 
          # Add PIC object to the list of files to remove.
-         if test -n "$pic_object" && test none != "$pic_object"; then
+         if test -n "$pic_object" &&
+            test "$pic_object" != none; then
            func_append rmfiles " $dir/$pic_object"
          fi
 
          # Add non-PIC object to the list of files to remove.
-         if test -n "$non_pic_object" && test none != "$non_pic_object"; then
+         if test -n "$non_pic_object" &&
+            test "$non_pic_object" != none; then
            func_append rmfiles " $dir/$non_pic_object"
          fi
        fi
        ;;
 
       *)
-       if test clean = "$opt_mode"; then
+       if test "$opt_mode" = clean ; then
          noexename=$name
          case $file in
          *.exe)
@@ -11086,12 +9590,12 @@ func_mode_uninstall ()
 
            # note $name still contains .exe if it was in $file originally
            # as does the version of $file that was added into $rmfiles
-           func_append rmfiles " $odir/$name $odir/${name}S.$objext"
-           if test yes = "$fast_install" && test -n "$relink_command"; then
+           func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
+           if test "$fast_install" = yes && test -n "$relink_command"; then
              func_append rmfiles " $odir/lt-$name"
            fi
-           if test "X$noexename" != "X$name"; then
-             func_append rmfiles " $odir/lt-$noexename.c"
+           if test "X$noexename" != "X$name" ; then
+             func_append rmfiles " $odir/lt-${noexename}.c"
            fi
          fi
        fi
@@ -11100,7 +9604,7 @@ func_mode_uninstall ()
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
 
-    # Try to remove the $objdir's in the directories where we deleted files
+    # Try to remove the ${objdir}s in the directories where we deleted files
     for dir in $rmdirs; do
       if test -d "$dir"; then
        func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -11110,17 +9614,16 @@ func_mode_uninstall ()
     exit $exit_status
 }
 
-if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
-  func_mode_uninstall ${1+"$@"}
-fi
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
 
 test -z "$opt_mode" && {
-  help=$generic_help
+  help="$generic_help"
   func_fatal_help "you must specify a MODE"
 }
 
 test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode '$opt_mode'"
+  func_fatal_help "invalid operation mode \`$opt_mode'"
 
 if test -n "$exec_cmd"; then
   eval exec "$exec_cmd"
@@ -11131,7 +9634,7 @@ exit $exit_status
 
 
 # The TAGs below are defined such that we never get into a situation
-# where we disable both kinds of libraries.  Given conflicting
+# in which we disable both kinds of libraries.  Given conflicting
 # choices, we go for a static library, that is the most portable,
 # since we can't tell whether shared libraries were disabled because
 # the user asked for that or because the platform doesn't support
@@ -11154,3 +9657,5 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
 # mode:shell-script
 # sh-indentation:2
 # End:
+# vi:sw=2
+
diff --git a/m4/as-ac-expand.m4 b/m4/as-ac-expand.m4
new file mode 100644 (file)
index 0000000..0c71173
--- /dev/null
@@ -0,0 +1,40 @@
+dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
+dnl
+dnl example
+dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
+dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
+
+AC_DEFUN([AS_AC_EXPAND],
+[
+  EXP_VAR=[$1]
+  FROM_VAR=[$2]
+
+  dnl first expand prefix and exec_prefix if necessary
+  prefix_save=$prefix
+  exec_prefix_save=$exec_prefix
+
+  dnl if no prefix given, then use /usr/local, the default prefix
+  if test "x$prefix" = "xNONE"; then
+    prefix=$ac_default_prefix
+  fi
+  dnl if no exec_prefix given, then use prefix
+  if test "x$exec_prefix" = "xNONE"; then
+    exec_prefix=$prefix
+  fi
+
+  full_var="$FROM_VAR"
+  dnl loop until it doesn't change anymore
+  while true; do
+    new_full_var="`eval echo $full_var`"
+    if test "x$new_full_var"="x$full_var"; then break; fi
+    full_var=$new_full_var
+  done
+
+  dnl clean up
+  full_var=$new_full_var
+  AC_SUBST([$1], "$full_var")
+
+  dnl restore prefix and exec_prefix
+  prefix=$prefix_save
+  exec_prefix=$exec_prefix_save
+])
diff --git a/m4/ax_append_compile_flags.m4 b/m4/ax_append_compile_flags.m4
deleted file mode 100644 (file)
index 5b6f1af..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# ============================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
-# ============================================================================
-#
-# SYNOPSIS
-#
-#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-#   For every FLAG1, FLAG2 it is checked whether the compiler works with the
-#   flag.  If it does, the flag is added FLAGS-VARIABLE
-#
-#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
-#   CFLAGS) is used.  During the check the flag is always added to the
-#   current language's flags.
-#
-#   If EXTRA-FLAGS is defined, it is added to the current language's default
-#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
-#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
-#   force the compiler to issue an error when a bad flag is given.
-#
-#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-#
-#   NOTE: This macro depends on the AX_APPEND_FLAG and
-#   AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
-#   AX_APPEND_LINK_FLAGS.
-#
-# LICENSE
-#
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 6
-
-AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
-[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
-AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
-for flag in $1; do
-  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
-done
-])dnl AX_APPEND_COMPILE_FLAGS
diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4
deleted file mode 100644 (file)
index e8c5312..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# ===========================================================================
-#      https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
-#
-# DESCRIPTION
-#
-#   FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
-#   added in between.
-#
-#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
-#   CFLAGS) is used.  FLAGS-VARIABLE is not changed if it already contains
-#   FLAG.  If FLAGS-VARIABLE is unset in the shell, it is set to exactly
-#   FLAG.
-#
-#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 7
-
-AC_DEFUN([AX_APPEND_FLAG],
-[dnl
-AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
-AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
-AS_VAR_SET_IF(FLAGS,[
-  AS_CASE([" AS_VAR_GET(FLAGS) "],
-    [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
-    [
-     AS_VAR_APPEND(FLAGS,[" $1"])
-     AC_RUN_LOG([: FLAGS="$FLAGS"])
-    ])
-  ],
-  [
-  AS_VAR_SET(FLAGS,[$1])
-  AC_RUN_LOG([: FLAGS="$FLAGS"])
-  ])
-AS_VAR_POPDEF([FLAGS])dnl
-])dnl AX_APPEND_FLAG
diff --git a/m4/ax_append_link_flags.m4 b/m4/ax_append_link_flags.m4
deleted file mode 100644 (file)
index 6f7f174..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# ===========================================================================
-#   https://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-#   For every FLAG1, FLAG2 it is checked whether the linker works with the
-#   flag.  If it does, the flag is added FLAGS-VARIABLE
-#
-#   If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is
-#   used. During the check the flag is always added to the linker's flags.
-#
-#   If EXTRA-FLAGS is defined, it is added to the linker's default flags
-#   when the check is done.  The check is thus made with the flags: "LDFLAGS
-#   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to
-#   issue an error when a bad flag is given.
-#
-#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-#
-#   NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG.
-#   Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS.
-#
-# LICENSE
-#
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 6
-
-AC_DEFUN([AX_APPEND_LINK_FLAGS],
-[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
-for flag in $1; do
-  AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3], [$4])
-done
-])dnl AX_APPEND_LINK_FLAGS
diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4
deleted file mode 100644 (file)
index dcabb92..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-#   Check whether the given FLAG works with the current language's compiler
-#   or gives an error.  (Warnings, however, are ignored)
-#
-#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-#   success/failure.
-#
-#   If EXTRA-FLAGS is defined, it is added to the current language's default
-#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
-#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
-#   force the compiler to issue an error when a bad flag is given.
-#
-#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-#
-#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 5
-
-AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
-AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
-AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
-  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
-  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
-  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
-    [AS_VAR_SET(CACHEVAR,[yes])],
-    [AS_VAR_SET(CACHEVAR,[no])])
-  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-AS_VAR_IF(CACHEVAR,yes,
-  [m4_default([$2], :)],
-  [m4_default([$3], :)])
-AS_VAR_POPDEF([CACHEVAR])dnl
-])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4
deleted file mode 100644 (file)
index 819409a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# ===========================================================================
-#    https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
-#
-# DESCRIPTION
-#
-#   Check whether the given FLAG works with the linker or gives an error.
-#   (Warnings, however, are ignored)
-#
-#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-#   success/failure.
-#
-#   If EXTRA-FLAGS is defined, it is added to the linker's default flags
-#   when the check is done.  The check is thus made with the flags: "LDFLAGS
-#   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to
-#   issue an error when a bad flag is given.
-#
-#   INPUT gives an alternative input source to AC_LINK_IFELSE.
-#
-#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-#   macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 5
-
-AC_DEFUN([AX_CHECK_LINK_FLAG],
-[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
-AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
-AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
-  ax_check_save_flags=$LDFLAGS
-  LDFLAGS="$LDFLAGS $4 $1"
-  AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
-    [AS_VAR_SET(CACHEVAR,[yes])],
-    [AS_VAR_SET(CACHEVAR,[no])])
-  LDFLAGS=$ax_check_save_flags])
-AS_VAR_IF(CACHEVAR,yes,
-  [m4_default([$2], :)],
-  [m4_default([$3], :)])
-AS_VAR_POPDEF([CACHEVAR])dnl
-])dnl AX_CHECK_LINK_FLAGS
diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4
deleted file mode 100644 (file)
index 0934a44..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-# ===========================================================================
-#     https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_CODE_COVERAGE()
-#
-# DESCRIPTION
-#
-#   Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS,
-#   CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LIBS which should be included
-#   in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LIBADD variables of every
-#   build target (program or library) which should be built with code
-#   coverage support. Also defines CODE_COVERAGE_RULES which should be
-#   substituted in your Makefile; and $enable_code_coverage which can be
-#   used in subsequent configure output. CODE_COVERAGE_ENABLED is defined
-#   and substituted, and corresponds to the value of the
-#   --enable-code-coverage option, which defaults to being disabled.
-#
-#   Test also for gcov program and create GCOV variable that could be
-#   substituted.
-#
-#   Note that all optimisation flags in CFLAGS must be disabled when code
-#   coverage is enabled.
-#
-#   Usage example:
-#
-#   configure.ac:
-#
-#     AX_CODE_COVERAGE
-#
-#   Makefile.am:
-#
-#     @CODE_COVERAGE_RULES@
-#     my_program_LIBS = ... $(CODE_COVERAGE_LIBS) ...
-#     my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ...
-#     my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ...
-#     my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ...
-#
-#   This results in a "check-code-coverage" rule being added to any
-#   Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module
-#   has been configured with --enable-code-coverage). Running `make
-#   check-code-coverage` in that directory will run the module's test suite
-#   (`make check`) and build a code coverage report detailing the code which
-#   was touched, then print the URI for the report.
-#
-#   In earlier versions of this macro, CODE_COVERAGE_LDFLAGS was defined
-#   instead of CODE_COVERAGE_LIBS. They are both still defined, but use of
-#   CODE_COVERAGE_LIBS is preferred for clarity; CODE_COVERAGE_LDFLAGS is
-#   deprecated. They have the same value.
-#
-#   This code was derived from Makefile.decl in GLib, originally licenced
-#   under LGPLv2.1+.
-#
-# LICENSE
-#
-#   Copyright (c) 2012, 2016 Philip Withnall
-#   Copyright (c) 2012 Xan Lopez
-#   Copyright (c) 2012 Christian Persch
-#   Copyright (c) 2012 Paolo Borelli
-#   Copyright (c) 2012 Dan Winship
-#   Copyright (c) 2015 Bastien ROUCARIES
-#
-#   This library is free software; you can redistribute it and/or modify it
-#   under the terms of the GNU Lesser General Public License as published by
-#   the Free Software Foundation; either version 2.1 of the License, or (at
-#   your option) any later version.
-#
-#   This library is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
-#   General Public License for more details.
-#
-#   You should have received a copy of the GNU Lesser General Public License
-#   along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#serial 21
-
-AC_DEFUN([AX_CODE_COVERAGE],[
-       dnl Check for --enable-code-coverage
-       AC_REQUIRE([AC_PROG_SED])
-
-       # allow to override gcov location
-       AC_ARG_WITH([gcov],
-         [AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])],
-         [_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov],
-         [_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov])
-
-       AC_MSG_CHECKING([whether to build with code coverage support])
-       AC_ARG_ENABLE([code-coverage],
-         AS_HELP_STRING([--enable-code-coverage],
-         [Whether to enable code coverage support]),,
-         enable_code_coverage=no)
-
-       AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes])
-       AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
-       AC_MSG_RESULT($enable_code_coverage)
-
-       AS_IF([ test "$enable_code_coverage" = "yes" ], [
-               # check for gcov
-               AC_CHECK_TOOL([GCOV],
-                 [$_AX_CODE_COVERAGE_GCOV_PROG_WITH],
-                 [:])
-               AS_IF([test "X$GCOV" = "X:"],
-                 [AC_MSG_ERROR([gcov is needed to do coverage])])
-               AC_SUBST([GCOV])
-
-               dnl Check if gcc is being used
-               AS_IF([ test "$GCC" = "no" ], [
-                       AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
-               ])
-
-               AC_CHECK_PROG([LCOV], [lcov], [lcov])
-               AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
-
-               AS_IF([ test -z "$LCOV" ], [
-                       AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed])
-               ])
-
-               AS_IF([ test -z "$GENHTML" ], [
-                       AC_MSG_ERROR([Could not find genhtml from the lcov package])
-               ])
-
-               dnl Build the code coverage flags
-               dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility
-               CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
-               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
-               CODE_COVERAGE_LIBS="-lgcov"
-               CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"
-
-               AC_SUBST([CODE_COVERAGE_CPPFLAGS])
-               AC_SUBST([CODE_COVERAGE_CFLAGS])
-               AC_SUBST([CODE_COVERAGE_CXXFLAGS])
-               AC_SUBST([CODE_COVERAGE_LIBS])
-               AC_SUBST([CODE_COVERAGE_LDFLAGS])
-
-               [CODE_COVERAGE_RULES_CHECK='
-       -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
-       $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
-']
-               [CODE_COVERAGE_RULES_CAPTURE='
-       $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
-       $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
-       -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
-       $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
-       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
-']
-               [CODE_COVERAGE_RULES_CLEAN='
-clean: code-coverage-clean
-distclean: code-coverage-clean
-code-coverage-clean:
-       -$(LCOV) --directory $(top_builddir) -z
-       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-       -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
-']
-       ], [
-               [CODE_COVERAGE_RULES_CHECK='
-       @echo "Need to reconfigure with --enable-code-coverage"
-']
-               CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK"
-               CODE_COVERAGE_RULES_CLEAN=''
-       ])
-
-[CODE_COVERAGE_RULES='
-# Code coverage
-#
-# Optional:
-#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
-#    Multiple directories may be specified, separated by whitespace.
-#    (Default: $(top_builddir))
-#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
-#    by lcov for code coverage. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
-#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
-#    reports to be created. (Default:
-#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
-#  - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
-#    set to 0 to disable it and leave empty to stay with the default.
-#    (Default: empty)
-#  - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
-#    instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
-#    instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
-#  - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
-#    collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
-#    lcov instance. (Default: empty)
-#  - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
-#    instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-#  - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
-#    genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
-#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
-#    instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
-#  - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
-#
-# The generated report will be titled using the $(PACKAGE_NAME) and
-# $(PACKAGE_VERSION). In order to add the current git hash to the title,
-# use the git-version-gen script, available online.
-
-# Optional variables
-CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
-CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
-CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
-CODE_COVERAGE_BRANCH_COVERAGE ?=
-CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
-CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
-CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
-CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
-CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
-$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULTS)
-CODE_COVERAGE_IGNORE_PATTERN ?=
-
-code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
-code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_cap_0 = @echo "  LCOV   --capture"\
- $(CODE_COVERAGE_OUTPUT_FILE);
-code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
-code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_ign_0 = @echo "  LCOV   --remove /tmp/*"\
- $(CODE_COVERAGE_IGNORE_PATTERN);
-code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
-code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_genhtml_0 = @echo "  GEN   " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
-code_coverage_quiet = $(code_coverage_quiet_$(V))
-code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
-code_coverage_quiet_0 = --quiet
-
-# sanitizes the test-name: replaces with underscores: dashes and dots
-code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
-
-# Use recursive makes in order to ignore errors during check
-check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"'
-
-# Capture code coverage data
-code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"'
-
-# Hook rule executed before code-coverage-capture, overridable by the user
-code-coverage-capture-hook:
-
-'"$CODE_COVERAGE_RULES_CLEAN"'
-
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-
-A''M_DISTCHECK_CONFIGURE_FLAGS ?=
-A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
-
-.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
-']
-
-       AC_SUBST([CODE_COVERAGE_RULES])
-       m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])])
-])
diff --git a/m4/ax_compiler_flags.m4 b/m4/ax_compiler_flags.m4
deleted file mode 100644 (file)
index ddb0456..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-# ===========================================================================
-#    https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], [EXTRA-YES-CFLAGS], [UNUSED], [UNUSED], [UNUSED], [EXTRA-BASE-LDFLAGS], [EXTRA-YES-LDFLAGS], [UNUSED], [UNUSED], [UNUSED])
-#
-# DESCRIPTION
-#
-#   Check for the presence of an --enable-compile-warnings option to
-#   configure, defaulting to "error" in normal operation, or "yes" if
-#   IS-RELEASE is equal to "yes".  Return the value in the variable
-#   $ax_enable_compile_warnings.
-#
-#   Depending on the value of --enable-compile-warnings, different compiler
-#   warnings are checked to see if they work with the current compiler and,
-#   if so, are appended to CFLAGS-VARIABLE and LDFLAGS-VARIABLE.  This
-#   allows a consistent set of baseline compiler warnings to be used across
-#   a code base, irrespective of any warnings enabled locally by individual
-#   developers.  By standardising the warnings used by all developers of a
-#   project, the project can commit to a zero-warnings policy, using -Werror
-#   to prevent compilation if new warnings are introduced.  This makes
-#   catching bugs which are flagged by warnings a lot easier.
-#
-#   By providing a consistent --enable-compile-warnings argument across all
-#   projects using this macro, continuous integration systems can easily be
-#   configured the same for all projects.  Automated systems or build
-#   systems aimed at beginners may want to pass the --disable-Werror
-#   argument to unconditionally prevent warnings being fatal.
-#
-#   --enable-compile-warnings can take the values:
-#
-#    * no:      Base compiler warnings only; not even -Wall.
-#    * yes:     The above, plus a broad range of useful warnings.
-#    * error:   The above, plus -Werror so that all warnings are fatal.
-#               Use --disable-Werror to override this and disable fatal
-#               warnings.
-#
-#   The set of base and enabled flags can be augmented using the
-#   EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables, which are tested and
-#   appended to the output variable if --enable-compile-warnings is not
-#   "no". Flags should not be disabled using these arguments, as the entire
-#   point of AX_COMPILER_FLAGS is to enforce a consistent set of useful
-#   compiler warnings on code, using warnings which have been chosen for low
-#   false positive rates.  If a compiler emits false positives for a
-#   warning, a #pragma should be used in the code to disable the warning
-#   locally. See:
-#
-#     https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
-#
-#   The EXTRA-* variables should only be used to supply extra warning flags,
-#   and not general purpose compiler flags, as they are controlled by
-#   configure options such as --disable-Werror.
-#
-#   IS-RELEASE can be used to disable -Werror when making a release, which
-#   is useful for those hairy moments when you just want to get the release
-#   done as quickly as possible.  Set it to "yes" to disable -Werror. By
-#   default, it uses the value of $ax_is_release, so if you are using the
-#   AX_IS_RELEASE macro, there is no need to pass this parameter. For
-#   example:
-#
-#     AX_IS_RELEASE([git-directory])
-#     AX_COMPILER_FLAGS()
-#
-#   CFLAGS-VARIABLE defaults to WARN_CFLAGS, and LDFLAGS-VARIABLE defaults
-#   to WARN_LDFLAGS.  Both variables are AC_SUBST-ed by this macro, but must
-#   be manually added to the CFLAGS and LDFLAGS variables for each target in
-#   the code base.
-#
-#   If C++ language support is enabled with AC_PROG_CXX, which must occur
-#   before this macro in configure.ac, warning flags for the C++ compiler
-#   are AC_SUBST-ed as WARN_CXXFLAGS, and must be manually added to the
-#   CXXFLAGS variables for each target in the code base.  EXTRA-*-CFLAGS can
-#   be used to augment the base and enabled flags.
-#
-#   Warning flags for g-ir-scanner (from GObject Introspection) are
-#   AC_SUBST-ed as WARN_SCANNERFLAGS.  This variable must be manually added
-#   to the SCANNERFLAGS variable for each GIR target in the code base.  If
-#   extra g-ir-scanner flags need to be enabled, the AX_COMPILER_FLAGS_GIR
-#   macro must be invoked manually.
-#
-#   AX_COMPILER_FLAGS may add support for other tools in future, in addition
-#   to the compiler and linker.  No extra EXTRA-* variables will be added
-#   for those tools, and all extra support will still use the single
-#   --enable-compile-warnings configure option.  For finer grained control
-#   over the flags for individual tools, use AX_COMPILER_FLAGS_CFLAGS,
-#   AX_COMPILER_FLAGS_LDFLAGS and AX_COMPILER_FLAGS_* for new tools.
-#
-#   The UNUSED variables date from a previous version of this macro, and are
-#   automatically appended to the preceding non-UNUSED variable. They should
-#   be left empty in new uses of the macro.
-#
-# LICENSE
-#
-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
-#   Copyright (c) 2015 David King <amigadave@amigadave.com>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 14
-
-# _AX_COMPILER_FLAGS_LANG([LANGNAME])
-m4_defun([_AX_COMPILER_FLAGS_LANG],
-[m4_ifdef([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [],
-          [m4_define([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [])dnl
-           AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_]$1[FLAGS])])dnl
-])
-
-AC_DEFUN([AX_COMPILER_FLAGS],[
-    # C support is enabled by default.
-    _AX_COMPILER_FLAGS_LANG([C])
-    # Only enable C++ support if AC_PROG_CXX is called. The redefinition of
-    # AC_PROG_CXX is so that a fatal error is emitted if this macro is called
-    # before AC_PROG_CXX, which would otherwise cause no C++ warnings to be
-    # checked.
-    AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                      [_AX_COMPILER_FLAGS_LANG([CXX])],
-                      [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AX_COMPILER_FLAGS_LANG([CXX])])])
-    AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_LDFLAGS])
-
-    # Default value for IS-RELEASE is $ax_is_release
-    ax_compiler_flags_is_release=m4_tolower(m4_normalize(ifelse([$3],,
-                                                                [$ax_is_release],
-                                                                [$3])))
-
-    AC_ARG_ENABLE([compile-warnings],
-                  AS_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@],
-                                 [Enable compiler warnings and errors]),,
-                  [AS_IF([test "$ax_compiler_flags_is_release" = "yes"],
-                         [enable_compile_warnings="yes"],
-                         [enable_compile_warnings="error"])])
-    AC_ARG_ENABLE([Werror],
-                  AS_HELP_STRING([--disable-Werror],
-                                 [Unconditionally make all compiler warnings non-fatal]),,
-                  [enable_Werror=maybe])
-
-    # Return the user's chosen warning level
-    AS_IF([test "$enable_Werror" = "no" -a \
-                "$enable_compile_warnings" = "error"],[
-        enable_compile_warnings="yes"
-    ])
-
-    ax_enable_compile_warnings=$enable_compile_warnings
-
-    AX_COMPILER_FLAGS_CFLAGS([$1],[$ax_compiler_flags_is_release],
-                             [$4],[$5 $6 $7 $8])
-    m4_ifdef([_AX_COMPILER_FLAGS_LANG_CXX_enabled],
-             [AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS],
-                                         [$ax_compiler_flags_is_release],
-                                         [$4],[$5 $6 $7 $8])])
-    AX_COMPILER_FLAGS_LDFLAGS([$2],[$ax_compiler_flags_is_release],
-                              [$9],[$10 $11 $12 $13])
-    AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$ax_compiler_flags_is_release])
-])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_compiler_flags_cflags.m4 b/m4/ax_compiler_flags_cflags.m4
deleted file mode 100644 (file)
index 69162e1..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-# =============================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html
-# =============================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
-#
-# DESCRIPTION
-#
-#   Add warning flags for the C compiler to VARIABLE, which defaults to
-#   WARN_CFLAGS.  VARIABLE is AC_SUBST-ed by this macro, but must be
-#   manually added to the CFLAGS variable for each target in the code base.
-#
-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.
-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide
-#   which flags to enable.
-#
-# LICENSE
-#
-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 13
-
-AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
-    AC_REQUIRE([AC_PROG_SED])
-    AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
-    AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
-
-    # Variable names
-    m4_define([ax_warn_cflags_variable],
-              [m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))])
-
-    AC_LANG_PUSH([C])
-
-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
-    # flags, otherwise they are always appended to the warn_cflags variable, and
-    # Clang warns on them for every compilation unit.
-    # If this is passed to GCC, it will explode, so the flag must be enabled
-    # conditionally.
-    AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
-        ax_compiler_flags_test="-Werror=unknown-warning-option"
-    ],[
-        ax_compiler_flags_test=""
-    ])
-
-    # Base flags
-    AX_APPEND_COMPILE_FLAGS([ dnl
-        -fno-strict-aliasing dnl
-        $3 dnl
-    ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
-
-    AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "yes" flags
-        AX_APPEND_COMPILE_FLAGS([ dnl
-            -Wall dnl
-            -Wextra dnl
-            -Wundef dnl
-            -Wnested-externs dnl
-            -Wwrite-strings dnl
-            -Wpointer-arith dnl
-            -Wmissing-declarations dnl
-            -Wmissing-prototypes dnl
-            -Wstrict-prototypes dnl
-            -Wredundant-decls dnl
-            -Wno-unused-parameter dnl
-            -Wno-missing-field-initializers dnl
-            -Wdeclaration-after-statement dnl
-            -Wformat=2 dnl
-            -Wold-style-definition dnl
-            -Wcast-align dnl
-            -Wformat-nonliteral dnl
-            -Wformat-security dnl
-            -Wsign-compare dnl
-            -Wstrict-aliasing dnl
-            -Wshadow dnl
-            -Winline dnl
-            -Wpacked dnl
-            -Wmissing-format-attribute dnl
-            -Wmissing-noreturn dnl
-            -Winit-self dnl
-            -Wredundant-decls dnl
-            -Wmissing-include-dirs dnl
-            -Wunused-but-set-variable dnl
-            -Warray-bounds dnl
-            -Wimplicit-function-declaration dnl
-            -Wreturn-type dnl
-            -Wswitch-enum dnl
-            -Wswitch-default dnl
-            $4 dnl
-            $5 dnl
-            $6 dnl
-            $7 dnl
-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "error"],[
-        # "error" flags; -Werror has to be appended unconditionally because
-        # it's not possible to test for
-        #
-        # suggest-attribute=format is disabled because it gives too many false
-        # positives
-        AX_APPEND_FLAG([-Werror],ax_warn_cflags_variable)
-
-        AX_APPEND_COMPILE_FLAGS([ dnl
-            -Wno-suggest-attribute=format dnl
-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
-    ])
-
-    # In the flags below, when disabling specific flags, always add *both*
-    # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)
-    # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall,
-    # which effectively turns that flag back on again as an error.
-    for flag in $ax_warn_cflags_variable; do
-        AS_CASE([$flag],
-                [-Wno-*=*],[],
-                [-Wno-*],[
-                    AX_APPEND_COMPILE_FLAGS([-Wno-error=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')],
-                                            ax_warn_cflags_variable,
-                                            [$ax_compiler_flags_test])
-                ])
-    done
-
-    AC_LANG_POP([C])
-
-    # Substitute the variables
-    AC_SUBST(ax_warn_cflags_variable)
-])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_compiler_flags_gir.m4 b/m4/ax_compiler_flags_gir.m4
deleted file mode 100644 (file)
index 5b4924a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# ===========================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_gir.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
-#
-# DESCRIPTION
-#
-#   Add warning flags for the g-ir-scanner (from GObject Introspection) to
-#   VARIABLE, which defaults to WARN_SCANNERFLAGS.  VARIABLE is AC_SUBST-ed
-#   by this macro, but must be manually added to the SCANNERFLAGS variable
-#   for each GIR target in the code base.
-#
-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.
-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide
-#   which flags to enable.
-#
-# LICENSE
-#
-#   Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 6
-
-AC_DEFUN([AX_COMPILER_FLAGS_GIR],[
-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
-
-    # Variable names
-    m4_define([ax_warn_scannerflags_variable],
-              [m4_normalize(ifelse([$1],,[WARN_SCANNERFLAGS],[$1]))])
-
-    # Base flags
-    AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable)
-
-    AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "yes" flags
-        AX_APPEND_FLAG([ dnl
-            --warn-all dnl
-            $4 dnl
-            $5 dnl
-            $6 dnl
-            $7 dnl
-        ],ax_warn_scannerflags_variable)
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "error"],[
-        # "error" flags
-        AX_APPEND_FLAG([ dnl
-            --warn-error dnl
-        ],ax_warn_scannerflags_variable)
-    ])
-
-    # Substitute the variables
-    AC_SUBST(ax_warn_scannerflags_variable)
-])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_compiler_flags_ldflags.m4 b/m4/ax_compiler_flags_ldflags.m4
deleted file mode 100644 (file)
index 842e329..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# ==============================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_ldflags.html
-# ==============================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
-#
-# DESCRIPTION
-#
-#   Add warning flags for the linker to VARIABLE, which defaults to
-#   WARN_LDFLAGS.  VARIABLE is AC_SUBST-ed by this macro, but must be
-#   manually added to the LDFLAGS variable for each target in the code base.
-#
-#   This macro depends on the environment set up by AX_COMPILER_FLAGS.
-#   Specifically, it uses the value of $ax_enable_compile_warnings to decide
-#   which flags to enable.
-#
-# LICENSE
-#
-#   Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.  This file is offered as-is, without any
-#   warranty.
-
-#serial 8
-
-AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
-    AX_REQUIRE_DEFINED([AX_APPEND_LINK_FLAGS])
-    AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
-    AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
-    AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-
-    # Variable names
-    m4_define([ax_warn_ldflags_variable],
-              [m4_normalize(ifelse([$1],,[WARN_LDFLAGS],[$1]))])
-
-    # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
-    # flags, otherwise they are always appended to the warn_ldflags variable,
-    # and Clang warns on them for every compilation unit.
-    # If this is passed to GCC, it will explode, so the flag must be enabled
-    # conditionally.
-    AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
-        ax_compiler_flags_test="-Werror=unknown-warning-option"
-    ],[
-        ax_compiler_flags_test=""
-    ])
-
-    # macOS linker does not have --as-needed
-    AX_CHECK_LINK_FLAG([-Wl,--no-as-needed], [
-        ax_compiler_flags_as_needed_option="-Wl,--no-as-needed"
-    ], [
-        ax_compiler_flags_as_needed_option=""
-    ])
-
-    # macOS linker speaks with a different accent
-    ax_compiler_flags_fatal_warnings_option=""
-    AX_CHECK_LINK_FLAG([-Wl,--fatal-warnings], [
-        ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings"
-    ])
-    AX_CHECK_LINK_FLAG([-Wl,-fatal_warnings], [
-        ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings"
-    ])
-
-    # Base flags
-    AX_APPEND_LINK_FLAGS([ dnl
-        $ax_compiler_flags_as_needed_option dnl
-        $3 dnl
-    ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
-
-    AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "yes" flags
-        AX_APPEND_LINK_FLAGS([$4 $5 $6 $7],
-                                ax_warn_ldflags_variable,
-                                [$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "error"],[
-        # "error" flags; -Werror has to be appended unconditionally because
-        # it's not possible to test for
-        #
-        # suggest-attribute=format is disabled because it gives too many false
-        # positives
-        AX_APPEND_LINK_FLAGS([ dnl
-            $ax_compiler_flags_fatal_warnings_option dnl
-        ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
-    ])
-
-    # Substitute the variables
-    AC_SUBST(ax_warn_ldflags_variable)
-])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_is_release.m4 b/m4/ax_is_release.m4
deleted file mode 100644 (file)
index 9097ddb..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# ===========================================================================
-#      https://www.gnu.org/software/autoconf-archive/ax_is_release.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_IS_RELEASE(POLICY)
-#
-# DESCRIPTION
-#
-#   Determine whether the code is being configured as a release, or from
-#   git. Set the ax_is_release variable to 'yes' or 'no'.
-#
-#   If building a release version, it is recommended that the configure
-#   script disable compiler errors and debug features, by conditionalising
-#   them on the ax_is_release variable.  If building from git, these
-#   features should be enabled.
-#
-#   The POLICY parameter specifies how ax_is_release is determined. It can
-#   take the following values:
-#
-#    * git-directory:  ax_is_release will be 'no' if a '.git' directory exists
-#    * minor-version:  ax_is_release will be 'no' if the minor version number
-#                      in $PACKAGE_VERSION is odd; this assumes
-#                      $PACKAGE_VERSION follows the 'major.minor.micro' scheme
-#    * micro-version:  ax_is_release will be 'no' if the micro version number
-#                      in $PACKAGE_VERSION is odd; this assumes
-#                      $PACKAGE_VERSION follows the 'major.minor.micro' scheme
-#    * dash-version:   ax_is_release will be 'no' if there is a dash '-'
-#                      in $PACKAGE_VERSION, for example 1.2-pre3, 1.2.42-a8b9
-#                      or 2.0-dirty (in particular this is suitable for use
-#                      with git-version-gen)
-#    * always:         ax_is_release will always be 'yes'
-#    * never:          ax_is_release will always be 'no'
-#
-#   Other policies may be added in future.
-#
-# LICENSE
-#
-#   Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>
-#   Copyright (c) 2016 Collabora Ltd.
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved.
-
-#serial 7
-
-AC_DEFUN([AX_IS_RELEASE],[
-    AC_BEFORE([AC_INIT],[$0])
-
-    m4_case([$1],
-      [git-directory],[
-        # $is_release = (.git directory does not exist)
-        AS_IF([test -d ${srcdir}/.git],[ax_is_release=no],[ax_is_release=yes])
-      ],
-      [minor-version],[
-        # $is_release = ($minor_version is even)
-        minor_version=`echo "$PACKAGE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
-        AS_IF([test "$(( $minor_version % 2 ))" -ne 0],
-              [ax_is_release=no],[ax_is_release=yes])
-      ],
-      [micro-version],[
-        # $is_release = ($micro_version is even)
-        micro_version=`echo "$PACKAGE_VERSION" | sed 's/[[^.]]*\.[[^.]]*\.\([[^.]]*\).*/\1/'`
-        AS_IF([test "$(( $micro_version % 2 ))" -ne 0],
-              [ax_is_release=no],[ax_is_release=yes])
-      ],
-      [dash-version],[
-        # $is_release = ($PACKAGE_VERSION has a dash)
-        AS_CASE([$PACKAGE_VERSION],
-                [*-*], [ax_is_release=no],
-                [*], [ax_is_release=yes])
-      ],
-      [always],[ax_is_release=yes],
-      [never],[ax_is_release=no],
-      [
-        AC_MSG_ERROR([Invalid policy. Valid policies: git-directory, minor-version, micro-version, dash-version, always, never.])
-      ])
-])
diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4
deleted file mode 100644 (file)
index 17c3eab..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# ===========================================================================
-#    https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_REQUIRE_DEFINED(MACRO)
-#
-# DESCRIPTION
-#
-#   AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
-#   been defined and thus are available for use.  This avoids random issues
-#   where a macro isn't expanded.  Instead the configure script emits a
-#   non-fatal:
-#
-#     ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
-#
-#   It's like AC_REQUIRE except it doesn't expand the required macro.
-#
-#   Here's an example:
-#
-#     AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
-#
-# LICENSE
-#
-#   Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
-#
-#   Copying and distribution of this file, with or without modification, are
-#   permitted in any medium without royalty provided the copyright notice
-#   and this notice are preserved. This file is offered as-is, without any
-#   warranty.
-
-#serial 2
-
-AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
-  m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
-])dnl AX_REQUIRE_DEFINED
diff --git a/m4/glib-2.0.m4 b/m4/glib-2.0.m4
deleted file mode 100644 (file)
index d8f03d4..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-# Configure paths for GLIB
-# Owen Taylor     1997-2001
-
-dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
-dnl gthread, or gio is specified in MODULES, pass to pkg-config
-dnl
-AC_DEFUN([AM_PATH_GLIB_2_0],
-[dnl 
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(glibtest, [  --disable-glibtest      do not try to compile and run a test GLIB program],
-                   , enable_glibtest=yes)
-
-  pkg_config_args=glib-2.0
-  for module in . $4
-  do
-      case "$module" in
-         gmodule) 
-             pkg_config_args="$pkg_config_args gmodule-2.0"
-         ;;
-         gmodule-no-export) 
-             pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
-         ;;
-         gobject) 
-             pkg_config_args="$pkg_config_args gobject-2.0"
-         ;;
-         gthread) 
-             pkg_config_args="$pkg_config_args gthread-2.0"
-         ;;
-         gio*) 
-             pkg_config_args="$pkg_config_args $module-2.0"
-         ;;
-      esac
-  done
-
-  PKG_PROG_PKG_CONFIG([0.16])
-
-  no_glib=""
-
-  if test "x$PKG_CONFIG" = x ; then
-    no_glib=yes
-    PKG_CONFIG=no
-  fi
-
-  min_glib_version=ifelse([$1], ,2.0.0,$1)
-  AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
-
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-         echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
-         enable_glibtest=no
-    fi
-
-    if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
-         :
-    else
-         no_glib=yes
-    fi
-  fi
-
-  if test x"$no_glib" = x ; then
-    GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
-    GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
-    GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
-    GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
-
-    GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
-    glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_glibtest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GLIB_CFLAGS"
-      LIBS="$GLIB_LIBS $LIBS"
-dnl
-dnl Now check if the installed GLIB is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
-      rm -f conf.glibtest
-      AC_TRY_RUN([
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int 
-main ()
-{
-  unsigned int major, minor, micro;
-
-  fclose (fopen ("conf.glibtest", "w"));
-
-  if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_glib_version");
-     exit(1);
-   }
-
-  if ((glib_major_version != $glib_config_major_version) ||
-      (glib_minor_version != $glib_config_minor_version) ||
-      (glib_micro_version != $glib_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
-             $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
-             glib_major_version, glib_minor_version, glib_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    } 
-  else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
-          (glib_minor_version != GLIB_MINOR_VERSION) ||
-           (glib_micro_version != GLIB_MICRO_VERSION))
-    {
-      printf("*** GLIB header files (version %d.%d.%d) do not match\n",
-            GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-            glib_major_version, glib_minor_version, glib_micro_version);
-    }
-  else
-    {
-      if ((glib_major_version > major) ||
-        ((glib_major_version == major) && (glib_minor_version > minor)) ||
-        ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
-               glib_major_version, glib_minor_version, glib_micro_version);
-        printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
-              major, minor, micro);
-        printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_glib" = x ; then
-     AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
-     else
-       if test -f conf.glibtest ; then
-        :
-       else
-          echo "*** Could not run GLIB test program, checking why..."
-          ac_save_CFLAGS="$CFLAGS"
-          ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GLIB_CFLAGS"
-          LIBS="$LIBS $GLIB_LIBS"
-          AC_TRY_LINK([
-#include <glib.h>
-#include <stdio.h>
-],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GLIB or finding the wrong"
-          echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-         echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GLIB_CFLAGS=""
-     GLIB_LIBS=""
-     GLIB_GENMARSHAL=""
-     GOBJECT_QUERY=""
-     GLIB_MKENUMS=""
-     GLIB_COMPILE_RESOURCES=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(GLIB_CFLAGS)
-  AC_SUBST(GLIB_LIBS)
-  AC_SUBST(GLIB_GENMARSHAL)
-  AC_SUBST(GOBJECT_QUERY)
-  AC_SUBST(GLIB_MKENUMS)
-  AC_SUBST(GLIB_COMPILE_RESOURCES)
-  rm -f conf.glibtest
-])
diff --git a/m4/introspection.m4 b/m4/introspection.m4
deleted file mode 100644 (file)
index d89c3d9..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-dnl -*- mode: autoconf -*-
-dnl Copyright 2009 Johan Dahlin
-dnl
-dnl This file is free software; the author(s) gives unlimited
-dnl permission to copy and/or distribute it, with or without
-dnl modifications, as long as this notice is preserved.
-dnl
-
-# serial 1
-
-m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL],
-[
-    AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
-    AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
-    AC_BEFORE([LT_INIT],[$0])dnl setup libtool first
-
-    dnl enable/disable introspection
-    m4_if([$2], [require],
-    [dnl
-        enable_introspection=yes
-    ],[dnl
-        AC_ARG_ENABLE(introspection,
-                  AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]],
-                                 [Enable introspection for this build]),, 
-                                 [enable_introspection=auto])
-    ])dnl
-
-    AC_MSG_CHECKING([for gobject-introspection])
-
-    dnl presence/version checking
-    AS_CASE([$enable_introspection],
-    [no], [dnl
-        found_introspection="no (disabled, use --enable-introspection to enable)"
-    ],dnl
-    [yes],[dnl
-        PKG_CHECK_EXISTS([gobject-introspection-1.0],,
-                         AC_MSG_ERROR([gobject-introspection-1.0 is not installed]))
-        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1],
-                         found_introspection=yes,
-                         AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME]))
-    ],dnl
-    [auto],[dnl
-        PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no)
-       dnl Canonicalize enable_introspection
-       enable_introspection=$found_introspection
-    ],dnl
-    [dnl       
-        AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@])
-    ])dnl
-
-    AC_MSG_RESULT([$found_introspection])
-
-    INTROSPECTION_SCANNER=
-    INTROSPECTION_COMPILER=
-    INTROSPECTION_GENERATE=
-    INTROSPECTION_GIRDIR=
-    INTROSPECTION_TYPELIBDIR=
-    if test "x$found_introspection" = "xyes"; then
-       INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
-       INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
-       INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0`
-       INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0`
-       INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)"
-       INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0`
-       INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0`
-       INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection
-    fi
-    AC_SUBST(INTROSPECTION_SCANNER)
-    AC_SUBST(INTROSPECTION_COMPILER)
-    AC_SUBST(INTROSPECTION_GENERATE)
-    AC_SUBST(INTROSPECTION_GIRDIR)
-    AC_SUBST(INTROSPECTION_TYPELIBDIR)
-    AC_SUBST(INTROSPECTION_CFLAGS)
-    AC_SUBST(INTROSPECTION_LIBS)
-    AC_SUBST(INTROSPECTION_MAKEFILE)
-
-    AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes")
-])
-
-
-dnl Usage:
-dnl   GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version])
-
-AC_DEFUN([GOBJECT_INTROSPECTION_CHECK],
-[
-  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1])
-])
-
-dnl Usage:
-dnl   GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version])
-
-
-AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE],
-[
-  _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require])
-])
diff --git a/m4/jhflags.m4 b/m4/jhflags.m4
new file mode 100644 (file)
index 0000000..222e4b0
--- /dev/null
@@ -0,0 +1,21 @@
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS.  If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\   \ @:>@*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $1"
+  AC_MSG_CHECKING([whether [$]CC understands $1])
+  AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+  AC_MSG_RESULT($jh_has_option)
+  if test $jh_has_option = no; then
+    CFLAGS="$save_CFLAGS"
+  fi
+  ;;
+esac])
index ee80844..828104c 100644 (file)
@@ -1,6 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
 # modifications, as long as this notice is preserved.
 
 m4_define([_LT_COPYING], [dnl
-# Copyright (C) 2014 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of of the License, or
-# (at your option) any later version.
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
 #
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program or library that is built
-# using GNU Libtool, you may include this file under the  same
-# distribution terms that you use for the rest of that program.
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
 #
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ])
 
-# serial 58 LT_INIT
+# serial 57 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -59,7 +67,7 @@ esac
 # LT_INIT([OPTIONS])
 # ------------------
 AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
 AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 AC_BEFORE([$0], [LT_LANG])dnl
 AC_BEFORE([$0], [LT_OUTPUT])dnl
@@ -83,7 +91,7 @@ dnl Parse OPTIONS
 _LT_SET_OPTIONS([$0], [$1])
 
 # This can be used to rebuild libtool when needed
-LIBTOOL_DEPS=$ltmain
+LIBTOOL_DEPS="$ltmain"
 
 # Always use our own libtool.
 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -103,43 +111,26 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
 
 
-# _LT_PREPARE_CC_BASENAME
-# -----------------------
-m4_defun([_LT_PREPARE_CC_BASENAME], [
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-func_cc_basename ()
-{
-    for cc_temp in @S|@*""; do
-      case $cc_temp in
-        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-        \-*) ;;
-        *) break;;
-      esac
-    done
-    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-}
-])# _LT_PREPARE_CC_BASENAME
-
-
 # _LT_CC_BASENAME(CC)
 # -------------------
-# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
-# but that macro is also expanded into generated libtool script, which
-# arranges for $SED and $ECHO to be set by different means.
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
 m4_defun([_LT_CC_BASENAME],
-[m4_require([_LT_PREPARE_CC_BASENAME])dnl
-AC_REQUIRE([_LT_DECL_SED])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-func_cc_basename $1
-cc_basename=$func_cc_basename_result
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 ])
 
 
 # _LT_FILEUTILS_DEFAULTS
 # ----------------------
 # It is okay to use these file commands and assume they have been set
-# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
 m4_defun([_LT_FILEUTILS_DEFAULTS],
 [: ${CP="cp -f"}
 : ${MV="mv -f"}
@@ -186,16 +177,15 @@ m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
 m4_require([_LT_WITH_SYSROOT])dnl
-m4_require([_LT_CMD_TRUNCATE])dnl
 
 _LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options that allow our
+# See if we are running on zsh, and set the options which allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}"; then
+if test -n "\${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 ])
-if test -n "${ZSH_VERSION+set}"; then
+if test -n "${ZSH_VERSION+set}" ; then
    setopt NO_GLOB_SUBST
 fi
 
@@ -208,7 +198,7 @@ aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test set != "${COLLECT_NAMES+set}"; then
+  if test "X${COLLECT_NAMES+set}" != Xset; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
@@ -219,14 +209,14 @@ esac
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a '.a' archive for static linking (except MSVC,
+# All known linkers require a `.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 
-with_gnu_ld=$lt_cv_prog_gnu_ld
+with_gnu_ld="$lt_cv_prog_gnu_ld"
 
-old_CC=$CC
-old_CFLAGS=$CFLAGS
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
 
 # Set sane defaults for various variables
 test -z "$CC" && CC=cc
@@ -279,14 +269,14 @@ no_glob_subst='s/\*/\\\*/g'
 
 # _LT_PROG_LTMAIN
 # ---------------
-# Note that this code is called both from 'configure', and 'config.status'
+# Note that this code is called both from `configure', and `config.status'
 # now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# 'config.status' has no value for ac_aux_dir unless we are using Automake,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
 # so we pass a copy along to make sure it has a sensible value anyway.
 m4_defun([_LT_PROG_LTMAIN],
 [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
 _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain=$ac_aux_dir/ltmain.sh
+ltmain="$ac_aux_dir/ltmain.sh"
 ])# _LT_PROG_LTMAIN
 
 
@@ -296,7 +286,7 @@ ltmain=$ac_aux_dir/ltmain.sh
 
 # So that we can recreate a full libtool script including additional
 # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the 'libtool'
+# in macros and then make a single call at the end using the `libtool'
 # label.
 
 
@@ -431,8 +421,8 @@ m4_define([_lt_decl_all_varnames],
 
 # _LT_CONFIG_STATUS_DECLARE([VARNAME])
 # ------------------------------------
-# Quote a variable value, and forward it to 'config.status' so that its
-# declaration there will have the same value as in 'configure'.  VARNAME
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
 # must have a single quote delimited value for this to work.
 m4_define([_LT_CONFIG_STATUS_DECLARE],
 [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
@@ -456,7 +446,7 @@ m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
 # Output comment and list of tags supported by the script
 m4_defun([_LT_LIBTOOL_TAGS],
 [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags='_LT_TAGS'dnl
+available_tags="_LT_TAGS"dnl
 ])
 
 
@@ -484,7 +474,7 @@ m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
 # _LT_LIBTOOL_CONFIG_VARS
 # -----------------------
 # Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
 # script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
 # section) are produced by _LT_LIBTOOL_TAG_VARS.
 m4_defun([_LT_LIBTOOL_CONFIG_VARS],
@@ -510,8 +500,8 @@ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
 # Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
 # variables for single and double quote escaping we saved from calls
 # to _LT_DECL, we can put quote escaped variables declarations
-# into 'config.status', and then the shell code to quote escape them in
-# for loops in 'config.status'.  Finally, any additional code accumulated
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
 # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
 m4_defun([_LT_CONFIG_COMMANDS],
 [AC_PROVIDE_IFELSE([LT_OUTPUT],
@@ -557,7 +547,7 @@ for var in lt_decl_all_varnames([[ \
 ]], lt_decl_quote_varnames); do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -570,7 +560,7 @@ for var in lt_decl_all_varnames([[ \
 ]], lt_decl_dquote_varnames); do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -586,7 +576,7 @@ _LT_OUTPUT_LIBTOOL_INIT
 # Generate a child script FILE with all initialization necessary to
 # reuse the environment learned by the parent script, and make the
 # file executable.  If COMMENT is supplied, it is inserted after the
-# '#!' sequence but before initialization text begins.  After this
+# `#!' sequence but before initialization text begins.  After this
 # macro, additional text can be appended to FILE to form the body of
 # the child script.  The macro ends with non-zero status if the
 # file could not be fully written (such as if the disk is full).
@@ -608,7 +598,7 @@ AS_SHELL_SANITIZE
 _AS_PREPARE
 exec AS_MESSAGE_FD>&1
 _ASEOF
-test 0 = "$lt_write_fail" && chmod +x $1[]dnl
+test $lt_write_fail = 0 && chmod +x $1[]dnl
 m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
 
 # LT_OUTPUT
@@ -631,7 +621,7 @@ exec AS_MESSAGE_LOG_FD>>config.log
 } >&AS_MESSAGE_LOG_FD
 
 lt_cl_help="\
-'$as_me' creates a local libtool stub from the current configuration,
+\`$as_me' creates a local libtool stub from the current configuration,
 for use in further configure time tests before the real libtool is
 generated.
 
@@ -653,7 +643,7 @@ Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
-while test 0 != $[#]
+while test $[#] != 0
 do
   case $[1] in
     --version | --v* | -V )
@@ -666,10 +656,10 @@ do
       lt_cl_silent=: ;;
 
     -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try '$[0] --help' for more information.]) ;;
+Try \`$[0] --help' for more information.]) ;;
 
     *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try '$[0] --help' for more information.]) ;;
+Try \`$[0] --help' for more information.]) ;;
   esac
   shift
 done
@@ -695,7 +685,7 @@ chmod +x "$CONFIG_LT"
 # open by configure.  Here we exec the FD to /dev/null, effectively closing
 # config.log, so it can be properly (re)opened and appended to by config.lt.
 lt_cl_success=:
-test yes = "$silent" &&
+test "$silent" = yes &&
   lt_config_lt_args="$lt_config_lt_args --quiet"
 exec AS_MESSAGE_LOG_FD>/dev/null
 $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
@@ -715,30 +705,27 @@ m4_defun([_LT_CONFIG],
 _LT_CONFIG_SAVE_COMMANDS([
   m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
   m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options that allow our
+    # See if we are running on zsh, and set the options which allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}"; then
+    if test -n "${ZSH_VERSION+set}" ; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile=${ofile}T
+    cfgfile="${ofile}T"
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-# Generated automatically by $as_me ($PACKAGE) $VERSION
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-
-# Provide generalized library-building support services.
-# Written by Gordon Matzigkeit, 1996
 
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
 _LT_COPYING
 _LT_LIBTOOL_TAGS
 
-# Configured defaults for sys_lib_dlsearch_path munging.
-: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
-
 # ### BEGIN LIBTOOL CONFIG
 _LT_LIBTOOL_CONFIG_VARS
 _LT_LIBTOOL_TAG_VARS
@@ -746,24 +733,13 @@ _LT_LIBTOOL_TAG_VARS
 
 _LT_EOF
 
-    cat <<'_LT_EOF' >> "$cfgfile"
-
-# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_PREPARE_MUNGE_PATH_LIST
-_LT_PREPARE_CC_BASENAME
-
-# ### END FUNCTIONS SHARED WITH CONFIGURE
-
-_LT_EOF
-
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test set != "${COLLECT_NAMES+set}"; then
+if test "X${COLLECT_NAMES+set}" != Xset; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -780,6 +756,8 @@ _LT_EOF
   sed '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
+  _LT_PROG_REPLACE_SHELLFNS
+
    mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
@@ -797,6 +775,7 @@ _LT_EOF
 [m4_if([$1], [], [
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'], [])
 ])dnl /_LT_CONFIG_SAVE_COMMANDS
@@ -995,7 +974,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 
     AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
       [lt_cv_apple_cc_single_mod=no
-      if test -z "$LT_MULTI_MODULE"; then
+      if test -z "${LT_MULTI_MODULE}"; then
        # By default we will add the -single_module flag. You can override
        # by either setting the environment variable LT_MULTI_MODULE
        # non-empty at configure time, or by adding -multi_module to the
@@ -1013,7 +992,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
          cat conftest.err >&AS_MESSAGE_LOG_FD
        # Otherwise, if the output was created with a 0 exit code from
        # the compiler, it worked.
-       elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
          lt_cv_apple_cc_single_mod=yes
        else
          cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1031,7 +1010,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
       AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
        [lt_cv_ld_exported_symbols_list=yes],
        [lt_cv_ld_exported_symbols_list=no])
-       LDFLAGS=$save_LDFLAGS
+       LDFLAGS="$save_LDFLAGS"
     ])
 
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
@@ -1053,7 +1032,7 @@ _LT_EOF
       _lt_result=$?
       if test -s conftest.err && $GREP force_load conftest.err; then
        cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
        lt_cv_ld_force_load=yes
       else
        cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1063,32 +1042,32 @@ _LT_EOF
     ])
     case $host_os in
     rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
     darwin1.*)
-      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
     darwin*) # darwin 5.x on
       # if running on 10.5 or later, the deployment target defaults
       # to the OS version, if on x86, and 10.4, the deployment
       # target defaults to 10.4. Don't you love it?
       case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
        10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[[012]][[,.]]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
        10.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
-    if test yes = "$lt_cv_apple_cc_single_mod"; then
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
       _lt_dar_single_mod='$single_module'
     fi
-    if test yes = "$lt_cv_ld_exported_symbols_list"; then
-      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
     else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
     fi
-    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -1108,29 +1087,29 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_automatic, $1)=yes
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test yes = "$lt_cv_ld_force_load"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
     m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
                   [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
   _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
   case $cc_basename in
-     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
+     ifort*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test yes = "$_lt_dar_can_shared"; then
+  if test "$_lt_dar_can_shared" = "yes"; then
     output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
     m4_if([$1], [CXX],
-[   if test yes != "$lt_cv_apple_cc_single_mod"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
     fi
 ],[])
   else
@@ -1150,7 +1129,7 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
 # Allow to override them for all tags through lt_cv_aix_libpath.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
 [m4_require([_LT_DECL_SED])dnl
-if test set = "${lt_cv_aix_libpath+set}"; then
+if test "${lt_cv_aix_libpath+set}" = set; then
   aix_libpath=$lt_cv_aix_libpath
 else
   AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
@@ -1168,7 +1147,7 @@ else
     _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi],[])
   if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
   fi
   ])
   aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
@@ -1188,8 +1167,8 @@ m4_define([_LT_SHELL_INIT],
 # -----------------------
 # Find how we can fake an echo command that does not interpret backslash.
 # In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script that will find a shell with a builtin
-# printf (that we can use as an echo command).
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
 m4_defun([_LT_PROG_ECHO_BACKSLASH],
 [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
@@ -1217,10 +1196,10 @@ fi
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO "$*"
+    $ECHO "$*" 
 }
 
-case $ECHO in
+case "$ECHO" in
   printf*) AC_MSG_RESULT([printf]) ;;
   print*) AC_MSG_RESULT([print -r]) ;;
   *) AC_MSG_RESULT([cat]) ;;
@@ -1246,17 +1225,16 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 AC_DEFUN([_LT_WITH_SYSROOT],
 [AC_MSG_CHECKING([for sysroot])
 AC_ARG_WITH([sysroot],
-[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
-  [Search for dependent libraries within DIR (or the compiler's sysroot
-   if not specified).])],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
 [], [with_sysroot=no])
 
 dnl lt_sysroot will always be passed unquoted.  We quote it here
 dnl in case the user passed a directory name.
 lt_sysroot=
-case $with_sysroot in #(
+case ${with_sysroot} in #(
  yes)
-   if test yes = "$GCC"; then
+   if test "$GCC" = yes; then
      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
    fi
    ;; #(
@@ -1266,14 +1244,14 @@ case $with_sysroot in #(
  no|'')
    ;; #(
  *)
-   AC_MSG_RESULT([$with_sysroot])
+   AC_MSG_RESULT([${with_sysroot}])
    AC_MSG_ERROR([The sysroot must be an absolute path.])
    ;;
 esac
 
  AC_MSG_RESULT([${lt_sysroot:-no}])
 _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and where our libraries should be installed.])])
+[dependent libraries, and in which our libraries should be installed.])])
 
 # _LT_ENABLE_LOCK
 # ---------------
@@ -1281,33 +1259,31 @@ m4_defun([_LT_ENABLE_LOCK],
 [AC_ARG_ENABLE([libtool-lock],
   [AS_HELP_STRING([--disable-libtool-lock],
     [avoid locking (might break parallel builds)])])
-test no = "$enable_libtool_lock" || enable_libtool_lock=yes
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
 case $host in
 ia64-*-hpux*)
-  # Find out what ABI is being produced by ac_compile, and set mode
-  # options accordingly.
+  # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
-       HPUX_IA64_MODE=32
+       HPUX_IA64_MODE="32"
        ;;
       *ELF-64*)
-       HPUX_IA64_MODE=64
+       HPUX_IA64_MODE="64"
        ;;
     esac
   fi
   rm -rf conftest*
   ;;
 *-*-irix6*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
+  # Find out which ABI we are using.
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    if test yes = "$lt_cv_prog_gnu_ld"; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
        *32-bit*)
          LD="${LD-ld} -melf32bsmip"
@@ -1336,46 +1312,9 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-mips64*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
-      *32-bit*)
-       emul="${emul}32"
-       ;;
-      *64-bit*)
-       emul="${emul}64"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *MSB*)
-       emul="${emul}btsmip"
-       ;;
-      *LSB*)
-       emul="${emul}ltsmip"
-       ;;
-    esac
-    case `/usr/bin/file conftest.$ac_objext` in
-      *N32*)
-       emul="${emul}n32"
-       ;;
-    esac
-    LD="${LD-ld} -m $emul"
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.  Note that the listed cases only cover the
-  # situations where additional linker options are needed (such as when
-  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
-  # vice versa); the common cases where no linker options are needed do
-  # not appear in the list.
+  # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
@@ -1385,19 +1324,9 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
-             *x86-64*)
-               LD="${LD-ld} -m elf32_x86_64"
-               ;;
-             *)
-               LD="${LD-ld} -m elf_i386"
-               ;;
-           esac
-           ;;
-         powerpc64le-*linux*)
-           LD="${LD-ld} -m elf32lppclinux"
+           LD="${LD-ld} -m elf_i386"
            ;;
-         powerpc64-*linux*)
+         ppc64-*linux*|powerpc64-*linux*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
@@ -1416,10 +1345,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
-         powerpcle-*linux*)
-           LD="${LD-ld} -m elf64lppc"
-           ;;
-         powerpc-*linux*)
+         ppc*-*linux*|powerpc*-*linux*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
@@ -1437,20 +1363,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
 
 *-*-sco3.2v5*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS=$CFLAGS
+  SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
   AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
     [AC_LANG_PUSH(C)
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
      AC_LANG_POP])
-  if test yes != "$lt_cv_cc_needs_belf"; then
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS=$SAVE_CFLAGS
+    CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
 *-*solaris*)
-  # Find out what ABI is being produced by ac_compile, and set linker
-  # options accordingly.
+  # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
@@ -1458,7 +1383,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
       case $lt_cv_prog_gnu_ld in
       yes*)
         case $host in
-        i?86-*-solaris*|x86_64-*-solaris*)
+        i?86-*-solaris*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
         sparc*-*-solaris*)
@@ -1467,7 +1392,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
         esac
         # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
         if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD=${LD-ld}_sol2
+          LD="${LD-ld}_sol2"
         fi
         ;;
       *)
@@ -1483,7 +1408,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   ;;
 esac
 
-need_locks=$enable_libtool_lock
+need_locks="$enable_libtool_lock"
 ])# _LT_ENABLE_LOCK
 
 
@@ -1502,11 +1427,11 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
      [echo conftest.$ac_objext > conftest.lst
       lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
       AC_TRY_EVAL([lt_ar_try])
-      if test 0 -eq "$ac_status"; then
+      if test "$ac_status" -eq 0; then
        # Ensure the archiver fails upon bogus file names.
        rm -f conftest.$ac_objext libconftest.a
        AC_TRY_EVAL([lt_ar_try])
-       if test 0 -ne "$ac_status"; then
+       if test "$ac_status" -ne 0; then
           lt_cv_ar_at_file=@
         fi
       fi
@@ -1514,7 +1439,7 @@ AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
      ])
   ])
 
-if test no = "$lt_cv_ar_at_file"; then
+if test "x$lt_cv_ar_at_file" = xno; then
   archiver_list_spec=
 else
   archiver_list_spec=$lt_cv_ar_at_file
@@ -1545,7 +1470,7 @@ old_postuninstall_cmds=
 
 if test -n "$RANLIB"; then
   case $host_os in
-  bitrig* | openbsd*)
+  openbsd*)
     old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
@@ -1581,7 +1506,7 @@ AC_CACHE_CHECK([$1], [$2],
   [$2=no
    m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
+   lt_compiler_flag="$3"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -1608,7 +1533,7 @@ AC_CACHE_CHECK([$1], [$2],
    $RM conftest*
 ])
 
-if test yes = "[$]$2"; then
+if test x"[$]$2" = xyes; then
     m4_if([$5], , :, [$5])
 else
     m4_if([$6], , :, [$6])
@@ -1630,7 +1555,7 @@ AC_DEFUN([_LT_LINKER_OPTION],
 m4_require([_LT_DECL_SED])dnl
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
-   save_LDFLAGS=$LDFLAGS
+   save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $3"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -1649,10 +1574,10 @@ AC_CACHE_CHECK([$1], [$2],
      fi
    fi
    $RM -r conftest*
-   LDFLAGS=$save_LDFLAGS
+   LDFLAGS="$save_LDFLAGS"
 ])
 
-if test yes = "[$]$2"; then
+if test x"[$]$2" = xyes; then
     m4_if([$4], , :, [$4])
 else
     m4_if([$5], , :, [$5])
@@ -1673,7 +1598,7 @@ AC_DEFUN([LT_CMD_MAX_LEN],
 AC_MSG_CHECKING([the maximum length of command line arguments])
 AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   i=0
-  teststring=ABCD
+  teststring="ABCD"
 
   case $build_os in
   msdosdjgpp*)
@@ -1713,7 +1638,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1763,23 +1688,22 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len" && \
-       test undefined != "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
       # Make teststring a little bigger before we do anything with it.
       # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8; do
+      for i in 1 2 3 4 5 6 7 8 ; do
         teststring=$teststring$teststring
       done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
                 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test 17 != "$i" # 1/2 MB should be enough
+             test $i != 17 # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
@@ -1795,7 +1719,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   esac
 ])
-if test -n "$lt_cv_sys_max_cmd_len"; then
+if test -n $lt_cv_sys_max_cmd_len ; then
   AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
 else
   AC_MSG_RESULT(none)
@@ -1823,7 +1747,7 @@ m4_defun([_LT_HEADER_DLFCN],
 # ----------------------------------------------------------------
 m4_defun([_LT_TRY_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test yes = "$cross_compiling"; then :
+if test "$cross_compiling" = yes; then :
   [$4]
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -1870,9 +1794,9 @@ else
 #  endif
 #endif
 
-/* When -fvisibility=hidden is used, assume the code has been annotated
+/* When -fvisbility=hidden is used, assume the code has been annotated
    correspondingly for the symbols needed.  */
-#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
 int fnord () __attribute__((visibility("default")));
 #endif
 
@@ -1898,7 +1822,7 @@ int main ()
   return status;
 }]
 _LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -1919,7 +1843,7 @@ rm -fr conftest*
 # ------------------
 AC_DEFUN([LT_SYS_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test yes != "$enable_dlopen"; then
+if test "x$enable_dlopen" != xyes; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -1929,52 +1853,44 @@ else
 
   case $host_os in
   beos*)
-    lt_cv_dlopen=load_add_on
+    lt_cv_dlopen="load_add_on"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ;;
 
   mingw* | pw32* | cegcc*)
-    lt_cv_dlopen=LoadLibrary
+    lt_cv_dlopen="LoadLibrary"
     lt_cv_dlopen_libs=
     ;;
 
   cygwin*)
-    lt_cv_dlopen=dlopen
+    lt_cv_dlopen="dlopen"
     lt_cv_dlopen_libs=
     ;;
 
   darwin*)
-    # if libdl is installed we need to link against it
+  # if libdl is installed we need to link against it
     AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
-    lt_cv_dlopen=dyld
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ])
     ;;
 
-  tpf*)
-    # Don't try to run any link tests for TPF.  We know it's impossible
-    # because TPF is a cross-compiler, and we know how we open DSOs.
-    lt_cv_dlopen=dlopen
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=no
-    ;;
-
   *)
     AC_CHECK_FUNC([shl_load],
-         [lt_cv_dlopen=shl_load],
+         [lt_cv_dlopen="shl_load"],
       [AC_CHECK_LIB([dld], [shl_load],
-           [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
        [AC_CHECK_FUNC([dlopen],
-             [lt_cv_dlopen=dlopen],
+             [lt_cv_dlopen="dlopen"],
          [AC_CHECK_LIB([dl], [dlopen],
-               [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
+               [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
            [AC_CHECK_LIB([svld], [dlopen],
-                 [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
+                 [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
              [AC_CHECK_LIB([dld], [dld_link],
-                   [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
              ])
            ])
          ])
@@ -1983,21 +1899,21 @@ else
     ;;
   esac
 
-  if test no = "$lt_cv_dlopen"; then
-    enable_dlopen=no
-  else
+  if test "x$lt_cv_dlopen" != xno; then
     enable_dlopen=yes
+  else
+    enable_dlopen=no
   fi
 
   case $lt_cv_dlopen in
   dlopen)
-    save_CPPFLAGS=$CPPFLAGS
-    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS=$LDFLAGS
+    save_LDFLAGS="$LDFLAGS"
     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS=$LIBS
+    save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     AC_CACHE_CHECK([whether a program can dlopen itself],
@@ -2007,7 +1923,7 @@ else
            lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
     ])
 
-    if test yes = "$lt_cv_dlopen_self"; then
+    if test "x$lt_cv_dlopen_self" = xyes; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
          lt_cv_dlopen_self_static, [dnl
@@ -2017,9 +1933,9 @@ else
       ])
     fi
 
-    CPPFLAGS=$save_CPPFLAGS
-    LDFLAGS=$save_LDFLAGS
-    LIBS=$save_LIBS
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
     ;;
   esac
 
@@ -2111,8 +2027,8 @@ m4_defun([_LT_COMPILER_FILE_LOCKS],
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 _LT_COMPILER_C_O([$1])
 
-hard_links=nottested
-if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
   AC_MSG_CHECKING([if we can lock with hard links])
   hard_links=yes
@@ -2122,8 +2038,8 @@ if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_loc
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   AC_MSG_RESULT([$hard_links])
-  if test no = "$hard_links"; then
-    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
     need_locks=warn
   fi
 else
@@ -2150,8 +2066,8 @@ objdir=$lt_cv_objdir
 _LT_DECL([], [objdir], [0],
          [The name of the directory that contains temporary libtool files])dnl
 m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
-  [Define to the sub-directory where libtool stores uninstalled libraries.])
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
 ])# _LT_CHECK_OBJDIR
 
 
@@ -2163,15 +2079,15 @@ m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
 _LT_TAGVAR(hardcode_action, $1)=
 if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
    test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
 
   # We can hardcode non-existent directories.
-  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
-     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
     # Linking always hardcodes the temporary library directory.
     _LT_TAGVAR(hardcode_action, $1)=relink
   else
@@ -2185,12 +2101,12 @@ else
 fi
 AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
 
-if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
-   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test yes = "$shlibpath_overrides_runpath" ||
-     test no = "$enable_shared"; then
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -2214,7 +2130,7 @@ else
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
   darwin*)
-    if test -n "$STRIP"; then
+    if test -n "$STRIP" ; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       AC_MSG_RESULT([yes])
@@ -2232,47 +2148,6 @@ _LT_DECL([], [striplib], [1])
 ])# _LT_CMD_STRIPLIB
 
 
-# _LT_PREPARE_MUNGE_PATH_LIST
-# ---------------------------
-# Make sure func_munge_path_list() is defined correctly.
-m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
-[[# func_munge_path_list VARIABLE PATH
-# -----------------------------------
-# VARIABLE is name of variable containing _space_ separated list of
-# directories to be munged by the contents of PATH, which is string
-# having a format:
-# "DIR[:DIR]:"
-#       string "DIR[ DIR]" will be prepended to VARIABLE
-# ":DIR[:DIR]"
-#       string "DIR[ DIR]" will be appended to VARIABLE
-# "DIRP[:DIRP]::[DIRA:]DIRA"
-#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
-#       "DIRA[ DIRA]" will be appended to VARIABLE
-# "DIR[:DIR]"
-#       VARIABLE will be replaced by "DIR[ DIR]"
-func_munge_path_list ()
-{
-    case x@S|@2 in
-    x)
-        ;;
-    *:)
-        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
-        ;;
-    x:*)
-        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
-        ;;
-    *::*)
-        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
-        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
-        ;;
-    *)
-        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
-        ;;
-    esac
-}
-]])# _LT_PREPARE_PATH_LIST
-
-
 # _LT_SYS_DYNAMIC_LINKER([TAG])
 # -----------------------------
 # PORTME Fill in your ld.so characteristics
@@ -2283,18 +2158,17 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
        [], [
-if test yes = "$GCC"; then
+if test "$GCC" = yes; then
   case $host_os in
-    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
-    *) lt_awk_arg='/^libraries:/' ;;
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
   esac
   case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
-    *) lt_sed_strip_eq='s|=/|/|g' ;;
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
   esac
   lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
   case $lt_search_path_spec in
@@ -2310,35 +2184,28 @@ if test yes = "$GCC"; then
     ;;
   esac
   # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary...
+  # and add multilib dir if necessary.
   lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  # ...but if some path component already ends with the multilib dir we assume
-  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
-  case "$lt_multi_os_dir; $lt_search_path_spec " in
-  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
-    lt_multi_os_dir=
-    ;;
-  esac
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
   for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
-    elif test -n "$lt_multi_os_dir"; then
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
       test -d "$lt_sys_path" && \
        lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
   lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS = " "; FS = "/|\n";} {
-  lt_foo = "";
-  lt_count = 0;
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
   for (lt_i = NF; lt_i > 0; lt_i--) {
     if ($lt_i != "" && $lt_i != ".") {
       if ($lt_i == "..") {
         lt_count++;
       } else {
         if (lt_count == 0) {
-          lt_foo = "/" $lt_i lt_foo;
+          lt_foo="/" $lt_i lt_foo;
         } else {
           lt_count--;
         }
@@ -2352,7 +2219,7 @@ BEGIN {RS = " "; FS = "/|\n";} {
   # for these hosts.
   case $host_os in
     mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
   esac
   sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
@@ -2361,7 +2228,7 @@ fi])
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=.so
+shrext_cmds=".so"
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -2378,17 +2245,14 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
-AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
-[User-defined run-time library search path.])
-
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='$libname$release$shared_ext$major'
+  soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
 aix[[4-9]]*)
@@ -2396,91 +2260,41 @@ aix[[4-9]]*)
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test ia64 = "$host_cpu"; then
+  if test "$host_cpu" = ia64; then
     # AIX 5 supports IA64
-    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line '#! .'.  This would cause the generated library to
-    # depend on '.', always an invalid library.  This was fixed in
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[[01]] | aix4.[[01]].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
           echo ' yes '
-          echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
+          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
        :
       else
        can_build_shared=no
       fi
       ;;
     esac
-    # Using Import Files as archive members, it is possible to support
-    # filename-based versioning of shared library archives on AIX. While
-    # this would work for both with and without runtime linking, it will
-    # prevent static linking of such archives. So we do filename-based
-    # shared library versioning with .so extension only, which is used
-    # when both runtime linking and shared linking is enabled.
-    # Unfortunately, runtime linking may impact performance, so we do
-    # not want this to be the default eventually. Also, we use the
-    # versioned .so libs for executables only if there is the -brtl
-    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
-    # To allow for filename-based versioning support, we need to create
-    # libNAME.so.V as an archive file, containing:
-    # *) an Import File, referring to the versioned filename of the
-    #    archive as well as the shared archive member, telling the
-    #    bitwidth (32 or 64) of that shared object, and providing the
-    #    list of exported symbols of that shared object, eventually
-    #    decorated with the 'weak' keyword
-    # *) the shared object with the F_LOADONLY flag set, to really avoid
-    #    it being seen by the linker.
-    # At run time we better use the real file rather than another symlink,
-    # but for link time we create the symlink libNAME.so -> libNAME.so.V
-
-    case $with_aix_soname,$aix_use_runtimelinking in
-    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    aix,yes) # traditional libtool
-      dynamic_linker='AIX unversionable lib.so'
+    if test "$aix_use_runtimelinking" = yes; then
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      ;;
-    aix,no) # traditional AIX only
-      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      ;;
-    svr4,*) # full svr4 only
-      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,yes) # both, prefer svr4
-      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
-      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
-      # unpreferred sharedlib libNAME.a needs extra handling
-      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
-      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
-      # We do not specify a path in Import Files, so LIBPATH fires.
-      shlibpath_overrides_runpath=yes
-      ;;
-    *,no) # both, prefer aix
-      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
-      library_names_spec='$libname$release.a $libname.a'
-      soname_spec='$libname$release$shared_ext$major'
-      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
-      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
-      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
-      ;;
-    esac
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -2490,18 +2304,18 @@ amigaos*)
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='$libname$shared_ext'
+  library_names_spec='${libname}${shared_ext}'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
@@ -2509,8 +2323,8 @@ beos*)
 bsdi[[45]]*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -2522,7 +2336,7 @@ bsdi[[45]]*)
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=.dll
+  shrext_cmds=".dll"
   need_version=no
   need_lib_prefix=no
 
@@ -2531,8 +2345,8 @@ cygwin* | mingw* | pw32* | cegcc*)
     # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -2548,17 +2362,17 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
 m4_if([$1], [],[
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
@@ -2567,8 +2381,8 @@ m4_if([$1], [],[
   *,cl*)
     # Native MSVC
     libname_spec='$name'
-    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
-    library_names_spec='$libname.dll.lib'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
 
     case $build_os in
     mingw*)
@@ -2595,7 +2409,7 @@ m4_if([$1], [],[
       sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       ;;
     *)
-      sys_lib_search_path_spec=$LIB
+      sys_lib_search_path_spec="$LIB"
       if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
         # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -2608,8 +2422,8 @@ m4_if([$1], [],[
     esac
 
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \$file`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname'
@@ -2622,7 +2436,7 @@ m4_if([$1], [],[
 
   *)
     # Assume MSVC wrapper
-    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
   esac
@@ -2635,8 +2449,8 @@ darwin* | rhapsody*)
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$major$shared_ext'
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -2649,8 +2463,8 @@ dgux*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -2668,13 +2482,12 @@ freebsd* | dragonfly*)
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-      soname_spec='$libname$release$shared_ext$major'
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
       need_version=yes
       ;;
   esac
@@ -2699,15 +2512,26 @@ freebsd* | dragonfly*)
   esac
   ;;
 
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 haiku*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=no
+  shlibpath_overrides_runpath=yes
   sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
@@ -2725,15 +2549,14 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
-    if test 32 = "$HPUX_IA64_MODE"; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -2741,8 +2564,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -2751,8 +2574,8 @@ hpux9* | hpux10* | hpux11*)
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
     ;;
   esac
   # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -2765,8 +2588,8 @@ interix[[3-9]]*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -2777,7 +2600,7 @@ irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-       if test yes = "$lt_cv_prog_gnu_ld"; then
+       if test "$lt_cv_prog_gnu_ld" = yes; then
                version_type=linux # correct to gnu/linux during the next big refactor
        else
                version_type=irix
@@ -2785,8 +2608,8 @@ irix5* | irix6* | nonstopux*)
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -2805,8 +2628,8 @@ irix5* | irix6* | nonstopux*)
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
-  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
   hardcode_into_libs=yes
   ;;
 
@@ -2815,33 +2638,13 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-linux*android*)
-  version_type=none # Android doesn't support versioned libraries.
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='$libname$release$shared_ext'
-  soname_spec='$libname$release$shared_ext'
-  finish_cmds=
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  dynamic_linker='Android linker'
-  # Don't embed -rpath directories since the linker doesn't support them.
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-  ;;
-
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -2866,12 +2669,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Ideally, we could use ldconfig to report *all* directores which are
-  # searched for libraries, however this is still not possible.  Aside from not
-  # being certain /sbin/ldconfig is available, command
-  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
-  # even though it is searched at run-time.  Try to do the best guess by
-  # appending ld.so.conf contents (and includes) to the search path.
+  # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -2903,12 +2701,12 @@ netbsd*)
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-    soname_spec='$libname$release$shared_ext$major'
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -2918,7 +2716,7 @@ netbsd*)
 
 newsos6)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -2927,68 +2725,58 @@ newsos6)
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd* | bitrig*)
+openbsd*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec=/usr/lib
+  sys_lib_dlsearch_path_spec="/usr/lib"
   need_lib_prefix=no
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
-    need_version=no
-  else
-    need_version=yes
-  fi
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
   ;;
 
 os2*)
   libname_spec='$name'
-  version_type=windows
-  shrext_cmds=.dll
-  need_version=no
+  shrext_cmds=".dll"
   need_lib_prefix=no
-  # OS/2 can only load a DLL with a base name of 8 characters or less.
-  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
-    v=$($ECHO $release$versuffix | tr -d .-);
-    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
-    $ECHO $n$v`$shared_ext'
-  library_names_spec='${libname}_dll.$libext'
+  library_names_spec='$libname${shared_ext} $libname.a'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=BEGINLIBPATH
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-  postinstall_cmds='base_file=`basename \$file`~
-    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
-    dldir=$destdir/`dirname \$dlpath`~
-    test -d \$dldir || mkdir -p \$dldir~
-    $install_prog $dir/$dlname \$dldir/$dlname~
-    chmod a+x \$dldir/$dlname~
-    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-    fi'
-  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
-    dlpath=$dir/\$dldll~
-    $RM \$dlpath'
+  shlibpath_var=LIBPATH
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='$libname$release$shared_ext$major'
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
 rdos*)
@@ -2999,8 +2787,8 @@ solaris*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -3010,11 +2798,11 @@ solaris*)
 
 sunos4*)
   version_type=sunos
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test yes = "$with_gnu_ld"; then
+  if test "$with_gnu_ld" = yes; then
     need_lib_prefix=no
   fi
   need_version=yes
@@ -3022,8 +2810,8 @@ sunos4*)
 
 sysv4 | sysv4.3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -3044,24 +2832,24 @@ sysv4 | sysv4.3*)
   ;;
 
 sysv4*MP*)
-  if test -d /usr/necthen
+  if test -d /usr/nec ;then
     version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
-    soname_spec='$libname$shared_ext.$major'
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=sco
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test yes = "$with_gnu_ld"; then
+  if test "$with_gnu_ld" = yes; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -3079,7 +2867,7 @@ tpf*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
@@ -3087,8 +2875,8 @@ tpf*)
 
 uts4*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
-  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -3097,30 +2885,20 @@ uts4*)
   ;;
 esac
 AC_MSG_RESULT([$dynamic_linker])
-test no = "$dynamic_linker" && can_build_shared=no
+test "$dynamic_linker" = no && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test yes = "$GCC"; then
+if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
-  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
 fi
-
-if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
-  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
 fi
 
-# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
-configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
-
-# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
-func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
-
-# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
-configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
-
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -3153,41 +2931,39 @@ _LT_DECL([], [hardcode_into_libs], [0],
     [Whether we should hardcode library paths into libraries])
 _LT_DECL([], [sys_lib_search_path_spec], [2],
     [Compile-time system search path for libraries])
-_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
-    [Detected run-time system search path for libraries])
-_LT_DECL([], [configure_time_lt_sys_library_path], [2],
-    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
 ])# _LT_SYS_DYNAMIC_LINKER
 
 
 # _LT_PATH_TOOL_PREFIX(TOOL)
 # --------------------------
-# find a file program that can recognize shared library
+# find a file program which can recognize shared library
 AC_DEFUN([_LT_PATH_TOOL_PREFIX],
 [m4_require([_LT_DECL_EGREP])dnl
 AC_MSG_CHECKING([for $1])
 AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
 [case $MAGIC_CMD in
 [[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD=$MAGIC_CMD
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
 dnl $ac_dummy forces splitting on constant user-supplied paths.
 dnl POSIX.2 word splitting is done only on the output of word expansions,
 dnl not every word.  This closes a longstanding sh security hole.
   ac_dummy="m4_if([$2], , $PATH, [$2])"
   for ac_dir in $ac_dummy; do
-    IFS=$lt_save_ifs
+    IFS="$lt_save_ifs"
     test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$1"; then
-      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
       if test -n "$file_magic_test_file"; then
        case $deplibs_check_method in
        "file_magic "*)
          file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
          if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
            $EGREP "$file_magic_regex" > /dev/null; then
            :
@@ -3210,11 +2986,11 @@ _LT_EOF
       break
     fi
   done
-  IFS=$lt_save_ifs
-  MAGIC_CMD=$lt_save_MAGIC_CMD
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
   ;;
 esac])
-MAGIC_CMD=$lt_cv_path_MAGIC_CMD
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
   AC_MSG_RESULT($MAGIC_CMD)
 else
@@ -3232,7 +3008,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
 
 # _LT_PATH_MAGIC
 # --------------
-# find a file program that can recognize a shared library
+# find a file program which can recognize a shared library
 m4_defun([_LT_PATH_MAGIC],
 [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
 if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -3259,16 +3035,16 @@ m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
        [assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test no = "$withval" || with_gnu_ld=yes],
+    [test "$withval" = no || with_gnu_ld=yes],
     [with_gnu_ld=no])dnl
 
 ac_prog=ld
-if test yes = "$GCC"; then
+if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   AC_MSG_CHECKING([for ld used by $CC])
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return, which upsets mingw
+    # gcc leaves a trailing carriage return which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -3282,7 +3058,7 @@ if test yes = "$GCC"; then
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
        ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD=$ac_prog
+      test -z "$LD" && LD="$ac_prog"
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -3293,37 +3069,37 @@ if test yes = "$GCC"; then
     with_gnu_ld=unknown
     ;;
   esac
-elif test yes = "$with_gnu_ld"; then
+elif test "$with_gnu_ld" = yes; then
   AC_MSG_CHECKING([for GNU ld])
 else
   AC_MSG_CHECKING([for non-GNU ld])
 fi
 AC_CACHE_VAL(lt_cv_path_LD,
 [if test -z "$LD"; then
-  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS=$lt_save_ifs
+    IFS="$lt_save_ifs"
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD=$ac_dir/$ac_prog
+      lt_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-       test no != "$with_gnu_ld" && break
+       test "$with_gnu_ld" != no && break
        ;;
       *)
-       test yes != "$with_gnu_ld" && break
+       test "$with_gnu_ld" != yes && break
        ;;
       esac
     fi
   done
-  IFS=$lt_save_ifs
+  IFS="$lt_save_ifs"
 else
-  lt_cv_path_LD=$LD # Let the user override the test with a path.
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
 fi])
-LD=$lt_cv_path_LD
+LD="$lt_cv_path_LD"
 if test -n "$LD"; then
   AC_MSG_RESULT($LD)
 else
@@ -3377,13 +3153,13 @@ esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
   cygwin* | mingw* | pw32* | cegcc*)
-    if test yes != "$GCC"; then
+    if test "$GCC" != yes; then
       reload_cmds=false
     fi
     ;;
   darwin*)
-    if test yes = "$GCC"; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -3394,43 +3170,6 @@ _LT_TAGDECL([], [reload_cmds], [2])dnl
 ])# _LT_CMD_RELOAD
 
 
-# _LT_PATH_DD
-# -----------
-# find a working dd
-m4_defun([_LT_PATH_DD],
-[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
-[printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-: ${lt_DD:=$DD}
-AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
-[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
-fi])
-rm -f conftest.i conftest2.i conftest.out])
-])# _LT_PATH_DD
-
-
-# _LT_CMD_TRUNCATE
-# ----------------
-# find command to truncate a binary pipe
-m4_defun([_LT_CMD_TRUNCATE],
-[m4_require([_LT_PATH_DD])
-AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
-[printf 0123456789abcdef0123456789abcdef >conftest.i
-cat conftest.i conftest.i >conftest2.i
-lt_cv_truncate_bin=
-if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
-  cmp -s conftest.i conftest.out \
-  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
-fi
-rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
-_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
-  [Command to truncate a binary pipe])
-])# _LT_CMD_TRUNCATE
-
-
 # _LT_CHECK_MAGIC_METHOD
 # ----------------------
 # how to check for library dependencies
@@ -3446,13 +3185,13 @@ lt_cv_deplibs_check_method='unknown'
 # Need to set the preceding variable on all platforms that support
 # interlibrary dependencies.
 # 'none' -- dependencies not supported.
-# 'unknown' -- same as none, but documents that we really don't know.
+# `unknown' -- same as none, but documents that we really don't know.
 # 'pass_all' -- all dependencies passed with no checks.
 # 'test_compile' -- check by making test program.
 # 'file_magic [[regex]]' -- check by looking for files in library path
-# that responds to the $file_magic_cmd with a given extended regex.
-# If you have 'file' or equivalent on your system and you're not sure
-# whether 'pass_all' will *always* work, you probably want this one.
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
 
 case $host_os in
 aix[[4-9]]*)
@@ -3479,7 +3218,8 @@ mingw* | pw32*)
   # Base MSYS/MinGW do not provide the 'file' command needed by
   # func_win32_libid shell function, so use a weaker test based on 'objdump',
   # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
@@ -3515,6 +3255,10 @@ freebsd* | dragonfly*)
   fi
   ;;
 
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3553,7 +3297,7 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -3575,8 +3319,8 @@ newos6*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-openbsd* | bitrig*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
   else
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
@@ -3629,9 +3373,6 @@ sysv4 | sysv4.3*)
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
-os2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 esac
 ])
 
@@ -3672,38 +3413,33 @@ AC_DEFUN([LT_PATH_NM],
 AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
 [if test -n "$NM"; then
   # Let the user override the test.
-  lt_cv_path_NM=$NM
+  lt_cv_path_NM="$NM"
 else
-  lt_nm_to_check=${ac_tool_prefix}nm
+  lt_nm_to_check="${ac_tool_prefix}nm"
   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
     for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS=$lt_save_ifs
+      IFS="$lt_save_ifs"
       test -z "$ac_dir" && ac_dir=.
-      tmp_nm=$ac_dir/$lt_tmp_nm
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
        # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the 'sed 1q' prevents false positives on HP-UX, which says:
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
        #   nm: unknown option "B" ignored
        # Tru64's nm complains that /dev/null is an invalid object file
-       # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
-       case $build_os in
-       mingw*) lt_bad_file=conftest.nm/nofile ;;
-       *) lt_bad_file=/dev/null ;;
-       esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
-       *$lt_bad_file* | *'Invalid file or object type'*)
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
          lt_cv_path_NM="$tmp_nm -B"
-         break 2
+         break
          ;;
        *)
          case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
          */dev/null*)
            lt_cv_path_NM="$tmp_nm -p"
-           break 2
+           break
            ;;
          *)
            lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3714,21 +3450,21 @@ else
        esac
       fi
     done
-    IFS=$lt_save_ifs
+    IFS="$lt_save_ifs"
   done
   : ${lt_cv_path_NM=no}
 fi])
-if test no != "$lt_cv_path_NM"; then
-  NM=$lt_cv_path_NM
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
   if test -n "$DUMPBIN"; then :
     # Let the user override the test.
   else
     AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
     *COFF*)
-      DUMPBIN="$DUMPBIN -symbols -headers"
+      DUMPBIN="$DUMPBIN -symbols"
       ;;
     *)
       DUMPBIN=:
@@ -3736,8 +3472,8 @@ else
     esac
   fi
   AC_SUBST([DUMPBIN])
-  if test : != "$DUMPBIN"; then
-    NM=$DUMPBIN
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
   fi
 fi
 test -z "$NM" && NM=nm
@@ -3783,8 +3519,8 @@ lt_cv_sharedlib_from_linklib_cmd,
 
 case $host_os in
 cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh;
-  # decide which one to use based on capabilities of $DLLTOOL
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
   case `$DLLTOOL --help 2>&1` in
   *--identify-strict*)
     lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -3796,7 +3532,7 @@ cygwin* | mingw* | pw32* | cegcc*)
   ;;
 *)
   # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd=$ECHO
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
   ;;
 esac
 ])
@@ -3823,28 +3559,13 @@ AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool
     lt_cv_path_mainfest_tool=yes
   fi
   rm -f conftest*])
-if test yes != "$lt_cv_path_mainfest_tool"; then
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
   MANIFEST_TOOL=:
 fi
 _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
 ])# _LT_PATH_MANIFEST_TOOL
 
 
-# _LT_DLL_DEF_P([FILE])
-# ---------------------
-# True iff FILE is a Windows DLL '.def' file.
-# Keep in sync with func_dll_def_p in the libtool script
-AC_DEFUN([_LT_DLL_DEF_P],
-[dnl
-  test DEF = "`$SED -n dnl
-    -e '\''s/^[[        ]]*//'\'' dnl Strip leading whitespace
-    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
-    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[  ]].*\)*$/DEF/p'\'' dnl
-    -e q dnl                          Only consider the first "real" line
-    $1`" dnl
-])# _LT_DLL_DEF_P
-
-
 # LT_LIB_M
 # --------
 # check for math library
@@ -3856,11 +3577,11 @@ case $host in
   # These system don't have libm, or don't need it
   ;;
 *-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
   AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
   ;;
 *)
-  AC_CHECK_LIB(m, cos, LIBM=-lm)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
   ;;
 esac
 AC_SUBST([LIBM])
@@ -3879,7 +3600,7 @@ m4_defun([_LT_COMPILER_NO_RTTI],
 
 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
 
-if test yes = "$GCC"; then
+if test "$GCC" = yes; then
   case $cc_basename in
   nvcc*)
     _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
@@ -3931,7 +3652,7 @@ cygwin* | mingw* | pw32* | cegcc*)
   symcode='[[ABCDGISTW]]'
   ;;
 hpux*)
-  if test ia64 = "$host_cpu"; then
+  if test "$host_cpu" = ia64; then
     symcode='[[ABCDEGRST]]'
   fi
   ;;
@@ -3964,44 +3685,14 @@ case `$NM -V 2>&1` in
   symcode='[[ABCDGIRSTW]]' ;;
 esac
 
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
-  # Adjust the below global symbol transforms to fixup imported variables.
-  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
-  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
-  lt_c_name_lib_hook="\
-  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
-  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
-else
-  # Disable hooks by default.
-  lt_cv_sys_global_symbol_to_import=
-  lt_cdecl_hook=
-  lt_c_name_hook=
-  lt_c_name_lib_hook=
-fi
-
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
-$lt_cdecl_hook\
-" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
-$lt_c_name_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
-
-# Transform an extracted symbol line into symbol name with lib prefix and
-# symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
-$lt_c_name_lib_hook\
-" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
-" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
-" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -4019,24 +3710,21 @@ for ac_symprfx in "" "_"; do
 
   # Write the raw and C identifiers.
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function,
-    # D for any global variable and I for any imported variable.
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
     # Also find C++ and __fastcall symbols from MSVC++,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
 "     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
-"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
-"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
 "     {if(hide[section]) next};"\
-"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
-"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
-"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -4076,11 +3764,11 @@ _LT_EOF
        if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
          cat <<_LT_EOF > conftest.$ac_ext
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
-/* DATA imports from DLLs on WIN32 can't be const, because runtime
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT@&t@_DLSYM_CONST
-#elif defined __osf__
+#elif defined(__osf__)
 /* This system does not cope well with relocations in const data.  */
 # define LT@&t@_DLSYM_CONST
 #else
@@ -4106,7 +3794,7 @@ lt__PROGRAM__LTX_preloaded_symbols[[]] =
 {
   { "@PROGRAM@", (void *) 0 },
 _LT_EOF
-         $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+         $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
          cat <<\_LT_EOF >> conftest.$ac_ext
   {0, (void *) 0}
 };
@@ -4126,9 +3814,9 @@ _LT_EOF
          mv conftest.$ac_objext conftstm.$ac_objext
          lt_globsym_save_LIBS=$LIBS
          lt_globsym_save_CFLAGS=$CFLAGS
-         LIBS=conftstm.$ac_objext
+         LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-         if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
+         if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
            pipe_works=yes
          fi
          LIBS=$lt_globsym_save_LIBS
@@ -4149,7 +3837,7 @@ _LT_EOF
   rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
-  if test yes = "$pipe_works"; then
+  if test "$pipe_works" = yes; then
     break
   else
     lt_cv_sys_global_symbol_pipe=
@@ -4176,16 +3864,12 @@ _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
     [Take the output of nm and produce a listing of raw symbols and C names])
 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
     [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
-    [Transform the output of nm into a list of symbols to manually relocate])
 _LT_DECL([global_symbol_to_c_name_address],
     [lt_cv_sys_global_symbol_to_c_name_address], [1],
     [Transform the output of nm in a C name address pair])
 _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
     [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
     [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
-    [The name lister interface])
 _LT_DECL([], [nm_file_list_spec], [1],
     [Specify filename containing input files for $NM])
 ]) # _LT_CMD_GLOBAL_SYMBOLS
@@ -4201,18 +3885,17 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)=
 
 m4_if([$1], [CXX], [
   # C++ specific cases for pic, static, wl, etc.
-  if test yes = "$GXX"; then
+  if test "$GXX" = yes; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
     aix*)
       # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
+      if test "$host_cpu" = ia64; then
        # AIX 5 now supports IA64 processor
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -4223,8 +3906,8 @@ m4_if([$1], [CXX], [
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -4240,11 +3923,6 @@ m4_if([$1], [CXX], [
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
        [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -4294,7 +3972,7 @@ m4_if([$1], [CXX], [
     case $host_os in
       aix[[4-9]]*)
        # All AIX code is PIC.
-       if test ia64 = "$host_cpu"; then
+       if test "$host_cpu" = ia64; then
          # AIX 5 now supports IA64 processor
          _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
        else
@@ -4335,14 +4013,14 @@ m4_if([$1], [CXX], [
        case $cc_basename in
          CC*)
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
-           if test ia64 != "$host_cpu"; then
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
              _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
            fi
            ;;
          aCC*)
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
            case $host_cpu in
            hppa*64*|ia64*)
              # +Z the default
@@ -4371,7 +4049,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
        case $cc_basename in
          KCC*)
            # KAI C++ Compiler
@@ -4379,7 +4057,7 @@ m4_if([$1], [CXX], [
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
            ;;
          ecpc* )
-           # old Intel C++ for x86_64, which still supported -KPIC.
+           # old Intel C++ for x86_64 which still supported -KPIC.
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -4524,18 +4202,17 @@ m4_if([$1], [CXX], [
   fi
 ],
 [
-  if test yes = "$GCC"; then
+  if test "$GCC" = yes; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test ia64 = "$host_cpu"; then
+      if test "$host_cpu" = ia64; then
        # AIX 5 now supports IA64 processor
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -4546,8 +4223,8 @@ m4_if([$1], [CXX], [
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the '-m68020' flag to GCC prevents building anything better,
-            # like '-m68040'.
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -4564,11 +4241,6 @@ m4_if([$1], [CXX], [
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
        [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
       ;;
 
     darwin* | rhapsody*)
@@ -4639,7 +4311,7 @@ m4_if([$1], [CXX], [
     case $host_os in
     aix*)
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test ia64 = "$host_cpu"; then
+      if test "$host_cpu" = ia64; then
        # AIX 5 now supports IA64 processor
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       else
@@ -4647,30 +4319,11 @@ m4_if([$1], [CXX], [
       fi
       ;;
 
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      case $cc_basename in
-      nagfor*)
-        # NAG Fortran compiler
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      esac
-      ;;
-
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       m4_if([$1], [GCJ], [],
        [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      case $host_os in
-      os2*)
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
-       ;;
-      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -4686,7 +4339,7 @@ m4_if([$1], [CXX], [
        ;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -4695,9 +4348,9 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       case $cc_basename in
-      # old Intel for x86_64, which still supported -KPIC.
+      # old Intel for x86_64 which still supported -KPIC.
       ecc*)
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4722,12 +4375,6 @@ m4_if([$1], [CXX], [
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
        ;;
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-       ;;
       pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
        # which looks to be a dead project)
@@ -4825,7 +4472,7 @@ m4_if([$1], [CXX], [
       ;;
 
     sysv4*MP*)
-      if test -d /usr/necthen
+      if test -d /usr/nec ;then
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
@@ -4854,7 +4501,7 @@ m4_if([$1], [CXX], [
   fi
 ])
 case $host_os in
-  # For platforms that do not support PIC, -DPIC is meaningless:
+  # For platforms which do not support PIC, -DPIC is meaningless:
   *djgpp*)
     _LT_TAGVAR(lt_prog_compiler_pic, $1)=
     ;;
@@ -4920,21 +4567,17 @@ m4_if([$1], [CXX], [
   case $host_os in
   aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-    # Without the "-l" option, or with the "-B" option, AIX nm treats
-    # weak defined symbols like other global defined symbols, whereas
-    # GNU nm marks them as "W".
-    # While the 'weak' keyword is ignored in the Export File, we need
-    # it in the Import File for the 'aix-soname' feature, so we have
-    # to replace the "-B" option with "-P" for AIX nm.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     else
-      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
@@ -4983,9 +4626,9 @@ m4_if([$1], [CXX], [
   # included in the symbol list
   _LT_TAGVAR(include_expsyms, $1)=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ' (' and ')$', so one must not match beginning or
-  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
-  # as well as any symbol that contains 'd'.
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
   _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -5001,7 +4644,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test yes != "$GCC"; then
+    if test "$GCC" != yes; then
       with_gnu_ld=no
     fi
     ;;
@@ -5009,7 +4652,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd* | bitrig*)
+  openbsd*)
     with_gnu_ld=no
     ;;
   linux* | k*bsd*-gnu | gnu*)
@@ -5022,7 +4665,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
   # On some targets, GNU ld is compatible enough with the native linker
   # that we're better off using the native interface for both.
   lt_use_gnu_ld_interface=no
-  if test yes = "$with_gnu_ld"; then
+  if test "$with_gnu_ld" = yes; then
     case $host_os in
       aix*)
        # The AIX port of GNU ld has always aspired to compatibility
@@ -5044,24 +4687,24 @@ dnl Note also adjust exclude_expsyms for C++ above.
     esac
   fi
 
-  if test yes = "$lt_use_gnu_ld_interface"; then
+  if test "$lt_use_gnu_ld_interface" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='$wl'
+    wlarc='${wl}'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
     else
       _LT_TAGVAR(whole_archive_flag_spec, $1)=
     fi
     supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+    case `$LD -v 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -5074,7 +4717,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
     case $host_os in
     aix[[3-9]]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test ia64 != "$host_cpu"; then
+      if test "$host_cpu" != ia64; then
        _LT_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
@@ -5093,7 +4736,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -5109,7 +4752,7 @@ _LT_EOF
        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
        # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
        # support --undefined.  This deserves some investigation.  FIXME
-       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -5119,7 +4762,7 @@ _LT_EOF
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -5127,89 +4770,61 @@ _LT_EOF
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file, use it as
-       # is; otherwise, prepend EXPORTS...
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-          cp $export_symbols $output_objdir/$soname.def;
-        else
-          echo EXPORTS > $output_objdir/$soname.def;
-          cat $export_symbols >> $output_objdir/$soname.def;
-        fi~
-        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
     haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      shrext_cmds=.dll
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
     interix[[3-9]]*)
       _LT_TAGVAR(hardcode_direct, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test linux-dietlibc = "$host_os"; then
+      if test "$host_os" = linux-dietlibc; then
        case $cc_basename in
          diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
        esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test no = "$tmp_diet"
+        && test "$tmp_diet" = no
       then
        tmp_addflag=' $pic_flag'
        tmp_sharedflag='-shared'
        case $cc_basename,$host_cpu in
         pgcc*)                         # Portland Group C compiler
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          tmp_addflag=' $pic_flag'
          ;;
        pgf77* | pgf90* | pgf95* | pgfortran*)
                                        # Portland Group f77 and f90 compilers
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          tmp_addflag=' $pic_flag -Mnomain' ;;
        ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
          tmp_addflag=' -i_dynamic' ;;
@@ -5220,47 +4835,42 @@ _LT_EOF
        lf95*)                          # Lahey Fortran 8.1
          _LT_TAGVAR(whole_archive_flag_spec, $1)=
          tmp_sharedflag='--shared' ;;
-        nagfor*)                        # NAGFOR 5.3
-          tmp_sharedflag='-Wl,-shared' ;;
        xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
          tmp_sharedflag='-qmkshrobj'
          tmp_addflag= ;;
        nvcc*)  # Cuda Compiler Driver 2.2
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          _LT_TAGVAR(compiler_needs_object, $1)=yes
          ;;
        esac
        case `$CC -V 2>&1 | sed 5q` in
        *Sun\ C*)                       # Sun C 5.9
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          _LT_TAGVAR(compiler_needs_object, $1)=yes
          tmp_sharedflag='-G' ;;
        *Sun\ F*)                       # Sun Fortran 8.3
          tmp_sharedflag='-G' ;;
        esac
-       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
-        if test yes = "$supports_anon_versioning"; then
+        if test "x$supports_anon_versioning" = xyes; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-            echo "local: *; };" >> $output_objdir/$libname.ver~
-            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
         fi
 
        case $cc_basename in
-       tcc*)
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
-         ;;
        xlf* | bgf* | bgxlf* | mpixlf*)
          # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
          _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
          _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-         if test yes = "$supports_anon_versioning"; then
+         if test "x$supports_anon_versioning" = xyes; then
            _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-              echo "local: *; };" >> $output_objdir/$libname.ver~
-              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
          fi
          ;;
        esac
@@ -5274,8 +4884,8 @@ _LT_EOF
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -5293,8 +4903,8 @@ _LT_EOF
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -5306,7 +4916,7 @@ _LT_EOF
        _LT_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -5321,9 +4931,9 @@ _LT_EOF
          # DT_RUNPATH tag from executables and libraries.  But doing so
          # requires that you compile everything twice, which is a pain.
          if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
          else
            _LT_TAGVAR(ld_shlibs, $1)=no
          fi
@@ -5340,15 +4950,15 @@ _LT_EOF
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
     esac
 
-    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
       runpath_var=
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       _LT_TAGVAR(export_dynamic_flag_spec, $1)=
@@ -5364,7 +4974,7 @@ _LT_EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
        # Neither direct hardcoding nor static linking is supported with a
        # broken collect2.
        _LT_TAGVAR(hardcode_direct, $1)=unsupported
@@ -5372,57 +4982,34 @@ _LT_EOF
       ;;
 
     aix[[4-9]]*)
-      if test ia64 = "$host_cpu"; then
+      if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
        aix_use_runtimelinking=no
        exp_sym_flag='-Bexport'
-       no_entry_flag=
+       no_entry_flag=""
       else
        # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to GNU nm, but means don't demangle to AIX nm.
-       # Without the "-l" option, or with the "-B" option, AIX nm treats
-       # weak defined symbols like other global defined symbols, whereas
-       # GNU nm marks them as "W".
-       # While the 'weak' keyword is ignored in the Export File, we need
-       # it in the Import File for the 'aix-soname' feature, so we have
-       # to replace the "-B" option with "-P" for AIX nm.
+       # -C means demangle to AIX nm, but means don't demangle with GNU nm
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        else
-         _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        fi
        aix_use_runtimelinking=no
 
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # have runtime linking enabled, and use it for executables.
-       # For shared libraries, we enable/disable runtime linking
-       # depending on the kind of the shared library created -
-       # when "with_aix_soname,aix_use_runtimelinking" is:
-       # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "aix,yes"  lib.so          shared, rtl:yes, for executables
-       #            lib.a           static archive
-       # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-       #            lib.a(lib.so.V) shared, rtl:no,  for executables
-       # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a(lib.so.V) shared, rtl:no
-       # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-       #            lib.a           static archive
+       # need to do runtime linking.
        case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
          for ld_flag in $LDFLAGS; do
-         if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
            aix_use_runtimelinking=yes
            break
          fi
          done
-         if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-           # With aix-soname=svr4, we create the lib.so.V shared archives only,
-           # so we don't have lib.a shared libs to link our executables.
-           # We have to force runtime linking in this case.
-           aix_use_runtimelinking=yes
-           LDFLAGS="$LDFLAGS -Wl,-brtl"
-         fi
          ;;
        esac
 
@@ -5441,21 +5028,13 @@ _LT_EOF
       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
-      case $with_aix_soname,$aix_use_runtimelinking in
-      aix,*) ;; # traditional, no import file
-      svr4,* | *,yes) # use import file
-       # The Import File defines what to hardcode.
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-       ;;
-      esac
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
 
-      if test yes = "$GCC"; then
+      if test "$GCC" = yes; then
        case $host_os in aix4.[[012]]|aix4.[[012]].*)
        # We only want to do this on AIX 4.2 and lower, the check
        # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
+         collect2name=`${CC} -print-prog-name=collect2`
          if test -f "$collect2name" &&
           strings "$collect2name" | $GREP resolve_lib_name >/dev/null
          then
@@ -5474,80 +5053,62 @@ _LT_EOF
          ;;
        esac
        shared_flag='-shared'
-       if test yes = "$aix_use_runtimelinking"; then
-         shared_flag="$shared_flag "'$wl-G'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
        fi
-       # Need to ensure runtime linking is disabled for the traditional
-       # shared library, or the linker may eventually find shared libraries
-       # /with/ Import File - we do not want to mix them.
-       shared_flag_aix='-shared'
-       shared_flag_svr4='-shared $wl-G'
+       _LT_TAGVAR(link_all_deplibs, $1)=no
       else
        # not using gcc
-       if test ia64 = "$host_cpu"; then
+       if test "$host_cpu" = ia64; then
        # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
        # chokes on -Wl,-G. The following line is correct:
          shared_flag='-G'
        else
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag='$wl-G'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
          else
-           shared_flag='$wl-bM:SRE'
+           shared_flag='${wl}-bM:SRE'
          fi
-         shared_flag_aix='$wl-bM:SRE'
-         shared_flag_svr4='$wl-G'
        fi
       fi
 
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+      if test "$aix_use_runtimelinking" = yes; then
        # Warning - without using the other runtime loading flags (-brtl),
        # -berok will link without error, but may produce a broken library.
        _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
         _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
       else
-       if test ia64 = "$host_cpu"; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+       if test "$host_cpu" = ia64; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
          _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
        else
         # Determine the default libpath from the value encoded in an
         # empty executable.
         _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
          # Warning - without using the other run time loading flags,
          # -berok will link without error, but may produce a broken library.
-         _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
-         _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
-         if test yes = "$with_gnu_ld"; then
+         _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+         _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
            # We only use this code for GNU lds that support --whole-archive.
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
          else
            # Exported symbols can be pulled into shared objects from archives
            _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
          fi
          _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-         # -brtl affects multiple linker settings, -berok does not and is overridden later
-         compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
-         if test svr4 != "$with_aix_soname"; then
-           # This is similar to how AIX traditionally builds its shared libraries.
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-         fi
-         if test aix != "$with_aix_soname"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-         else
-           # used by -dlpreopen to get the symbols
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-         fi
-         _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+         # This is similar to how AIX traditionally builds its shared libraries.
+         _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
        fi
       fi
       ;;
@@ -5556,7 +5117,7 @@ _LT_EOF
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -5586,17 +5147,16 @@ _LT_EOF
        # Tell ltmain to make .lib files, not .a files.
        libext=lib
        # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
+       shrext_cmds=".dll"
        # FIXME: Setting linknames here is a bad hack.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-       _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-            cp "$export_symbols" "$output_objdir/$soname.def";
-            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-          else
-            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-          fi~
-          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-          linknames='
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
        # The linker will not automatically build a static lib if we build a DLL.
        # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -5605,18 +5165,18 @@ _LT_EOF
        # Don't use ranlib
        _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
        _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-          lt_tool_outputfile="@TOOL_OUTPUT@"~
-          case $lt_outputfile in
-            *.exe|*.EXE) ;;
-            *)
-              lt_outputfile=$lt_outputfile.exe
-              lt_tool_outputfile=$lt_tool_outputfile.exe
-              ;;
-          esac~
-          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-            $RM "$lt_outputfile.manifest";
-          fi'
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
        ;;
       *)
        # Assume MSVC wrapper
@@ -5625,7 +5185,7 @@ _LT_EOF
        # Tell ltmain to make .lib files, not .a files.
        libext=lib
        # Tell ltmain to make .dll files, not .so files.
-       shrext_cmds=.dll
+       shrext_cmds=".dll"
        # FIXME: Setting linknames here is a bad hack.
        _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
        # The linker will automatically build a .lib file if we build a DLL.
@@ -5675,33 +5235,33 @@ _LT_EOF
       ;;
 
     hpux9*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       else
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_direct, $1)=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       ;;
 
     hpux10*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
        _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test no = "$with_gnu_ld"; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
        _LT_TAGVAR(hardcode_direct, $1)=yes
        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
        # hardcode_minus_L: Not really in the search PATH,
        # but as the default location of the library.
        _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5709,25 +5269,25 @@ _LT_EOF
       ;;
 
     hpux11*)
-      if test yes,no = "$GCC,$with_gnu_ld"; then
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
        case $host_cpu in
        hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        esac
       else
        case $host_cpu in
        hppa*64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        *)
        m4_if($1, [], [
@@ -5735,14 +5295,14 @@ _LT_EOF
          # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
          _LT_LINKER_OPTION([if $CC understands -b],
            _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-           [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+           [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
            [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-         [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+         [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
          ;;
        esac
       fi
-      if test no = "$with_gnu_ld"; then
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+      if test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
        case $host_cpu in
@@ -5753,7 +5313,7 @@ _LT_EOF
        *)
          _LT_TAGVAR(hardcode_direct, $1)=yes
          _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
 
          # hardcode_minus_L: Not really in the search PATH,
          # but as the default location of the library.
@@ -5764,16 +5324,16 @@ _LT_EOF
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
        # Try to use the -exported_symbol ld option, if it does not
        # work, assume that -exports_file does not work either and
        # implicitly export all symbols.
        # This should be the same for all languages, so no per-tag cache variable.
        AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
          [lt_cv_irix_exported_symbol],
-         [save_LDFLAGS=$LDFLAGS
-          LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
+         [save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
           AC_LINK_IFELSE(
             [AC_LANG_SOURCE(
                [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
@@ -5786,32 +5346,21 @@ _LT_EOF
       end]])])],
              [lt_cv_irix_exported_symbol=yes],
              [lt_cv_irix_exported_symbol=no])
-           LDFLAGS=$save_LDFLAGS])
-       if test yes = "$lt_cv_irix_exported_symbol"; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
+           LDFLAGS="$save_LDFLAGS"])
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
        fi
-       _LT_TAGVAR(link_all_deplibs, $1)=no
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(inherit_rpath, $1)=yes
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
-    linux*)
-      case $cc_basename in
-      tcc*)
-       # Fabrice Bellard et al's Tiny C Compiler
-       _LT_TAGVAR(ld_shlibs, $1)=yes
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      esac
-      ;;
-
     netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -5826,7 +5375,7 @@ _LT_EOF
     newsos6)
       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
@@ -5834,19 +5383,27 @@ _LT_EOF
     *nto* | *qnx*)
       ;;
 
-    openbsd* | bitrig*)
+    openbsd*)
       if test -f /usr/libexec/ld.so; then
        _LT_TAGVAR(hardcode_direct, $1)=yes
        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
        else
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
        fi
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5857,53 +5414,33 @@ _LT_EOF
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      shrext_cmds=.dll
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-       $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-       $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-       $ECHO EXPORTS >> $output_objdir/$libname.def~
-       prefix_cmds="$SED"~
-       if test EXPORTS = "`$SED 1q $export_symbols`"; then
-         prefix_cmds="$prefix_cmds -e 1d";
-       fi~
-       prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-       cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-       $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-       emximp -o $lib $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       ;;
 
     osf3*)
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
       else
        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       ;;
 
     osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       else
        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
        # Both c and cxx compiler support -rpath directly
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5914,24 +5451,24 @@ _LT_EOF
 
     solaris*)
       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test yes = "$GCC"; then
-       wlarc='$wl'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
        case `$CC -V 2>&1` in
        *"Compilers 5.0"*)
          wlarc=''
-         _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
          ;;
        *)
-         wlarc='$wl'
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         wlarc='${wl}'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
          ;;
        esac
       fi
@@ -5941,11 +5478,11 @@ _LT_EOF
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       *)
        # The compiler driver will combine and reorder linker options,
-       # but understands '-z linker_flag'.  GCC discards it without '$wl',
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
        # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       if test yes = "$GCC"; then
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
        else
          _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
        fi
@@ -5955,10 +5492,10 @@ _LT_EOF
       ;;
 
     sunos4*)
-      if test sequent = "$host_vendor"; then
+      if test "x$host_vendor" = xsequent; then
        # Use $CC to link under sequent, because it throws in some extra .o
        # files that make .init and .fini sections work.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
        _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -6007,43 +5544,43 @@ _LT_EOF
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We CANNOT use -z defs as we might desire, because we do not
+      # Note: We can NOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test yes = "$GCC"; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -6058,17 +5595,17 @@ _LT_EOF
       ;;
     esac
 
-    if test sni = "$host_vendor"; then
+    if test x$host_vendor = xsni; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
        ;;
       esac
     fi
   fi
 ])
 AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
 
 _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
 
@@ -6085,7 +5622,7 @@ x|xyes)
   # Assume -lc should be added
   _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
 
-  if test yes,yes = "$GCC,$enable_shared"; then
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
     case $_LT_TAGVAR(archive_cmds, $1) in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -6165,12 +5702,12 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
     DIR into the resulting binary])
 _LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
     DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting $shlibpath_var if the
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
     library is relocated])
 _LT_TAGDECL([], [hardcode_minus_L], [0],
     [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -6211,10 +5748,10 @@ dnl    [Compiler flag to generate thread safe objects])
 # ------------------------
 # Ensure that the configuration variables for a C compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to 'libtool'.
+# the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_C_CONFIG],
 [m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC=$CC
+lt_save_CC="$CC"
 AC_LANG_PUSH(C)
 
 # Source file extension for C test sources.
@@ -6254,18 +5791,18 @@ if test -n "$compiler"; then
   LT_SYS_DLOPEN_SELF
   _LT_CMD_STRIPLIB
 
-  # Report what library types will actually be built
+  # Report which library types will actually be built
   AC_MSG_CHECKING([if libtool supports shared libraries])
   AC_MSG_RESULT([$can_build_shared])
 
   AC_MSG_CHECKING([whether to build shared libraries])
-  test no = "$can_build_shared" && enable_shared=no
+  test "$can_build_shared" = "no" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
   # are all built from PIC.
   case $host_os in
   aix3*)
-    test yes = "$enable_shared" && enable_static=no
+    test "$enable_shared" = yes && enable_static=no
     if test -n "$RANLIB"; then
       archive_cmds="$archive_cmds~\$RANLIB \$lib"
       postinstall_cmds='$RANLIB $lib'
@@ -6273,12 +5810,8 @@ if test -n "$compiler"; then
     ;;
 
   aix[[4-9]]*)
-    if test ia64 != "$host_cpu"; then
-      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-      yes,aix,yes) ;;                  # shared object as lib.so file only
-      yes,svr4,*) ;;                   # shared object as lib.so archive member only
-      yes,*) enable_static=no ;;       # shared object in lib.a archive as well
-      esac
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
     fi
     ;;
   esac
@@ -6286,13 +5819,13 @@ if test -n "$compiler"; then
 
   AC_MSG_CHECKING([whether to build static libraries])
   # Make sure either enable_shared or enable_static is yes.
-  test yes = "$enable_shared" || enable_static=yes
+  test "$enable_shared" = yes || enable_static=yes
   AC_MSG_RESULT([$enable_static])
 
   _LT_CONFIG($1)
 fi
 AC_LANG_POP
-CC=$lt_save_CC
+CC="$lt_save_CC"
 ])# _LT_LANG_C_CONFIG
 
 
@@ -6300,14 +5833,14 @@ CC=$lt_save_CC
 # --------------------------
 # Ensure that the configuration variables for a C++ compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to 'libtool'.
+# the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_CXX_CONFIG],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test no != "$CXX" &&
-    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
-    (test g++ != "$CXX"))); then
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
   AC_PROG_CXXCPP
 else
   _lt_caught_CXX_error=yes
@@ -6349,7 +5882,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the CXX compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_caught_CXX_error"; then
+if test "$_lt_caught_CXX_error" != yes; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="int some_variable = 0;"
 
@@ -6391,35 +5924,35 @@ if test yes != "$_lt_caught_CXX_error"; then
   if test -n "$compiler"; then
     # We don't want -fno-exception when compiling C++ code, so set the
     # no_builtin_flag separately
-    if test yes = "$GXX"; then
+    if test "$GXX" = yes; then
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
     else
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
     fi
 
-    if test yes = "$GXX"; then
+    if test "$GXX" = yes; then
       # Set up default GNU C++ configuration
 
       LT_PATH_LD
 
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
-      if test yes = "$with_gnu_ld"; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
 
         # If archive_cmds runs LD, not CC, wlarc should be empty
         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         #     investigate it a little bit more. (MM)
-        wlarc='$wl'
+        wlarc='${wl}'
 
         # ancient GNU ld didn't support --whole-archive et. al.
         if eval "`$CC -print-prog-name=ld` --help 2>&1" |
          $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
         else
           _LT_TAGVAR(whole_archive_flag_spec, $1)=
         fi
@@ -6455,30 +5988,18 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(ld_shlibs, $1)=no
         ;;
       aix[[4-9]]*)
-        if test ia64 = "$host_cpu"; then
+        if test "$host_cpu" = ia64; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
           aix_use_runtimelinking=no
           exp_sym_flag='-Bexport'
-          no_entry_flag=
+          no_entry_flag=""
         else
           aix_use_runtimelinking=no
 
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # have runtime linking enabled, and use it for executables.
-          # For shared libraries, we enable/disable runtime linking
-          # depending on the kind of the shared library created -
-          # when "with_aix_soname,aix_use_runtimelinking" is:
-          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "aix,yes"  lib.so          shared, rtl:yes, for executables
-          #            lib.a           static archive
-          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
-          #            lib.a(lib.so.V) shared, rtl:no,  for executables
-          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a(lib.so.V) shared, rtl:no
-          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
-          #            lib.a           static archive
+          # need to do runtime linking.
           case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
            for ld_flag in $LDFLAGS; do
              case $ld_flag in
@@ -6488,13 +6009,6 @@ if test yes != "$_lt_caught_CXX_error"; then
                ;;
              esac
            done
-           if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
-             # With aix-soname=svr4, we create the lib.so.V shared archives only,
-             # so we don't have lib.a shared libs to link our executables.
-             # We have to force runtime linking in this case.
-             aix_use_runtimelinking=yes
-             LDFLAGS="$LDFLAGS -Wl,-brtl"
-           fi
            ;;
           esac
 
@@ -6513,21 +6027,13 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
-        case $with_aix_soname,$aix_use_runtimelinking in
-        aix,*) ;;      # no import file
-        svr4,* | *,yes) # use import file
-          # The Import File defines what to hardcode.
-          _LT_TAGVAR(hardcode_direct, $1)=no
-          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-          ;;
-        esac
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
 
-        if test yes = "$GXX"; then
+        if test "$GXX" = yes; then
           case $host_os in aix4.[[012]]|aix4.[[012]].*)
           # We only want to do this on AIX 4.2 and lower, the check
           # below for broken collect2 doesn't work under 4.3+
-         collect2name=`$CC -print-prog-name=collect2`
+         collect2name=`${CC} -print-prog-name=collect2`
          if test -f "$collect2name" &&
             strings "$collect2name" | $GREP resolve_lib_name >/dev/null
          then
@@ -6545,84 +6051,64 @@ if test yes != "$_lt_caught_CXX_error"; then
          fi
           esac
           shared_flag='-shared'
-         if test yes = "$aix_use_runtimelinking"; then
-           shared_flag=$shared_flag' $wl-G'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
          fi
-         # Need to ensure runtime linking is disabled for the traditional
-         # shared library, or the linker may eventually find shared libraries
-         # /with/ Import File - we do not want to mix them.
-         shared_flag_aix='-shared'
-         shared_flag_svr4='-shared $wl-G'
         else
           # not using gcc
-          if test ia64 = "$host_cpu"; then
+          if test "$host_cpu" = ia64; then
          # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
          # chokes on -Wl,-G. The following line is correct:
          shared_flag='-G'
           else
-           if test yes = "$aix_use_runtimelinking"; then
-             shared_flag='$wl-G'
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
            else
-             shared_flag='$wl-bM:SRE'
+             shared_flag='${wl}-bM:SRE'
            fi
-           shared_flag_aix='$wl-bM:SRE'
-           shared_flag_svr4='$wl-G'
           fi
         fi
 
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
        # export.
         _LT_TAGVAR(always_export_symbols, $1)=yes
-       if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
+        if test "$aix_use_runtimelinking" = yes; then
           # Warning - without using the other runtime loading flags (-brtl),
           # -berok will link without error, but may produce a broken library.
-          # The "-G" linker flag allows undefined symbols.
-          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
           _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
         else
-          if test ia64 = "$host_cpu"; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
+          if test "$host_cpu" = ia64; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
            _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
           else
            # Determine the default libpath from the value encoded in an
            # empty executable.
            _LT_SYS_MODULE_PATH_AIX([$1])
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
            # Warning - without using the other run time loading flags,
            # -berok will link without error, but may produce a broken library.
-           _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
-           _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
-           if test yes = "$with_gnu_ld"; then
+           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
              # We only use this code for GNU lds that support --whole-archive.
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
            else
              # Exported symbols can be pulled into shared objects from archives
              _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
            fi
            _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
-           # -brtl affects multiple linker settings, -berok does not and is overridden later
-           compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
-           if test svr4 != "$with_aix_soname"; then
-             # This is similar to how AIX traditionally builds its shared
-             # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
-           fi
-           if test aix != "$with_aix_soname"; then
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
-           else
-             # used by -dlpreopen to get the symbols
-             _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
-           fi
-           _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
           fi
         fi
         ;;
@@ -6632,7 +6118,7 @@ if test yes != "$_lt_caught_CXX_error"; then
          _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
          # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
          # support --undefined.  This deserves some investigation.  FIXME
-         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
        else
          _LT_TAGVAR(ld_shlibs, $1)=no
        fi
@@ -6660,58 +6146,57 @@ if test yes != "$_lt_caught_CXX_error"; then
          # Tell ltmain to make .lib files, not .a files.
          libext=lib
          # Tell ltmain to make .dll files, not .so files.
-         shrext_cmds=.dll
+         shrext_cmds=".dll"
          # FIXME: Setting linknames here is a bad hack.
-         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
-         _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-              cp "$export_symbols" "$output_objdir/$soname.def";
-              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
-            else
-              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
-            fi~
-            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-            linknames='
+         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
          # The linker will not automatically build a static lib if we build a DLL.
          # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
          _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
          # Don't use ranlib
          _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
          _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-            lt_tool_outputfile="@TOOL_OUTPUT@"~
-            case $lt_outputfile in
-              *.exe|*.EXE) ;;
-              *)
-                lt_outputfile=$lt_outputfile.exe
-                lt_tool_outputfile=$lt_tool_outputfile.exe
-                ;;
-            esac~
-            func_to_tool_file "$lt_outputfile"~
-            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
-              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-              $RM "$lt_outputfile.manifest";
-            fi'
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
+               ;;
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
          ;;
        *)
          # g++
          # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
          # as there is no search path for DLLs.
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
          _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
          _LT_TAGVAR(always_export_symbols, $1)=no
          _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
 
          if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-           # If the export-symbols file already is a .def file, use it as
-           # is; otherwise, prepend EXPORTS...
-           _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
-              cp $export_symbols $output_objdir/$soname.def;
-            else
-              echo EXPORTS > $output_objdir/$soname.def;
-              cat $export_symbols >> $output_objdir/$soname.def;
-            fi~
-            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
          else
            _LT_TAGVAR(ld_shlibs, $1)=no
          fi
@@ -6722,34 +6207,6 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_DARWIN_LINKER_FEATURES($1)
        ;;
 
-      os2*)
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-       shrext_cmds=.dll
-       _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
-         $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
-         $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
-         $ECHO EXPORTS >> $output_objdir/$libname.def~
-         prefix_cmds="$SED"~
-         if test EXPORTS = "`$SED 1q $export_symbols`"; then
-           prefix_cmds="$prefix_cmds -e 1d";
-         fi~
-         prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
-         cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
-         $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
-         emximp -o $lib $output_objdir/$libname.def'
-       _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
-       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-       ;;
-
       dgux*)
         case $cc_basename in
           ec++*)
@@ -6784,15 +6241,18 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
+      gnu*)
+        ;;
+
       haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
         ;;
 
       hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         _LT_TAGVAR(hardcode_direct, $1)=yes
         _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
                                             # but as the default
@@ -6804,7 +6264,7 @@ if test yes != "$_lt_caught_CXX_error"; then
             _LT_TAGVAR(ld_shlibs, $1)=no
             ;;
           aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
             # Commands to make compiler produce verbose output that lists
             # what "hidden" libraries, object files and flags are used when
             # linking a shared library.
@@ -6813,11 +6273,11 @@ if test yes != "$_lt_caught_CXX_error"; then
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
-            if test yes = "$GXX"; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6827,15 +6287,15 @@ if test yes != "$_lt_caught_CXX_error"; then
         ;;
 
       hpux10*|hpux11*)
-        if test no = "$with_gnu_ld"; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
+        if test $with_gnu_ld = no; then
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
          _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-             _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
               ;;
           esac
         fi
@@ -6861,13 +6321,13 @@ if test yes != "$_lt_caught_CXX_error"; then
           aCC*)
            case $host_cpu in
              hppa*64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                ;;
              ia64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                ;;
              *)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                ;;
            esac
            # Commands to make compiler produce verbose output that lists
@@ -6878,20 +6338,20 @@ if test yes != "$_lt_caught_CXX_error"; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
            ;;
           *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
                case $host_cpu in
                  hppa*64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                    ;;
                  ia64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                    ;;
                  *)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
                    ;;
                esac
              fi
@@ -6906,22 +6366,22 @@ if test yes != "$_lt_caught_CXX_error"; then
       interix[[3-9]]*)
        _LT_TAGVAR(hardcode_direct, $1)=no
        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
        # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
        # Instead, shared libraries are loaded at an image base (0x10000000 by
        # default) and relocated if they conflict, which is a slow very memory
        # consuming and fragmenting process.  To avoid this, we pick a random,
        # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
        # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
        ;;
       irix5* | irix6*)
         case $cc_basename in
           CC*)
            # SGI C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 
            # Archives containing C++ object files must be created using
            # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -6930,22 +6390,22 @@ if test yes != "$_lt_caught_CXX_error"; then
            _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
            ;;
           *)
-           if test yes = "$GXX"; then
-             if test no = "$with_gnu_ld"; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
              else
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
              fi
            fi
            _LT_TAGVAR(link_all_deplibs, $1)=yes
            ;;
         esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         case $cc_basename in
           KCC*)
            # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -6953,8 +6413,8 @@ if test yes != "$_lt_caught_CXX_error"; then
            # KCC will only create a shared library if the output file
            # ends with ".so" (or ".sl" for HP-UX), so rename the library
            # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
            # Commands to make compiler produce verbose output that lists
            # what "hidden" libraries, object files and flags are used when
            # linking a shared library.
@@ -6963,10 +6423,10 @@ if test yes != "$_lt_caught_CXX_error"; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
 
            # Archives containing C++ object files must be created using
            # "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -6980,59 +6440,59 @@ if test yes != "$_lt_caught_CXX_error"; then
            # earlier do not add the objects themselves.
            case `$CC -V 2>&1` in
              *"Version 7."*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
                ;;
              *)  # Version 8.0 or newer
                tmp_idyn=
                case $host_cpu in
                  ia64*) tmp_idyn=' -i_dynamic';;
                esac
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
                ;;
            esac
            _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
            ;;
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
            case `$CC -V` in
            *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
              _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
              _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-                $RANLIB $oldlib'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
              _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
              _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-                rm -rf $tpldir~
-                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
              ;;
            *) # Version 6 and above use weak symbols
-             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
              ;;
            esac
 
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
             ;;
          cxx*)
            # Compaq C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
 
            runpath_var=LD_RUN_PATH
            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -7046,18 +6506,18 @@ if test yes != "$_lt_caught_CXX_error"; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
            ;;
          xl* | mpixl* | bgxl*)
            # IBM XL 8.0 on PPC, with GNU ld
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
-           if test yes = "$supports_anon_versioning"; then
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
              _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-                echo "local: *; };" >> $output_objdir/$libname.ver~
-                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
            fi
            ;;
          *)
@@ -7065,10 +6525,10 @@ if test yes != "$_lt_caught_CXX_error"; then
            *Sun\ C*)
              # Sun C++ 5.9
              _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-             _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
              _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-             _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
              _LT_TAGVAR(compiler_needs_object, $1)=yes
 
              # Not sure whether something based on
@@ -7126,17 +6586,22 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
        ;;
 
-      openbsd* | bitrig*)
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       _LT_TAGVAR(ld_shlibs, $1)=no
+       ;;
+
+      openbsd*)
        if test -f /usr/libexec/ld.so; then
          _LT_TAGVAR(hardcode_direct, $1)=yes
          _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
          _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
-         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
-           _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
          fi
          output_verbose_link_cmd=func_echo_all
        else
@@ -7152,9 +6617,9 @@ if test yes != "$_lt_caught_CXX_error"; then
            # KCC will only create a shared library if the output file
            # ends with ".so" (or ".sl" for HP-UX), so rename the library
            # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
            _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
            # Archives containing C++ object files must be created using
@@ -7172,17 +6637,17 @@ if test yes != "$_lt_caught_CXX_error"; then
           cxx*)
            case $host in
              osf3*)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
-               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+               _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
                ;;
              *)
                _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
                _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                  echo "-hidden">> $lib.exp~
-                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
-                  $RM $lib.exp'
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
                _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
                ;;
            esac
@@ -7197,21 +6662,21 @@ if test yes != "$_lt_caught_CXX_error"; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
            ;;
          *)
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
              case $host in
                osf3*)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
                  ;;
                *)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
                  ;;
              esac
 
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
              _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
              # Commands to make compiler produce verbose output that lists
@@ -7257,9 +6722,9 @@ if test yes != "$_lt_caught_CXX_error"; then
            # Sun C++ 4.2, 5.x and Centerline C++
             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
            _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
            _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -7267,7 +6732,7 @@ if test yes != "$_lt_caught_CXX_error"; then
              solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
              *)
                # The compiler driver will combine and reorder linker options,
-               # but understands '-z linker_flag'.
+               # but understands `-z linker_flag'.
                # Supported since Solaris 2.6 (maybe 2.5.1?)
                _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
                ;;
@@ -7284,30 +6749,30 @@ if test yes != "$_lt_caught_CXX_error"; then
            ;;
           gcx*)
            # Green Hills C++ Compiler
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 
            # The C++ compiler must be used to create the archive.
            _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
            ;;
           *)
            # GNU C++ compiler with Solaris linker
-           if test yes,no = "$GXX,$with_gnu_ld"; then
-             _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
              if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
                _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
                # Commands to make compiler produce verbose output that lists
                # what "hidden" libraries, object files and flags are used when
                # linking a shared library.
                output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
              else
-               # g++ 2.7 appears to require '-G' NOT '-shared' on this
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
                # platform.
-               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
                _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
                # Commands to make compiler produce verbose output that lists
                # what "hidden" libraries, object files and flags are used when
@@ -7315,11 +6780,11 @@ if test yes != "$_lt_caught_CXX_error"; then
                output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
              fi
 
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
              case $host_os in
                solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
                *)
-                 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
                  ;;
              esac
            fi
@@ -7328,52 +6793,52 @@ if test yes != "$_lt_caught_CXX_error"; then
         ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
       case $cc_basename in
         CC*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
          ;;
       esac
       ;;
 
       sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We CANNOT use -z defs as we might desire, because we do not
+       # Note: We can NOT use -z defs as we might desire, because we do not
        # link with -lc, and that would cause any symbols used from libc to
        # always be unresolved, which means just about no library would
        # ever link correctly.  If we're not using GNU ld we use -z text
        # though, which does catch some bad symbols but isn't as heavy-handed
        # as -z defs.
-       _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
-       _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
+       _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
        _LT_TAGVAR(link_all_deplibs, $1)=yes
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
+       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
        runpath_var='LD_RUN_PATH'
 
        case $cc_basename in
           CC*)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
            _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-              '"$_LT_TAGVAR(old_archive_cmds, $1)"
+             '"$_LT_TAGVAR(old_archive_cmds, $1)"
            _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-              '"$_LT_TAGVAR(reload_cmds, $1)"
+             '"$_LT_TAGVAR(reload_cmds, $1)"
            ;;
          *)
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
            ;;
        esac
       ;;
@@ -7404,10 +6869,10 @@ if test yes != "$_lt_caught_CXX_error"; then
     esac
 
     AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
 
-    _LT_TAGVAR(GCC, $1)=$GXX
-    _LT_TAGVAR(LD, $1)=$LD
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -7434,7 +6899,7 @@ if test yes != "$_lt_caught_CXX_error"; then
   lt_cv_path_LD=$lt_save_path_LD
   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test yes != "$_lt_caught_CXX_error"
+fi # test "$_lt_caught_CXX_error" != yes
 
 AC_LANG_POP
 ])# _LT_LANG_CXX_CONFIG
@@ -7456,14 +6921,13 @@ AC_REQUIRE([_LT_DECL_SED])
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
 func_stripname_cnf ()
 {
-  case @S|@2 in
-  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
-  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
   esac
 } # func_stripname_cnf
 ])# _LT_FUNC_STRIPNAME_CNF
 
-
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -7547,13 +7011,13 @@ if AC_TRY_EVAL(ac_compile); then
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case $prev$p in
+    case ${prev}${p} in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test x-L = "$p" ||
-          test x-R = "$p"; then
+       if test $p = "-L" ||
+          test $p = "-R"; then
         prev=$p
         continue
        fi
@@ -7569,16 +7033,16 @@ if AC_TRY_EVAL(ac_compile); then
        case $p in
        =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
        esac
-       if test no = "$pre_test_object_deps_done"; then
-        case $prev in
+       if test "$pre_test_object_deps_done" = no; then
+        case ${prev} in
         -L | -R)
           # Internal compiler library paths should come after those
           # provided the user.  The postdeps already come after the
           # user supplied libs so there is no need to process them.
           if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-            _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
           else
-            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
+            _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
           fi
           ;;
         # The "-l" case would never come before the object being
@@ -7586,9 +7050,9 @@ if AC_TRY_EVAL(ac_compile); then
         esac
        else
         if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-          _LT_TAGVAR(postdeps, $1)=$prev$p
+          _LT_TAGVAR(postdeps, $1)="${prev}${p}"
         else
-          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
+          _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
         fi
        fi
        prev=
@@ -7603,15 +7067,15 @@ if AC_TRY_EVAL(ac_compile); then
         continue
        fi
 
-       if test no = "$pre_test_object_deps_done"; then
+       if test "$pre_test_object_deps_done" = no; then
         if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-          _LT_TAGVAR(predep_objects, $1)=$p
+          _LT_TAGVAR(predep_objects, $1)="$p"
         else
           _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
         fi
        else
         if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-          _LT_TAGVAR(postdep_objects, $1)=$p
+          _LT_TAGVAR(postdep_objects, $1)="$p"
         else
           _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
         fi
@@ -7642,6 +7106,51 @@ interix[[3-9]]*)
   _LT_TAGVAR(postdep_objects,$1)=
   _LT_TAGVAR(postdeps,$1)=
   ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
 esac
 ])
 
@@ -7650,7 +7159,7 @@ case " $_LT_TAGVAR(postdeps, $1) " in
 esac
  _LT_TAGVAR(compiler_lib_search_dirs, $1)=
 if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
 _LT_TAGDECL([], [compiler_lib_search_dirs], [1],
     [The directories searched by this compiler when creating a shared library])
@@ -7670,10 +7179,10 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
+# to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
 [AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test no = "$F77"; then
+if test -z "$F77" || test "X$F77" = "Xno"; then
   _lt_disable_F77=yes
 fi
 
@@ -7710,7 +7219,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the F77 compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_disable_F77"; then
+if test "$_lt_disable_F77" != yes; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -7732,7 +7241,7 @@ if test yes != "$_lt_disable_F77"; then
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
+  lt_save_CC="$CC"
   lt_save_GCC=$GCC
   lt_save_CFLAGS=$CFLAGS
   CC=${F77-"f77"}
@@ -7746,25 +7255,21 @@ if test yes != "$_lt_disable_F77"; then
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test no = "$can_build_shared" && enable_shared=no
+    test "$can_build_shared" = "no" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test yes = "$enable_shared" && enable_static=no
+        test "$enable_shared" = yes && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-       if test ia64 != "$host_cpu"; then
-         case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-         yes,aix,yes) ;;               # shared object as lib.so file only
-         yes,svr4,*) ;;                # shared object as lib.so archive member only
-         yes,*) enable_static=no ;;    # shared object in lib.a archive as well
-         esac
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
        fi
         ;;
     esac
@@ -7772,11 +7277,11 @@ if test yes != "$_lt_disable_F77"; then
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test yes = "$enable_shared" || enable_static=yes
+    test "$enable_shared" = yes || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)=$G77
-    _LT_TAGVAR(LD, $1)=$LD
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -7793,9 +7298,9 @@ if test yes != "$_lt_disable_F77"; then
   fi # test -n "$compiler"
 
   GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test yes != "$_lt_disable_F77"
+  CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
 
 AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
@@ -7805,11 +7310,11 @@ AC_LANG_POP
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
+# to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
 [AC_LANG_PUSH(Fortran)
 
-if test -z "$FC" || test no = "$FC"; then
+if test -z "$FC" || test "X$FC" = "Xno"; then
   _lt_disable_FC=yes
 fi
 
@@ -7846,7 +7351,7 @@ _LT_TAGVAR(objext, $1)=$objext
 # the FC compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test yes != "$_lt_disable_FC"; then
+if test "$_lt_disable_FC" != yes; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -7868,7 +7373,7 @@ if test yes != "$_lt_disable_FC"; then
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
+  lt_save_CC="$CC"
   lt_save_GCC=$GCC
   lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
@@ -7884,25 +7389,21 @@ if test yes != "$_lt_disable_FC"; then
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test no = "$can_build_shared" && enable_shared=no
+    test "$can_build_shared" = "no" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test yes = "$enable_shared" && enable_static=no
+        test "$enable_shared" = yes && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-       if test ia64 != "$host_cpu"; then
-         case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
-         yes,aix,yes) ;;               # shared object as lib.so file only
-         yes,svr4,*) ;;                # shared object as lib.so archive member only
-         yes,*) enable_static=no ;;    # shared object in lib.a archive as well
-         esac
+       if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+         test "$enable_shared" = yes && enable_static=no
        fi
         ;;
     esac
@@ -7910,11 +7411,11 @@ if test yes != "$_lt_disable_FC"; then
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test yes = "$enable_shared" || enable_static=yes
+    test "$enable_shared" = yes || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
-    _LT_TAGVAR(LD, $1)=$LD
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -7934,7 +7435,7 @@ if test yes != "$_lt_disable_FC"; then
   GCC=$lt_save_GCC
   CC=$lt_save_CC
   CFLAGS=$lt_save_CFLAGS
-fi # test yes != "$_lt_disable_FC"
+fi # test "$_lt_disable_FC" != yes
 
 AC_LANG_POP
 ])# _LT_LANG_FC_CONFIG
@@ -7944,7 +7445,7 @@ AC_LANG_POP
 # --------------------------
 # Ensure that the configuration variables for the GNU Java Compiler compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
+# to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_GCJ_CONFIG],
 [AC_REQUIRE([LT_PROG_GCJ])dnl
 AC_LANG_SAVE
@@ -7978,7 +7479,7 @@ CC=${GCJ-"gcj"}
 CFLAGS=$GCJFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)=$LD
+_LT_TAGVAR(LD, $1)="$LD"
 _LT_CC_BASENAME([$compiler])
 
 # GCJ did not exist at the time GCC didn't implicitly link libc in.
@@ -8015,7 +7516,7 @@ CFLAGS=$lt_save_CFLAGS
 # --------------------------
 # Ensure that the configuration variables for the GNU Go compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
+# to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_GO_CONFIG],
 [AC_REQUIRE([LT_PROG_GO])dnl
 AC_LANG_SAVE
@@ -8049,7 +7550,7 @@ CC=${GOC-"gccgo"}
 CFLAGS=$GOFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)=$LD
+_LT_TAGVAR(LD, $1)="$LD"
 _LT_CC_BASENAME([$compiler])
 
 # Go did not exist at the time GCC didn't implicitly link libc in.
@@ -8086,7 +7587,7 @@ CFLAGS=$lt_save_CFLAGS
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to 'libtool'.
+# to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_RC_CONFIG],
 [AC_REQUIRE([LT_PROG_RC])dnl
 AC_LANG_SAVE
@@ -8102,7 +7603,7 @@ _LT_TAGVAR(objext, $1)=$objext
 lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
-lt_simple_link_test_code=$lt_simple_compile_test_code
+lt_simple_link_test_code="$lt_simple_compile_test_code"
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_TAG_COMPILER
@@ -8112,7 +7613,7 @@ _LT_COMPILER_BOILERPLATE
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC=$CC
+lt_save_CC="$CC"
 lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=
@@ -8141,7 +7642,7 @@ AC_DEFUN([LT_PROG_GCJ],
 [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
   [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
     [AC_CHECK_TOOL(GCJ, gcj,)
-      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
       AC_SUBST(GCJFLAGS)])])[]dnl
 ])
 
@@ -8252,7 +7753,7 @@ lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
 # along with /bin/sed that truncates output.
 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f "$lt_ac_sed" && continue
+  test ! -f $lt_ac_sed && continue
   cat /dev/null > conftest.in
   lt_ac_count=0
   echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -8269,9 +7770,9 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
     $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
     cmp -s conftest.out conftest.nl || break
     # 10000 chars as input seems more than enough
-    test 10 -lt "$lt_ac_count" && break
+    test $lt_ac_count -gt 10 && break
     lt_ac_count=`expr $lt_ac_count + 1`
-    if test "$lt_ac_count" -gt "$lt_ac_max"; then
+    if test $lt_ac_count -gt $lt_ac_max; then
       lt_ac_max=$lt_ac_count
       lt_cv_path_SED=$lt_ac_sed
     fi
@@ -8295,7 +7796,27 @@ dnl AC_DEFUN([LT_AC_PROG_SED], [])
 # Find out whether the shell is Bourne or XSI compatible,
 # or has some other useful features.
 m4_defun([_LT_CHECK_SHELL_FEATURES],
-[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   lt_unset=unset
 else
   lt_unset=false
@@ -8319,9 +7840,102 @@ _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
 ])# _LT_CHECK_SHELL_FEATURES
 
 
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([    ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
 # _LT_PATH_CONVERSION_FUNCTIONS
 # -----------------------------
-# Determine what file name conversion functions should be used by
+# Determine which file name conversion functions should be used by
 # func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
 # for certain cross-compile configurations and native mingw.
 m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
index 94b0829..5d9acd8 100644 (file)
@@ -1,14 +1,14 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
-#   Foundation, Inc.
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
 #   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 8 ltoptions.m4
+# serial 7 ltoptions.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -29,7 +29,7 @@ m4_define([_LT_SET_OPTION],
 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
         _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option '$2'])])[]dnl
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
 ])
 
 
@@ -75,15 +75,13 @@ m4_if([$1],[LT_INIT],[
   dnl
   dnl If no reference was made to various pairs of opposing options, then
   dnl we run the default mode handler for the pair.  For example, if neither
-  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
   dnl archives by default:
   _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
   _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-                  [_LT_ENABLE_FAST_INSTALL])
-  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
-                  [_LT_WITH_AIX_SONAME([aix])])
+                  [_LT_ENABLE_FAST_INSTALL])
   ])
 ])# _LT_SET_OPTIONS
 
@@ -114,7 +112,7 @@ AU_DEFUN([AC_LIBTOOL_DLOPEN],
 [_LT_SET_OPTION([LT_INIT], [dlopen])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'dlopen' option into LT_INIT's first parameter.])
+put the `dlopen' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -150,7 +148,7 @@ AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
 _LT_SET_OPTION([LT_INIT], [win32-dll])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'win32-dll' option into LT_INIT's first parameter.])
+put the `win32-dll' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -159,9 +157,9 @@ dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
 
 # _LT_ENABLE_SHARED([DEFAULT])
 # ----------------------------
-# implement the --enable-shared flag, and supports the 'shared' and
-# 'disable-shared' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
 m4_define([_LT_ENABLE_SHARED],
 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([shared],
@@ -174,14 +172,14 @@ AC_ARG_ENABLE([shared],
     *)
       enable_shared=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       for pkg in $enableval; do
-       IFS=$lt_save_ifs
+       IFS="$lt_save_ifs"
        if test "X$pkg" = "X$p"; then
          enable_shared=yes
        fi
       done
-      IFS=$lt_save_ifs
+      IFS="$lt_save_ifs"
       ;;
     esac],
     [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -213,9 +211,9 @@ dnl AC_DEFUN([AM_DISABLE_SHARED], [])
 
 # _LT_ENABLE_STATIC([DEFAULT])
 # ----------------------------
-# implement the --enable-static flag, and support the 'static' and
-# 'disable-static' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
 m4_define([_LT_ENABLE_STATIC],
 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([static],
@@ -228,14 +226,14 @@ AC_ARG_ENABLE([static],
     *)
      enable_static=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       for pkg in $enableval; do
-       IFS=$lt_save_ifs
+       IFS="$lt_save_ifs"
        if test "X$pkg" = "X$p"; then
          enable_static=yes
        fi
       done
-      IFS=$lt_save_ifs
+      IFS="$lt_save_ifs"
       ;;
     esac],
     [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -267,9 +265,9 @@ dnl AC_DEFUN([AM_DISABLE_STATIC], [])
 
 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
 # ----------------------------------
-# implement the --enable-fast-install flag, and support the 'fast-install'
-# and 'disable-fast-install' LT_INIT options.
-# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
 m4_define([_LT_ENABLE_FAST_INSTALL],
 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([fast-install],
@@ -282,14 +280,14 @@ AC_ARG_ENABLE([fast-install],
     *)
       enable_fast_install=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       for pkg in $enableval; do
-       IFS=$lt_save_ifs
+       IFS="$lt_save_ifs"
        if test "X$pkg" = "X$p"; then
          enable_fast_install=yes
        fi
       done
-      IFS=$lt_save_ifs
+      IFS="$lt_save_ifs"
       ;;
     esac],
     [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -306,14 +304,14 @@ AU_DEFUN([AC_ENABLE_FAST_INSTALL],
 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the 'fast-install' option into LT_INIT's first parameter.])
+the `fast-install' option into LT_INIT's first parameter.])
 ])
 
 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the 'disable-fast-install' option into LT_INIT's first parameter.])
+the `disable-fast-install' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -321,64 +319,11 @@ dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 
 
-# _LT_WITH_AIX_SONAME([DEFAULT])
-# ----------------------------------
-# implement the --with-aix-soname flag, and support the `aix-soname=aix'
-# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
-# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
-m4_define([_LT_WITH_AIX_SONAME],
-[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
-shared_archive_member_spec=
-case $host,$enable_shared in
-power*-*-aix[[5-9]]*,yes)
-  AC_MSG_CHECKING([which variant of shared library versioning to provide])
-  AC_ARG_WITH([aix-soname],
-    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
-      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
-    [case $withval in
-    aix|svr4|both)
-      ;;
-    *)
-      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
-      ;;
-    esac
-    lt_cv_with_aix_soname=$with_aix_soname],
-    [AC_CACHE_VAL([lt_cv_with_aix_soname],
-      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
-    with_aix_soname=$lt_cv_with_aix_soname])
-  AC_MSG_RESULT([$with_aix_soname])
-  if test aix != "$with_aix_soname"; then
-    # For the AIX way of multilib, we name the shared archive member
-    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
-    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
-    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
-    # the AIX toolchain works better with OBJECT_MODE set (default 32).
-    if test 64 = "${OBJECT_MODE-32}"; then
-      shared_archive_member_spec=shr_64
-    else
-      shared_archive_member_spec=shr
-    fi
-  fi
-  ;;
-*)
-  with_aix_soname=aix
-  ;;
-esac
-
-_LT_DECL([], [shared_archive_member_spec], [0],
-    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
-])# _LT_WITH_AIX_SONAME
-
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
-LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
-
-
 # _LT_WITH_PIC([MODE])
 # --------------------
-# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
 # LT_INIT options.
-# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
     [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
@@ -389,17 +334,19 @@ m4_define([_LT_WITH_PIC],
     *)
       pic_mode=default
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
       for lt_pkg in $withval; do
-       IFS=$lt_save_ifs
+       IFS="$lt_save_ifs"
        if test "X$lt_pkg" = "X$lt_p"; then
          pic_mode=yes
        fi
       done
-      IFS=$lt_save_ifs
+      IFS="$lt_save_ifs"
       ;;
     esac],
-    [pic_mode=m4_default([$1], [default])])
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
 
 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
 ])# _LT_WITH_PIC
@@ -412,7 +359,7 @@ AU_DEFUN([AC_LIBTOOL_PICMODE],
 [_LT_SET_OPTION([LT_INIT], [pic-only])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the 'pic-only' option into LT_INIT's first parameter.])
+put the `pic-only' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
index 48bc934..9000a05 100644 (file)
@@ -1,7 +1,6 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
-# Foundation, Inc.
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -34,7 +33,7 @@ m4_define([_lt_join],
 # ------------
 # Manipulate m4 lists.
 # These macros are necessary as long as will still need to support
-# Autoconf-2.59, which quotes differently.
+# Autoconf-2.59 which quotes differently.
 m4_define([lt_car], [[$1]])
 m4_define([lt_cdr],
 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -45,7 +44,7 @@ m4_define([lt_unquote], $1)
 
 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
 # ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
 # Note that neither SEPARATOR nor STRING are expanded; they are appended
 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
index fa04b52..07a8602 100644 (file)
@@ -1,6 +1,6 @@
 # ltversion.m4 -- version numbers                      -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
+#   Copyright (C) 2004 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 4179 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4.6])
-m4_define([LT_PACKAGE_REVISION], [2.4.6])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.6'
-macro_revision='2.4.6'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
index c6b26f8..c573da9 100644 (file)
@@ -1,7 +1,6 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
-#   Foundation, Inc.
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
@@ -12,7 +11,7 @@
 
 # These exist entirely to fool aclocal when bootstrapping libtool.
 #
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
 # which have later been changed to m4_define as they aren't part of the
 # exported API, or moved to Autoconf or Automake where they belong.
 #
@@ -26,7 +25,7 @@
 # included after everything else.  This provides aclocal with the
 # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
 # because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
 #
 # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
 # Yes, that means every name once taken will need to remain here until
diff --git a/m4/pkg.m4 b/m4/pkg.m4
deleted file mode 100644 (file)
index 4688002..0000000
--- a/m4/pkg.m4
+++ /dev/null
@@ -1,275 +0,0 @@
-dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
-dnl serial 11 (pkg-config-0.29)
-dnl
-dnl Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
-dnl Copyright Â© 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
-dnl
-dnl This program is free software; you can redistribute it and/or modify
-dnl it under the terms of the GNU General Public License as published by
-dnl the Free Software Foundation; either version 2 of the License, or
-dnl (at your option) any later version.
-dnl
-dnl This program is distributed in the hope that it will be useful, but
-dnl WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU General Public License
-dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-dnl 02111-1307, USA.
-dnl
-dnl As a special exception to the GNU General Public License, if you
-dnl distribute this file as part of a program that contains a
-dnl configuration script generated by Autoconf, you may include it under
-dnl the same distribution terms that you use for the rest of that
-dnl program.
-
-dnl PKG_PREREQ(MIN-VERSION)
-dnl -----------------------
-dnl Since: 0.29
-dnl
-dnl Verify that the version of the pkg-config macros are at least
-dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
-dnl installed version of pkg-config, this checks the developer's version
-dnl of pkg.m4 when generating configure.
-dnl
-dnl To ensure that this macro is defined, also add:
-dnl m4_ifndef([PKG_PREREQ],
-dnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
-dnl
-dnl See the "Since" comment for each macro you use to see what version
-dnl of the macros you require.
-m4_defun([PKG_PREREQ],
-[m4_define([PKG_MACROS_VERSION], [0.29])
-m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
-    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
-])dnl PKG_PREREQ
-
-dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
-dnl ----------------------------------
-dnl Since: 0.16
-dnl
-dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
-dnl first found in the path. Checks that the version of pkg-config found
-dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
-dnl used since that's the first version where most current features of
-dnl pkg-config existed.
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-       _pkg_min_version=m4_default([$1], [0.9.0])
-       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-               AC_MSG_RESULT([yes])
-       else
-               AC_MSG_RESULT([no])
-               PKG_CONFIG=""
-       fi
-fi[]dnl
-])dnl PKG_PROG_PKG_CONFIG
-
-dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-dnl -------------------------------------------------------------------
-dnl Since: 0.18
-dnl
-dnl Check to see whether a particular set of modules exists. Similar to
-dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
-dnl
-dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-dnl only at the first occurence in configure.ac, so if the first place
-dnl it's called might be skipped (such as if it is within an "if", you
-dnl have to call PKG_CHECK_EXISTS manually
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
-    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
-  m4_default([$2], [:])
-m4_ifvaln([$3], [else
-  $3])dnl
-fi])
-
-dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-dnl ---------------------------------------------
-dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
-dnl pkg_failed based on the result.
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
-    pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
-    PKG_CHECK_EXISTS([$3],
-                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
-                     test "x$?" != "x0" && pkg_failed=yes ],
-                    [pkg_failed=yes])
- else
-    pkg_failed=untried
-fi[]dnl
-])dnl _PKG_CONFIG
-
-dnl _PKG_SHORT_ERRORS_SUPPORTED
-dnl ---------------------------
-dnl Internal check to see if pkg-config supports short errors.
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi[]dnl
-])dnl _PKG_SHORT_ERRORS_SUPPORTED
-
-
-dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-dnl   [ACTION-IF-NOT-FOUND])
-dnl --------------------------------------------------------------
-dnl Since: 0.4.0
-dnl
-dnl Note that if there is a possibility the first call to
-dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
-dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
-       AC_MSG_RESULT([no])
-        _PKG_SHORT_ERRORS_SUPPORTED
-        if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
-        else 
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
-        fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
-       m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
-        ])
-elif test $pkg_failed = untried; then
-       AC_MSG_RESULT([no])
-       m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
-        ])
-else
-       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-        AC_MSG_RESULT([yes])
-       $3
-fi[]dnl
-])dnl PKG_CHECK_MODULES
-
-
-dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-dnl   [ACTION-IF-NOT-FOUND])
-dnl ---------------------------------------------------------------------
-dnl Since: 0.29
-dnl
-dnl Checks for existence of MODULES and gathers its build flags with
-dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
-dnl and VARIABLE-PREFIX_LIBS from --libs.
-dnl
-dnl Note that if there is a possibility the first call to
-dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
-dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
-dnl configure.ac.
-AC_DEFUN([PKG_CHECK_MODULES_STATIC],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-_save_PKG_CONFIG=$PKG_CONFIG
-PKG_CONFIG="$PKG_CONFIG --static"
-PKG_CHECK_MODULES($@)
-PKG_CONFIG=$_save_PKG_CONFIG[]dnl
-])dnl PKG_CHECK_MODULES_STATIC
-
-
-dnl PKG_INSTALLDIR([DIRECTORY])
-dnl -------------------------
-dnl Since: 0.27
-dnl
-dnl Substitutes the variable pkgconfigdir as the location where a module
-dnl should install pkg-config .pc files. By default the directory is
-dnl $libdir/pkgconfig, but the default can be changed by passing
-dnl DIRECTORY. The user can override through the --with-pkgconfigdir
-dnl parameter.
-AC_DEFUN([PKG_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
-m4_pushdef([pkg_description],
-    [pkg-config installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([pkgconfigdir],
-    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
-    [with_pkgconfigdir=]pkg_default)
-AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-])dnl PKG_INSTALLDIR
-
-
-dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
-dnl --------------------------------
-dnl Since: 0.27
-dnl
-dnl Substitutes the variable noarch_pkgconfigdir as the location where a
-dnl module should install arch-independent pkg-config .pc files. By
-dnl default the directory is $datadir/pkgconfig, but the default can be
-dnl changed by passing DIRECTORY. The user can override through the
-dnl --with-noarch-pkgconfigdir parameter.
-AC_DEFUN([PKG_NOARCH_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
-m4_pushdef([pkg_description],
-    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([noarch-pkgconfigdir],
-    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
-    [with_noarch_pkgconfigdir=]pkg_default)
-AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-])dnl PKG_NOARCH_INSTALLDIR
-
-
-dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
-dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-dnl -------------------------------------------
-dnl Since: 0.28
-dnl
-dnl Retrieves the value of the pkg-config variable for the given module.
-AC_DEFUN([PKG_CHECK_VAR],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
-
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
-AS_VAR_COPY([$1], [pkg_cv_][$1])
-
-AS_VAR_IF([$1], [""], [$5], [$4])dnl
-])dnl PKG_CHECK_VAR
index 1275d7f..3cfb9e2 100644 (file)
@@ -1,7 +1,7 @@
 ## this one is commonly used with AM_PATH_PYTHONDIR ...
-dnl PYG_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
 dnl Check if a module containing a given symbol is visible to python.
-AC_DEFUN([PYG_CHECK_PYMOD],
+AC_DEFUN([AM_CHECK_PYMOD],
 [AC_REQUIRE([AM_PATH_PYTHON])
 py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
 AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
@@ -37,9 +37,9 @@ fi
 ])
 
 dnl a macro to check for ability to create python extensions
-dnl  PYG_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
 dnl function also defines PYTHON_INCLUDES
-AC_DEFUN([PYG_CHECK_PYTHON_HEADERS],
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
 [AC_REQUIRE([AM_PATH_PYTHON])
 AC_MSG_CHECKING(for headers required to compile python extensions)
 dnl deduce PYTHON_INCLUDES
@@ -48,8 +48,12 @@ if test "x$PYTHON_INCLUDES" = x; then
   if test -x "$PYTHON_CONFIG"; then
     PYTHON_INCLUDES=`$PYTHON_CONFIG --includes 2>/dev/null`
   else
-    PYTHON_INCLUDES=`$PYTHON -c "import distutils.sysconfig, sys; sys.stdout.write(distutils.sysconfig.get_python_inc(True))"`
-    PYTHON_INCLUDES="-I$PYTHON_INCLUDES"
+    py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+    py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+    PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+    if test "$py_prefix" != "$py_exec_prefix"; then
+      PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+    fi
   fi
 fi
 AC_SUBST(PYTHON_INCLUDES)
@@ -65,20 +69,15 @@ CPPFLAGS="$save_CPPFLAGS"
 ])
 
 dnl a macro to check for ability to embed python
-dnl  PYG_CHECK_PYTHON_LIBS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl  AM_CHECK_PYTHON_LIBS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
 dnl function also defines PYTHON_LIBS
-AC_DEFUN([PYG_CHECK_PYTHON_LIBS],
-[AC_REQUIRE([AM_PATH_PYTHON])
+AC_DEFUN([AM_CHECK_PYTHON_LIBS],
+[AC_REQUIRE([AM_CHECK_PYTHON_HEADERS])
 AC_MSG_CHECKING(for libraries required to embed python)
 dnl deduce PYTHON_LIBS
-py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+py_exec_prefix=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
 if test "x$PYTHON_LIBS" = x; then
-  PYTHON_CONFIG=`which $PYTHON`-config
-  if test -x "$PYTHON_CONFIG"; then
-    PYTHON_LIBS=`$PYTHON_CONFIG --ldflags 2>/dev/null`
-  else
-    PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
-  fi
+       PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
 fi
 if test "x$PYTHON_LIB_LOC" = x; then
        PYTHON_LIB_LOC="${py_prefix}/lib"
@@ -94,6 +93,25 @@ AC_TRY_LINK_FUNC(Py_Initialize, dnl
 
 ])
 
+# JD_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ---------------------------------------------------------------------------
+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
+# Run ACTION-IF-FALSE otherwise.
+# This test uses sys.hexversion instead of the string equivalent.
+# This is similar to AM_PYTHON_CHECK_VERSION, but without python 1.5.x support
+# and with python 3.0 support.
+AC_DEFUN([JD_PYTHON_CHECK_VERSION],
+ [prog="import sys
+# split strings by '.' and convert to numeric.  Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+
 # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
 # Free Software Foundation, Inc.
 #
@@ -128,7 +146,8 @@ AC_DEFUN([JD_PATH_PYTHON],
   dnl Find a Python interpreter.  Python versions prior to 2.0 are not
   dnl supported
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-                    [python3 python3.3 python3.2 python3.1 python2 python2.7 python])
+                    [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
+python2.1 python2.0])
 
   m4_if([$1],[],[
     dnl No version check is needed.
@@ -142,7 +161,7 @@ AC_DEFUN([JD_PATH_PYTHON],
     if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
       AC_MSG_CHECKING([whether $PYTHON version >= $1])
-      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+      JD_PYTHON_CHECK_VERSION([$PYTHON], [$1],
                              [AC_MSG_RESULT(yes)],
                              [AC_MSG_ERROR(too old)])
       am_display_PYTHON=$PYTHON
@@ -153,7 +172,7 @@ AC_DEFUN([JD_PATH_PYTHON],
        [am_cv_pathless_PYTHON],[
        for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
          test "$am_cv_pathless_PYTHON" = none && break
-         AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+         JD_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
        done])
       # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
       if test "$am_cv_pathless_PYTHON" = none; then
diff --git a/missing b/missing
index f62bbae..86a8fc3 100755 (executable)
--- a/missing
+++ b/missing
@@ -1,10 +1,11 @@
 #! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
+# Common stub for a few missing GNU programs while installing.
 
-scriptversion=2013-10-28.13; # UTC
+scriptversion=2012-01-06.13; # UTC
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,40 +26,68 @@ scriptversion=2013-10-28.13; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try '$0 --help' for more information"
+  echo 1>&2 "Try \`$0 --help' for more information"
   exit 1
 fi
 
-case $1 in
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
-  --is-lightweight)
-    # Used by our autoconf macros to check whether the available missing
-    # script is modern enough.
-    exit 0
-    ;;
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
 
-  --run)
-    # Back-compat with the calling convention used by older automake.
-    shift
-    ;;
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
-  bison     yacc      flex         lex       help2man
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
 
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
@@ -70,141 +99,228 @@ Send bug reports to <bug-automake@gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: unknown '$1' option"
-    echo 1>&2 "Try '$0 --help' for more information"
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch.  This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
-  msg="probably too old"
-elif test $st -eq 127; then
-  # Program was missing.
-  msg="missing on your system"
-else
-  # Program was found and executed, but failed.  Give up.
-  exit $st
-fi
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
 
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
-
-program_details ()
-{
-  case $1 in
-    aclocal|automake)
-      echo "The '$1' program is part of the GNU Automake package:"
-      echo "<$gnu_software_URL/automake>"
-      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/autoconf>"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-    autoconf|autom4te|autoheader)
-      echo "The '$1' program is part of the GNU Autoconf package:"
-      echo "<$gnu_software_URL/autoconf/>"
-      echo "It also requires GNU m4 and Perl in order to run:"
-      echo "<$gnu_software_URL/m4/>"
-      echo "<$perl_URL>"
-      ;;
-  esac
-}
-
-give_advice ()
-{
-  # Normalize program name to check for.
-  normalized_program=`echo "$1" | sed '
-    s/^gnu-//; t
-    s/^gnu//; t
-    s/^g//; t'`
-
-  printf '%s\n' "'$1' is $msg."
-
-  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
-  case $normalized_program in
-    autoconf*)
-      echo "You should only need it if you modified 'configure.ac',"
-      echo "or m4 files included by it."
-      program_details 'autoconf'
-      ;;
-    autoheader*)
-      echo "You should only need it if you modified 'acconfig.h' or"
-      echo "$configure_deps."
-      program_details 'autoheader'
-      ;;
-    automake*)
-      echo "You should only need it if you modified 'Makefile.am' or"
-      echo "$configure_deps."
-      program_details 'automake'
-      ;;
-    aclocal*)
-      echo "You should only need it if you modified 'acinclude.m4' or"
-      echo "$configure_deps."
-      program_details 'aclocal'
-      ;;
-   autom4te*)
-      echo "You might have modified some maintainer files that require"
-      echo "the 'autom4te' program to be rebuilt."
-      program_details 'autom4te'
-      ;;
-    bison*|yacc*)
-      echo "You should only need it if you modified a '.y' file."
-      echo "You may want to install the GNU Bison package:"
-      echo "<$gnu_software_URL/bison/>"
-      ;;
-    lex*|flex*)
-      echo "You should only need it if you modified a '.l' file."
-      echo "You may want to install the Fast Lexical Analyzer package:"
-      echo "<$flex_URL>"
-      ;;
-    help2man*)
-      echo "You should only need it if you modified a dependency" \
-           "of a man page."
-      echo "You may want to install the GNU Help2man package:"
-      echo "<$gnu_software_URL/help2man/>"
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
     ;;
-    makeinfo*)
-      echo "You should only need it if you modified a '.texi' file, or"
-      echo "any other file indirectly affecting the aspect of the manual."
-      echo "You might want to install the Texinfo package:"
-      echo "<$gnu_software_URL/texinfo/>"
-      echo "The spurious makeinfo call might also be the consequence of"
-      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
-      echo "want to install GNU make:"
-      echo "<$gnu_software_URL/make/>"
-      ;;
-    *)
-      echo "You might have modified some files without having the proper"
-      echo "tools for further handling them.  Check the 'README' file, it"
-      echo "often tells you about the needed prerequisites for installing"
-      echo "this package.  You may also peek at any GNU archive site, in"
-      echo "case some other package contains this missing '$1' program."
-      ;;
-  esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
-                       -e '2,$s/^/         /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG=\${$#}
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
index bc20391..15c834c 100755 (executable)
@@ -3,7 +3,8 @@
 
 scriptversion=2011-06-08.12; # UTC
 
-# Copyright (C) 2000-2014 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009, 2011 Free
+# Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -36,7 +37,7 @@ me=py-compile
 usage_error ()
 {
   echo "$me: $*" >&2
-  echo "Try '$me --help' for more information." >&2
+  echo "Try \`$me --help' for more information." >&2
   exit 1
 }
 
@@ -116,7 +117,7 @@ else
 fi
 
 $PYTHON -c "
-import sys, os, py_compile, imp
+import sys, os, py_compile
 
 files = '''$files'''
 
@@ -129,19 +130,12 @@ for file in files.split():
            continue
     sys.stdout.write(file)
     sys.stdout.flush()
-    if hasattr(imp, 'get_tag'):
-        py_compile.compile(filepath, imp.cache_from_source(filepath), path)
-    else:
-        py_compile.compile(filepath, filepath + 'c', path)
+    py_compile.compile(filepath, filepath + 'c', path)
 sys.stdout.write('\n')" || exit $?
 
 # this will fail for python < 1.5, but that doesn't matter ...
 $PYTHON -O -c "
-import sys, os, py_compile, imp
-
-# pypy does not use .pyo optimization
-if hasattr(sys, 'pypy_translation_info'):
-    sys.exit(0)
+import sys, os, py_compile
 
 files = '''$files'''
 sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n')
@@ -153,10 +147,7 @@ for file in files.split():
            continue
     sys.stdout.write(file)
     sys.stdout.flush()
-    if hasattr(imp, 'get_tag'):
-        py_compile.compile(filepath, imp.cache_from_source(filepath, False), path)
-    else:
-        py_compile.compile(filepath, filepath + 'o', path)
+    py_compile.compile(filepath, filepath + 'o', path)
 sys.stdout.write('\n')" 2>/dev/null || :
 
 # Local Variables:
diff --git a/pygi-convert.sh b/pygi-convert.sh
deleted file mode 100755 (executable)
index 43af662..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-#!/bin/sh
-
-if [ -n "$1" ]; then
-    FILES_TO_CONVERT="$@"
-else
-    FILES_TO_CONVERT="$(find . -name '*.py')"
-fi
-
-for f in $FILES_TO_CONVERT; do
-    perl -i -0 \
-    -pe "s/import gconf\n/from gi.repository import GConf\n/g;" \
-    -pe "s/gconf\./GConf\./g;" \
-    -pe "s/GConf\.client_get_default/GConf.Client.get_default/g;" \
-    -pe "s/GConf\.CLIENT_/GConf.ClientPreloadType./g;" \
-    -pe "s/GConf\.VALUE_/GConf.ValueType./g;" \
-    -pe "s/gconf_client.notify_add\('\/desktop\/sugar\/collaboration\/publish_gadget',/return;gconf_client.notify_add\('\/desktop\/sugar\/collaboration\/publish_gadget',/g;" \
-\
-    -pe "s/import pygtk/import gi/g;" \
-    -pe "s/pygtk.require\('2.0'\)/gi.require_version\('Gtk', '3.0'\)/g;" \
-    -pe "s/pygtk.require\(\"2.0\"\)/gi.require_version\(\"Gtk\", \"3.0\"\)/g;" \
-    -pe "s/import gtk\n/from gi.repository import Gtk\n/g;" \
-    -pe "s/(?<!\.)gtk\./Gtk\./g;" \
-    -pe "s/Gtk.ACCEL_/Gtk.AccelFlags./g;" \
-    -pe "s/Gtk.ARROW_/Gtk.ArrowType./g;" \
-    -pe "s/Gtk.ASSISTANT_PAGE_/Gtk.AssistantPageType./g;" \
-    -pe "s/Gtk.BUTTONBOX_/Gtk.ButtonBoxStyle./g;" \
-    -pe "s/Gtk.BUTTONS_/Gtk.ButtonsType./g;" \
-    -pe "s/Gtk.CELL_RENDERER_MODE_/Gtk.CellRendererMode./g;" \
-    -pe "s/Gtk.CELL_RENDERER_FOCUSED/Gtk.CellRendererState.FOCUSED/g;" \
-    -pe "s/Gtk.CELL_RENDERER_INSENSITIVE/Gtk.CellRendererState.INSENSITIVE/g;" \
-    -pe "s/Gtk.CELL_RENDERER_PRELIT/Gtk.CellRendererState.PRELIT/g;" \
-    -pe "s/Gtk.CELL_RENDERER_SORTED/Gtk.CellRendererState.SORTED/g;" \
-    -pe "s/Gtk.CELL_RENDERER_SELECTED/Gtk.CellRendererState.SELECTED/g;" \
-    -pe "s/Gtk.CORNER_/Gtk.CornerType./g;" \
-    -pe "s/Gtk.DIALOG_/Gtk.DialogFlags./g;" \
-    -pe "s/Gtk.ENTRY_ICON_/Gtk.EntryIconPosition./g;" \
-    -pe "s/Gtk.EXPAND/Gtk.AttachOptions.EXPAND/g;" \
-    -pe "s/Gtk.FALSE/False/g;" \
-    -pe "s/Gtk.FILE_CHOOSER_ACTION_/Gtk.FileChooserAction./g;" \
-    -pe "s/Gtk.FILL/Gtk.AttachOptions.FILL/g;" \
-    -pe "s/Gtk.ICON_LOOKUP_/Gtk.IconLookupFlags./g;" \
-    -pe "s/Gtk.ICON_SIZE_/Gtk.IconSize./g;" \
-    -pe "s/Gtk.IMAGE_/Gtk.ImageType./g;" \
-    -pe "s/Gtk.JUSTIFY_/Gtk.Justification./g;" \
-    -pe "s/Gtk.MESSAGE_/Gtk.MessageType./g;" \
-    -pe "s/Gtk.MOVEMENT_/Gtk.MovementStep./g;" \
-    -pe "s/Gtk.ORIENTATION_/Gtk.Orientation./g;" \
-    -pe "s/Gtk.POLICY_/Gtk.PolicyType./g;" \
-    -pe "s/Gtk.POS_/Gtk.PositionType./g;" \
-    -pe "s/Gtk.RECENT_FILTER_/Gtk.RecentFilterFlags./g;" \
-    -pe "s/Gtk.RECENT_SORT_/Gtk.RecentSortType./g;" \
-    -pe "s/Gtk.RELIEF_/Gtk.ReliefStyle./g;" \
-    -pe "s/Gtk.RESPONSE_/Gtk.ResponseType./g;" \
-    -pe "s/Gtk.SELECTION_/Gtk.SelectionMode./g;" \
-    -pe "s/Gtk.SHADOW_/Gtk.ShadowType./g;" \
-    -pe "s/Gtk.SHADOW_NONE/Gtk.ShadowType.NONE/g;" \
-    -pe "s/Gtk.SHRINK/Gtk.AttachOptions.SHRINK/g;" \
-    -pe "s/Gtk.SIZE_GROUP_/Gtk.SizeGroupMode./g;" \
-    -pe "s/Gtk.SORT_/Gtk.SortType./g;" \
-    -pe "s/Gtk.STATE_/Gtk.StateType./g;" \
-    -pe "s/Gtk.TARGET_/Gtk.TargetFlags./g;" \
-    -pe "s/Gtk.TEXT_DIR_/Gtk.TextDirection./g;" \
-    -pe "s/Gtk.TEXT_SEARCH_/Gtk.TextSearchFlags./g;" \
-    -pe "s/Gtk.TEXT_WINDOW_/Gtk.TextWindowType./g;" \
-    -pe "s/Gtk.TOOLBAR_/Gtk.ToolbarStyle./g;" \
-    -pe "s/Gtk.TREE_MODEL_/Gtk.TreeModelFlags./g;" \
-    -pe "s/Gtk.TREE_VIEW_COLUMN_/Gtk.TreeViewColumnSizing./g;" \
-    -pe "s/Gtk.TREE_VIEW_DROP_/Gtk.TreeViewDropPosition./g;" \
-    -pe "s/Gtk.TRUE/True/g;" \
-    -pe "s/Gtk.WINDOW_/Gtk.WindowType./g;" \
-    -pe "s/Gtk.DEST_DEFAULT_/Gtk.DestDefaults./g;" \
-    -pe "s/Gtk.WIN_POS_/Gtk.WindowPosition./g;" \
-    -pe "s/Gtk.WRAP_/Gtk.WrapMode./g;" \
-    -pe "s/Gtk.UI_MANAGER_/Gtk.UIManagerItemType./g;" \
-    -pe "s/Gtk.accel_map_/Gtk.AccelMap./g;" \
-    -pe "s/Gtk.settings_get_/Gtk.Settings.get_/g;" \
-    -pe "s/Gtk.icon_theme_get_default/Gtk.IconTheme.get_default/g;" \
-    -pe "s/Gtk.recent_manager_get_default/Gtk.RecentManager.get_default/g;" \
-    -pe "s/Gtk.image_new_from_stock/Gtk.Image.new_from_stock/g;" \
-    -pe "s/Gtk.image_new_from_icon_name/Gtk.Image.new_from_icon_name/g;" \
-    -pe "s/Gtk.window_set_default_icon_name/Gtk.Window.set_default_icon_name/g; " \
-    -pe "s/Gtk.combo_box_new_text/Gtk.ComboBoxText/g;" \
-    -pe "s/Gtk.keysyms\./Gdk.KEY_/g;" \
-    -pe "s/set_flags\(Gtk.CAN_DEFAULT\)/set_can_default\(True\)/g;" \
-    -pe "s/.flags\(\) & Gtk.MAPPED/.get_mapped\(\)/g;" \
-    -pe "s/.flags\(\) & Gtk.REALIZED/.get_realized\(\)/g;" \
-    -pe "s/\.window\.set_type_hint/.set_type_hint/g;" \
-    -pe "s/\.window\.set_skip_taskbar_hint/.set_skip_taskbar_hint/g;" \
-    -pe "s/\.window\.set_transient_for/.set_transient_for/g;" \
-    -pe "s/Gtk.Alignment\(/Gtk.Alignment.new\(/g;" \
-    -pe "#s/Gtk.Window.__init__\(self\)/Gtk.Window.__init__\(Gtk.WindowType.TOPLEVEL\)/g;" \
-    -pe "s/\.child([^_A-Za-z])/.get_child\(\)\1/g;" \
-\
-    -pe "s/column.pack_start\(([^,\)]*)\)/column.pack_start\(\1, True\)/g;" \
-    -pe "s/pack_start\(([^,\)]*)\)/pack_start\(\1, True, True, 0\)/g;" \
-    -pe "s/pack_start\(([^,]*), fill=([^,\)]*)\)/pack_start\(\1, True, \2, 0\)/g;" \
-    -pe "s/pack_start\(([^,]*), expand=([^,\)]*)\)/pack_start\(\1, \2, True, 0\)/g;" \
-    -pe "s/pack_start\(([^,]*),(\s*)padding=([A-Za-z0-9._]*)\)/pack_start\(\1,\2True, True,\2\3\)/g;" \
-    -pe "s/column.pack_end\(([^,\)]*)\)/column.pack_end\(\1, True\)/g;" \
-    -pe "s/pack_end\(([^,\)]*)\)/pack_end\(\1, True, True, 0\)/g;" \
-    -pe "s/pack_end\(([^,]*), fill=([^,\)]*)\)/pack_end\(\1, True, \2, 0\)/g;" \
-    -pe "s/pack_end\(([^,]*), expand=([^,\)]*)\)/pack_end\(\1, \2, True, 0\)/g;" \
-    -pe "s/pack_end\(([^,]*),(\s*)padding=([A-Za-z0-9._]*)\)/pack_end\(\1,\2True, True,\2\3\)/g;" \
-    -pe "#s/Gtk.HBox\(\)/Gtk.HBox\(False, 0\)/g;" \
-    -pe "#s/Gtk.VBox\(\)/Gtk.VBox\(False, 0\)/g;" \
-    -pe "s/Gtk.Label\s*\(([^,\)]+)\)/Gtk.Label\(label=\1\)/g;" \
-    -pe "s/Gtk.AccelLabel\s*\(([^,\)]+)\)/Gtk.AccelLabel\(label=\1\)/g;" \
-    -pe "s/Gtk.((?:Accel)?Label)\(label=label=/Gtk.\1\(label=/g;" \
-    -pe "s/len\(self._content.get_children\(\)\) > 0/self._content.get_children\(\)/g;" \
-    -pe "s/len\(self.menu.get_children\(\)\) > 0/self.menu.get_children\(\)/g;" \
-    -pe "s/import gobject\n/from gi.repository import GObject\n/g;" \
-    -pe "s/Gtk\..*\.__init__/gobject.GObject.__init__/g;" \
-\
-    -pe "s/rsvg.Handle\s*\(data=([^,\)]+)\)/Rsvg.Handle.new_from_data(\1)/g;" \
-\
-    -pe "s/from gtk import gdk\n/from gi.repository import Gdk\n/g;" \
-    -pe "s/import gtk.gdk as gdk\n/from gi.repository import Gdk\n/g;" \
-    -pe "s/Gtk.gdk.x11_/GdkX11.x11_/g;" \
-    -pe "s/Gtk.gdk\./Gdk\./g;" \
-    -pe "s/(?<!\.)gdk\./Gdk\./g;" \
-    -pe "s/Gdk.screen_width/Gdk.Screen.width/g;" \
-    -pe "s/Gdk.screen_height/Gdk.Screen.height/g;" \
-    -pe "s/Gdk.screen_get_default/Gdk.Screen.get_default/g;" \
-    -pe "s/Gdk.display_get_default/Gdk.Display.get_default/g;" \
-    -pe "s/screen_, x_, y_, modmask = display.get_pointer\(\)/x_, y_, modmask = display.get_pointer\(None\)/g;" \
-    -pe "s/Gdk.WINDOW_TYPE_HINT_/Gdk.WindowTypeHint./g;" \
-    -pe "s/Gdk.SHIFT_MASK/Gdk.ModifierType.SHIFT_MASK/g;" \
-    -pe "s/Gdk.LOCK_MASK/Gdk.ModifierType.LOCK_MASK/g;" \
-    -pe "s/Gdk.CONTROL_MASK/Gdk.ModifierType.CONTROL_MASK/g;" \
-    -pe "s/Gdk.MOD1_MASK/Gdk.ModifierType.MOD1_MASK/g;" \
-    -pe "s/Gdk.MOD2_MASK/Gdk.ModifierType.MOD2_MASK/g;" \
-    -pe "s/Gdk.MOD3_MASK/Gdk.ModifierType.MOD3_MASK/g;" \
-    -pe "s/Gdk.MOD4_MASK/Gdk.ModifierType.MOD4_MASK/g;" \
-    -pe "s/Gdk.MOD5_MASK/Gdk.ModifierType.MOD5_MASK/g;" \
-    -pe "s/Gdk.BUTTON1_MASK/Gdk.ModifierType.BUTTON1_MASK/g;" \
-    -pe "s/Gdk.BUTTON2_MASK/Gdk.ModifierType.BUTTON2_MASK/g;" \
-    -pe "s/Gdk.BUTTON3_MASK/Gdk.ModifierType.BUTTON3_MASK/g;" \
-    -pe "s/Gdk.BUTTON4_MASK/Gdk.ModifierType.BUTTON4_MASK/g;" \
-    -pe "s/Gdk.BUTTON5_MASK/Gdk.ModifierType.BUTTON5_MASK/g;" \
-    -pe "s/Gdk.RELEASE_MASK/Gdk.ModifierType.RELEASE_MASK/g;" \
-    -pe "s/Gdk.MODIFIER_MASK/Gdk.ModifierType.MODIFIER_MASK/g;" \
-    -pe "s/Gdk.([A-Z_0-9]*)_MASK/Gdk.EventMask.\1_MASK/g;" \
-    -pe "s/Gdk.VISIBILITY_FULLY_OBSCURED/Gdk.VisibilityState.FULLY_OBSCURED/g;" \
-    -pe "s/Gdk.NOTIFY_ANCESTOR/Gdk.NotifyType.ANCESTOR/g;" \
-    -pe "s/Gdk.NOTIFY_INFERIOR/Gdk.NotifyType.INFERIOR/g;" \
-    -pe "s/Gdk.NOTIFY_NONLINEAR_VIRTUAL/Gdk.NotifyType.NONLINEAR_VIRTUAL/g;" \
-    -pe "s/Gdk.NOTIFY_NONLINEAR/Gdk.NotifyType.NONLINEAR/g;" \
-    -pe "s/Gdk.NOTIFY_UNKNOWN/Gdk.NotifyType.UNKNOWN/g;" \
-    -pe "s/Gdk.NOTIFY_VIRTUAL/Gdk.NotifyType.VIRTUAL/g;" \
-    -pe "s/Gdk.PROP_MODE_APPEND/Gdk.PropMode.APPEND/g;" \
-    -pe "s/Gdk.PROP_MODE_PREPEND/Gdk.PropMode.PREPEND/g;" \
-    -pe "s/Gdk.PROP_MODE_REPLACE/Gdk.PropMode.REPLACE/g;" \
-    -pe "s/Gdk.BUTTON_PRESS/Gdk.EventType.BUTTON_PRESS/g;" \
-    -pe "s/Gdk.ACTION_/Gdk.DragAction./g;" \
-    -pe "s/Gdk.GRAB_/Gdk.GrabStatus./g;" \
-    -pe "s/Gdk.SCROLL_(DOWN|LEFT|RIGHT|UP)/Gdk.ScrollDirection.\1/g;" \
-    -pe "s/Gdk.([A-Z]+_(PTR|CURSOR))/Gdk.CursorType.\1/g;" \
-    -pe "s/Gdk.(CROSSHAIR)/Gdk.CursorType.\1/g;" \
-    -pe "s/Gdk.(WATCH)/Gdk.CursorType.\1/g;" \
-    -pe "s/Gdk.(ARROW)/Gdk.CursorType.\1/g;" \
-    -pe "s/Gdk.(CLOCK)/Gdk.CursorType.\1/g;" \
-    -pe "s/Gdk.WINDOW_STATE_(ABOVE|BELOW|FOCUSED|FULLSCREEN|ICONIFIED|MAXIMIZED|STICKY|WITHDRAWN)/Gdk.WindowState.\1/g;" \
-    -pe "s/Gdk.Cursor\s*\(/Gdk.Cursor.new\(/g;" \
-    -pe "s/#Gdk.Rectangle\(([^,\)]*), ([^,\)]*), ([^,\)]*), ([^,\)]*)\)/\1, \2, \3, \4/g;" \
-    -pe "s/Gdk.Rectangle//g;" \
-    -pe "s/intersection = child_rect.intersect/intersects_, intersection = child_rect.intersect/g;" \
-    -pe "s/event.state/event.get_state\(\)/g;" \
-\
-    -pe "s/Gdk.pixbuf_/GdkPixbuf.Pixbuf./g;" \
-    -pe "s/Gdk.Pixbuf/GdkPixbuf.Pixbuf/g;" \
-    -pe "s/Gdk.INTERP_/GdkPixbuf.InterpType./g;" \
-    -pe "s/Gdk.COLORSPACE_RGB/GdkPixbuf.Colorspace.RGB/g;" \
-\
-    -pe "s/import pango\n/from gi.repository import Pango\n/g;" \
-    -pe "s/pango\./Pango\./g;" \
-    -pe "s/Pango.ALIGN_/Pango.Alignment./g;" \
-    -pe "s/Pango.ELLIPSIZE_/Pango.EllipsizeMode./g;" \
-    -pe "s/Pango.STYLE_/Pango.Style./g;" \
-    -pe "s/Pango.UNDERLINE_/Pango.Underline./g;" \
-    -pe "s/Pango.WEIGHT_/Pango.Weight./g;" \
-    -pe "s/Pango.WRAP_/Pango.WrapMode./g;" \
-    -pe "s/Pango.TAB_/Pango.TabAlign./g;" \
-\
-    -pe "s/import atk\n/from gi.repository import Atk\n/g;" \
-    -pe "s/atk\./Atk\./g;" \
-    -pe "s/Atk.HYPERLINK_/Atk.HyperlinkStateFlags./g;" \
-    -pe "s/Atk.KEY_EVENT_/Atk.KeyEventType./g;" \
-    -pe "s/Atk.LAYER_/Atk.Layer./g;" \
-    -pe "s/Atk.RELATION_/Atk.RelationType./g;" \
-    -pe "s/Atk.ROLE_/Atk.Role./g;" \
-    -pe "s/Atk.STATE_/Atk.StateType./g;" \
-    -pe "s/Atk.TEXT_ATTR_/Atk.TextAttribute./g;" \
-    -pe "s/Atk.TEXT_BOUNDARY_/Atk.TextBoundary./g;" \
-    -pe "s/Atk.TEXT_CLIP_/Atk.TextClipType./g;" \
-\
-    -pe "s/import gio\n/from gi.repository import Gio\n/g;" \
-    -pe "s/gio\./Gio\./g;" \
-    -pe "s/Gio\.File\(uri=/Gio\.File\.new_for_uri\(/g;" \
-    -pe "s/Gio\.File\(path=/Gio\.File\.new_for_path\(/g;" \
-    -pe "s/Gio.FILE_COPY_/Gio.FileCopyFlags./g;" \
-    -pe "s/Gio.FILE_CREATE_/Gio.FileCreateFlags./g;" \
-    -pe "s/Gio.FILE_MONITOR_EVENT_/Gio.FileMonitorEvent./g;" \
-    -pe "s/Gio.FILE_MONITOR_/Gio.FileMonitorFlags./g;" \
-    -pe "s/Gio.FILE_TYPE_/Gio.FileType./g;" \
-    -pe "s/Gio.FILE_QUERY_INFO_/Gio.FileQueryInfoFlags./g;" \
-    -pe "s/Gio.MOUNT_MOUNT_/Gio.MountMountFlags./g;" \
-    -pe "s/Gio.MOUNT_OPERATION_/Gio.MountOperationResult./g;" \
-    -pe "s/Gio.MOUNT_UNMOUNT_/Gio.MountUnmountFlags./g;" \
-    -pe "s/Gio.OUTPUT_STREAM_SPLICE_/Gio.OutputStreamSpliceFlags./g;" \
-    -pe "s/Gio.vfs_/Gio.Vfs./g;" \
-\
-    -pe "#s/import glib\n/from gi.repository import GLib\n/g;" \
-    -pe "#s/(?<!\.)glib\./GLib\./g;" \
-    -pe "#s/GLib.IO_(ERR|HUP|IN|NVAL|OUT|PRI)/GLib.IOCondition./g;" \
-    -pe "#s/GLib.IO_FLAG_/GLib.IOFlags./g;" \
-    -pe "#s/GLib.IO_STATUS_/GLib.IOStatus./g;" \
-    -pe "#s/GLib.OPTION_ERROR_/GLib.OptionError./g;" \
-    -pe "#s/GLib.OPTION_FLAG_/GLib.OptionFlags./g;" \
-    -pe "#s/GLib.SPAWN_/GLib.SpawnFlags./g;" \
-    -pe "#s/GLib.USER_DIRECTORY_/GLib.UserDirectory.DIRECTORY_/g;" \
-\
-    -pe "s/(?<!\.)gobject\./GObject\./g;" \
-    -pe "s/GObject.SIGNAL_/GObject.SignalFlags./g;" \
-    -pe "s/GObject.TYPE_NONE/None/g;" \
-\
-    -pe "s/import hippo\n/from gi.repository import Hippo\n/g;" \
-    -pe "s/hippo\./Hippo\./g;" \
-    -pe "s/Hippo\..*\.__init__/gobject.GObject.__init__/g;" \
-    -pe "s/Hippo.PACK_/Hippo.PackFlags./g;" \
-    -pe "s/Hippo.ORIENTATION_/Hippo.Orientation./g;" \
-    -pe "#s/insert_sorted\(([^,\)]*), ([^,\)]*), ([^,\)]*)\)/insert_sorted\(\1, \2, \3, None\)/g;" \
-    -pe "s/self\._box\.insert_sorted/#self\._box\.insert_sorted/g;" \
-    -pe "s/self._box.append\(([^,\)]*)\)/self._box.append\(\1, 0\)/g;" \
-    -pe "s/self.append\(self._buddy_icon\)/self.append\(self._buddy_icon, 0\)/g;" \
-    -pe "s/self._box.sort\(([^,\)]*)\)/self._box.sort\(\1, None\)/g;" \
-\
-    -pe "s/import wnck\n/from gi.repository import Wnck\n/g;" \
-    -pe "s/wnck\./Wnck\./g;" \
-    -pe "s/Wnck.screen_get_default/Wnck.Screen.get_default/g;" \
-    -pe "s/Wnck.WINDOW_/Wnck.WindowType./g;" \
-\
-    -pe "s/from sugar import _sugarext\n/from gi.repository import SugarExt\n/g;" \
-    -pe "s/_sugarext\.ICON_ENTRY_/SugarExt.SexyIconEntryPosition./g;" \
-    -pe "s/_sugarext\.IconEntry/SugarExt.SexyIconEntry/g;" \
-    -pe "s/_sugarext\.SMClientXSMP/SugarExt.GsmClientXSMP/g;" \
-    -pe "s/_sugarext\.VolumeAlsa/SugarExt.AcmeVolumeAlsa/g;" \
-    -pe "s/_sugarext\./SugarExt\./g;" \
-\
-    -pe "s/import gtksourceview2\n/from gi.repository import GtkSource\n/g;" \
-    -pe "s/import gtksourceview2 as gsv\n/from gi.repository import GtkSource\n/g;" \
-    -pe "s/gtksourceview2\./GtkSource\./g;" \
-    -pe "s/gsv\./GtkSource\./g;" \
-    -pe "s/GtkSource.DRAW_SPACES_/GtkSource.DrawSpacesFlags./g;" \
-    -pe "s/GtkSource.SMART_HOME_END_/GtkSource.SmartHomeEndType./g;" \
-    -pe "s/GtkSource.style_scheme_manager_get_default/GtkSource.StyleSchemeManager.get_default/g;" \
-    -pe "s/GtkSource.language_manager_get_default/GtkSource.LanguageManager.get_default/g;" \
-\
-    -pe "#s/import cairo\n/from gi.repository import cairo\n/g;" \
-\
-    -pe "s/SugarExt.xsmp_init\(\)/'mec'/g;" \
-    -pe "s/SugarExt.xsmp_run\(\)/#SugarExt.xsmp_run\(\)/g;" \
-    -pe "s/SugarExt.session_create_global\(\)/None #SugarExt.session_create_global\(\)/g;" \
-    -pe "s/self.session.start\(\)/return #self.session.start\(\)/g;" \
-\
-    -pe "s/self._box.sort\(self._layout.compare_activities, None\)/pass #self._box.sort(self._layout.compare_activities, None)/g;" \
-    -pe "s/attach_points = info.get_attach_points/has_attach_points_, attach_points = info.get_attach_points/g;" \
-    -pe "s/attach_points\[0\]\[0\]/attach_points\[0\].x/g;" \
-    -pe "s/attach_points\[0\]\[1\]/attach_points\[0\].y/g;" \
-    -pe "s/has_attach_points_/return 0,0;has_attach_points_/g;" \
-    -pe "s/gobject.GObject.__init__\(self, self._model_filter\)/gobject.GObject.__init__\(self, model=self._model_filter\)/g;" \
-    -pe "s/self._model_filter.set_visible_func/return;self._model_filter.set_visible_func/g;" \
-    -pe "s/buddies_column.set_cell_data_func/return;buddies_column.set_cell_data_func/g;" \
-    -pe "s/Hippo\.cairo_surface_from_gdk_pixbuf/SugarExt\.cairo_surface_from_pixbuf/g;" \
-\
-    -pe "s/import pynotify\n/from gi.repository import Notify\n/g;" \
-    -pe "s/pynotify\./Notify\./g;" \
-\
-    -pe "s/import webkit\n/from gi.repository import WebKit\n/g;" \
-    -pe "s/import clutter\n/from gi.repository import Clutter\n/g;" \
-    -pe "s/from clutter import cogl\n/from gi.repository import Cogl\n/g;" \
-    -pe "s/(?<!\.)clutter\./Clutter\./g;" \
-    -pe "s/(?<!\.)cogl\./Cogl\./g;" \
-    -pe "s/Clutter.ACTOR_/Clutter.ActorFlags./g;" \
-    -pe "s/Clutter.ALLOCATION_/Clutter.AllocationFlags./g;" \
-    -pe "s/Clutter.BIND_/Clutter.BindCoordinate./g;" \
-    -pe "s/Clutter.BIN_ALIGNMENT_/Clutter.BinAlignment./g;" \
-    -pe "s/Clutter.BOX_ALIGNMENT_/Clutter.BoxAlignment./g;" \
-    -pe "s/Clutter.DRAG_/Clutter.DragAxis./g;" \
-    -pe "s/Clutter.EASE_/Clutter.AnimationMode./g;" \
-    -pe "s/Clutter.FEATURE_/Clutter.FeatureFlags./g;" \
-    -pe "s/Clutter.FLOW_/Clutter.FLOW_ORIENTATION./g;" \
-    -pe "s/Clutter.FONT_/Clutter.FontFlags./g;" \
-    -pe "s/Clutter.GRAVITY_/Clutter.Gravity./g;" \
-    -pe "s/Clutter.INTERPOLATION/Clutter.Interpolation./g;" \
-    -pe "s/Clutter.LINEAR/Clutter.AnimationMode.LINEAR/g;" \
-    -pe "s/Clutter.PATH_/Clutter.PathNodeType./g;" \
-    -pe "s/Clutter.PICK_/Clutter.PickMode./g;" \
-    -pe "s/Clutter.REQUEST_/Clutter.RequestMode./g;" \
-    -pe "s/Clutter.ROTATE_/Clutter.RotateDirection./g;" \
-    -pe "s/Clutter.SCRIPT_/Clutter.ScriptError./g;" \
-    -pe "s/Clutter.STAGE_STATE_/Clutter.StageState./g;" \
-    -pe "s/Clutter.TABLE_ALIGNMENT_/Clutter.TableAlignment./g;" \
-    -pe "s/Clutter.TEXTURE_ERROR_/Clutter.TextureError./g;" \
-    -pe "s/Clutter.TEXTURE_/Clutter.TextureFlags./g;" \
-    -pe "s/Clutter.TEXT_/Clutter.TextDirection./g;" \
-    -pe "s/Clutter.TIMELINE_/Clutter.TimelineDirection./g;" \
-    -pe "s/Clutter.UNIT_/Clutter.UnitType./g;" \
-    -pe "s/Clutter.X_AXIS/Clutter.RotateAxis.X_AXIS/g;" \
-    -pe "s/Clutter.Y_AXIS/Clutter.RotateAxis.Y_AXIS/g;" \
-    -pe "s/Clutter.Z_AXIS/Clutter.RotateAxis.Z_AXIS/g;" \
-    -pe "s/Clutter.ENTER/Clutter.EventType.ENTER/g;" \
-    -pe "s/Clutter.LEAVE/Clutter.EventType.LEAVE/g;" \
-    -pe "s/Clutter.BUTTON_PRESS/Clutter.EventType.BUTTON_PRESS/g;" \
-    -pe "s/Clutter.BUTTON_RELEASE/Clutter.EventType.BUTTON_RELEASE/g;" \
-    -pe "s/Clutter.KEY_PRESS/Clutter.EventType.KEY_PRESS/g;" \
-    -pe "s/Clutter.KEY_RELEASE/Clutter.EventType.KEY_RELEASE/g;" \
-    -pe "s/Clutter.SCROLL/Clutter.EventType.SCROLL/g;" \
-    -pe "s/Clutter.DELETE/Clutter.EventType.DELETE/g;" \
-    -pe "s/Clutter.CLIENT_MESSAGE/Clutter.EventType.CLIENT_MESSAGE/g;" \
-    -pe "s/Clutter.DESTROY_NOTIFY/Clutter.EventType.DESTROY_NOTIFY/g;" \
-    -pe "s/Clutter.STAGE_STATE/Clutter.EventType.STAGE_STATE/g;" \
-    -pe "s/Clutter.MOTION/Clutter.EventType.MOTION/g;" \
-    -pe "s/Clutter.BUTTON1_MASK/Clutter.ModifierType.BUTTON1_MASK/g;" \
-    -pe "s/Clutter.BUTTON2_MASK/Clutter.ModifierType.BUTTON2_MASK/g;" \
-    -pe "s/Clutter.BUTTON3_MASK/Clutter.ModifierType.BUTTON3_MASK/g;" \
-    -pe "s/Clutter.BUTTON4_MASK/Clutter.ModifierType.BUTTON4_MASK/g;" \
-    -pe "s/Clutter.BUTTON5_MASK/Clutter.ModifierType.BUTTON5_MASK/g;" \
-    -pe "s/Clutter.CONTROL_MASK/Clutter.ModifierType.CONTROL_MASK/g;" \
-    -pe "s/Clutter.HYPER_MASK/Clutter.ModifierType.HYPER_MASK/g;" \
-    -pe "s/Clutter.LOCK_MASK/Clutter.ModifierType.LOCK_MASK/g;" \
-    -pe "s/Clutter.META_MASK/Clutter.ModifierType.META_MASK/g;" \
-    -pe "s/Clutter.MOD1_MASK/Clutter.ModifierType.MOD1_MASK/g;" \
-    -pe "s/Clutter.MOD2_MASK/Clutter.ModifierType.MOD2_MASK/g;" \
-    -pe "s/Clutter.MOD3_MASK/Clutter.ModifierType.MOD3_MASK/g;" \
-    -pe "s/Clutter.MOD4_MASK/Clutter.ModifierType.MOD4_MASK/g;" \
-    -pe "s/Clutter.MOD5_MASK/Clutter.ModifierType.MOD5_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_MASK/Clutter.ModifierType.MODIFIER_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_13_MASK/Clutter.ModifierType.MODIFIER_RESERVED_13_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_14_MASK/Clutter.ModifierType.MODIFIER_RESERVED_14_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_15_MASK/Clutter.ModifierType.MODIFIER_RESERVED_15_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_16_MASK/Clutter.ModifierType.MODIFIER_RESERVED_16_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_17_MASK/Clutter.ModifierType.MODIFIER_RESERVED_17_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_18_MASK/Clutter.ModifierType.MODIFIER_RESERVED_18_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_19_MASK/Clutter.ModifierType.MODIFIER_RESERVED_19_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_20_MASK/Clutter.ModifierType.MODIFIER_RESERVED_20_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_21_MASK/Clutter.ModifierType.MODIFIER_RESERVED_21_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_22_MASK/Clutter.ModifierType.MODIFIER_RESERVED_22_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_23_MASK/Clutter.ModifierType.MODIFIER_RESERVED_23_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_24_MASK/Clutter.ModifierType.MODIFIER_RESERVED_24_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_25_MASK/Clutter.ModifierType.MODIFIER_RESERVED_25_MASK/g;" \
-    -pe "s/Clutter.MODIFIER_RESERVED_29_MASK/Clutter.ModifierType.MODIFIER_RESERVED_29_MASK/g;" \
-    -pe "s/Clutter.RELEASE_MASK/Clutter.ModifierType.RELEASE_MASK/g;" \
-    -pe "s/Clutter.SHIFT_MASK/Clutter.ModifierType.SHIFT_MASK/g;" \
-    -pe "s/Clutter.SUPER_MASK/Clutter.ModifierType.SUPER_MASK/g;" \
-\
-    -pe "s/import gst\n/from gi.repository import Gst\n/g;" \
-    -pe "s/(?<!\.)gst\./Gst\./g;" \
-    -pe "s/Gst.element_factory_find/Gst.ElementFactory.find/g;" \
-    -pe "s/Gst.element_factory_make/Gst.ElementFactory.make/g;" \
-    -pe "s/Gst.caps_from_string/Gst.Caps.from_string/g;" \
-    -pe "s/Gst.STATE_CHANGE_/Gst.StateChangeReturn./g;" \
-    -pe "s/Gst.STATE_/Gst.State./g;" \
-    -pe "s/Gst.MESSAGE_/Gst.MessageType./g;" \
-    -pe "s/Gst.FORMAT_/Gst.Format./g;" \
-    -pe "s/Gst.SEEK_FLAG_/Gst.SeekFlags./g;" \
-    -pe "s/Gst.SEEK_TYPE_/Gst.SeekType./g;" \
-    -pe "s/Gst.LEVEL_/Gst.DebugLevel./g;" \
-    -pe "s/Gst.URI_/Gst.URIType./g;" \
-    -pe "s/Gst.element_make_from_uri/Gst.Element.make_from_uri/g;" \
-    -pe "s/Gst.event_new_seek/Gst.Event.new_seek/g;" \
-    -pe "s/Gst.GhostPad\(/Gst.GhostPad.new\(/g;" \
-    $f
-done
-
-
index 4cec178..6b07aa6 100644 (file)
@@ -1,12 +1,12 @@
 # you can use the --variable=pygobjectincludedir argument to
 # pkg-config to get this value. You might want to use this to
 # install additional headers.
-pygobjectincludedir=${pcfiledir}/gi/_gobject
-overridesdir=${pcfiledir}/gi/overrides
+pygobjectincludedir=${pc_top_builddir}/${pcfiledir}/gi/_gobject
+overridesdir=${pc_top_builddir}/${pcfiledir}/gi/overrides
 
 Name: PyGObject
 Description: Python bindings for GObject
 Requires: gobject-2.0
 Requires.private: @LIBFFI_PC@
 Version: @VERSION@
-Cflags: -I${pcfiledir}/gi/_gobject
+Cflags: -I${pc_top_builddir}/${pcfiledir}/gi/_gobject
diff --git a/pygobject.doap b/pygobject.doap
deleted file mode 100644 (file)
index d366a2a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
-         xmlns:foaf="http://xmlns.com/foaf/0.1/"
-         xmlns:gnome="http://api.gnome.org/doap-extensions#"
-         xmlns="http://usefulinc.com/ns/doap#">
-
-  <name xml:lang="en">PyGObject</name>
-  <shortdesc xml:lang="en">Python bindings for GObject Introspection</shortdesc>
-  <description>
-GObject is a object system used by GTK+,  GStreamer and other libraries.
-
-PyGObject provides a convenient wrapper for use in Python programs when accessing GObject libraries.
-
-Like the GObject library itself PyGObject is licensed under the GNU LGPL, so is suitable for use in both free software and proprietary applications. It is already in use in many applications ranging from small single purpose scripts up to large full featured applications.
-
-PyGObject now dynamically accesses any GObject libraries that uses GObject Introspection. It replaces the need for separate modules such as PyGTK, GIO and python-gnome to build a full GNOME 3.0 application. Once new functionality is added to gobject library it is instantly available as a Python API without the need for intermediate Python glue.
-  </description>
-  <homepage rdf:resource="https://wiki.gnome.org/Projects/PyGObject" />
-  <mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/python-hackers-list" />
-  <category rdf:resource="http://api.gnome.org/doap-extensions#core" />
-  <download-page rdf:resource="http://download.gnome.org/sources/pygobject/" />
-  <bug-database rdf:resource="https://bugzilla.gnome.org/browse.cgi?product=pygobject" />
-  <programming-language>C</programming-language>
-  <programming-language>Python</programming-language>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Tomeu Vizoso</foaf:name>
-      <foaf:mbox rdf:resource="mailto:tomeu.vizoso@collabora.co.uk" />
-      <gnome:userid>tomeuv</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Martin Pitt</foaf:name>
-      <foaf:mbox rdf:resource="mailto:martinpitt@gnome.org" />
-      <gnome:userid>martinpitt</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Paolo Borelli</foaf:name>
-      <foaf:mbox rdf:resource="mailto:pborelli@gnome.org" />
-      <gnome:userid>pborelli</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Ignacio Casal Quinteiro</foaf:name>
-      <foaf:mbox rdf:resource="mailto:icq@gnome.org" />
-      <gnome:userid>icq</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Sebastian Pölsterl</foaf:name>
-      <foaf:mbox rdf:resource="mailto:sebp@k-d-w.org" />
-      <gnome:userid>sebp</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-  <maintainer>
-    <foaf:Person>
-      <foaf:name>Simon Feltman</foaf:name>
-      <foaf:mbox rdf:resource="mailto:sfeltman@src.gnome.org" />
-      <gnome:userid>sfeltman</gnome:userid>
-    </foaf:Person>
-  </maintainer>
-</Project>
diff --git a/pygtkcompat/Makefile.am b/pygtkcompat/Makefile.am
deleted file mode 100644 (file)
index 914b3e2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-pygtkcompatdir = $(pyexecdir)/pygtkcompat
-
-pygtkcompat_PYTHON = \
-       __init__.py \
-       generictreemodel.py \
-       pygtkcompat.py
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
-       for f in $(pygtkcompat_PYTHON); do \
-           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
-       done
-
-all-local: build_pylinks
diff --git a/pygtkcompat/Makefile.in b/pygtkcompat/Makefile.in
deleted file mode 100644 (file)
index 94a31e5..0000000
+++ /dev/null
@@ -1,609 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = pygtkcompat
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
-       $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(pygtkcompat_PYTHON) \
-       $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
-am__installdirs = "$(DESTDIR)$(pygtkcompatdir)"
-am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
-py_compile = $(top_srcdir)/py-compile
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/py-compile
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FFI_CFLAGS = @FFI_CFLAGS@
-FFI_LIBS = @FFI_LIBS@
-FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GI_CFLAGS = @GI_CFLAGS@
-GI_DATADIR = @GI_DATADIR@
-GI_LIBS = @GI_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GOBJECT_QUERY = @GOBJECT_QUERY@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBFFI_PC = @LIBFFI_PC@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MKDIR_P = @MKDIR_P@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
-PYCAIRO_LIBS = @PYCAIRO_LIBS@
-PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
-PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
-PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_INCLUDES = @PYTHON_INCLUDES@
-PYTHON_LIBS = @PYTHON_LIBS@
-PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pygtkcompatdir = $(pyexecdir)/pygtkcompat
-pygtkcompat_PYTHON = \
-       __init__.py \
-       generictreemodel.py \
-       pygtkcompat.py
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-               && { if test -f $@; then exit 0; else break; fi; }; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pygtkcompat/Makefile'; \
-       $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --foreign pygtkcompat/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure:  $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-install-pygtkcompatPYTHON: $(pygtkcompat_PYTHON)
-       @$(NORMAL_INSTALL)
-       @list='$(pygtkcompat_PYTHON)'; dlist=; list2=; test -n "$(pygtkcompatdir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(pygtkcompatdir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(pygtkcompatdir)" || exit 1; \
-       fi; \
-       for p in $$list; do \
-         if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
-         if test -f $$b$$p; then \
-           $(am__strip_dir) \
-           dlist="$$dlist $$f"; \
-           list2="$$list2 $$b$$p"; \
-         else :; fi; \
-       done; \
-       for file in $$list2; do echo $$file; done | $(am__base_list) | \
-       while read files; do \
-         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pygtkcompatdir)'"; \
-         $(INSTALL_DATA) $$files "$(DESTDIR)$(pygtkcompatdir)" || exit $$?; \
-       done || exit $$?; \
-       if test -n "$$dlist"; then \
-         $(am__py_compile) --destdir "$(DESTDIR)" \
-                           --basedir "$(pygtkcompatdir)" $$dlist; \
-       else :; fi
-
-uninstall-pygtkcompatPYTHON:
-       @$(NORMAL_UNINSTALL)
-       @list='$(pygtkcompat_PYTHON)'; test -n "$(pygtkcompatdir)" || list=; \
-       py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-       test -n "$$py_files" || exit 0; \
-       dir='$(DESTDIR)$(pygtkcompatdir)'; \
-       pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
-       pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
-       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
-       echo "$$py_files_pep3147";\
-       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
-       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
-       st=0; \
-       for files in \
-         "$$py_files" \
-         "$$pyc_files" \
-         "$$pyo_files" \
-         "$$pyc_files_pep3147" \
-         "$$pyo_files_pep3147" \
-       ; do \
-         $(am__uninstall_files_from_dir) || st=$$?; \
-       done; \
-       exit $$st
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-       list='$(DISTFILES)'; \
-         dist_files=`for file in $$list; do echo $$file; done | \
-         sed -e "s|^$$srcdirstrip/||;t" \
-             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-       case $$dist_files in \
-         */*) $(MKDIR_P) `echo "$$dist_files" | \
-                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-                          sort -u` ;; \
-       esac; \
-       for file in $$dist_files; do \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-           if test -d "$(distdir)/$$file"; then \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-           fi; \
-           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-         else \
-           test -f "$(distdir)/$$file" \
-           || cp -p $$d/$$file "$(distdir)/$$file" \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile all-local
-installdirs:
-       for dir in "$(DESTDIR)$(pygtkcompatdir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-       done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       if test -z '$(STRIP)'; then \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-             install; \
-       else \
-         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-       fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-       @echo "This command is intended for maintainers to use"
-       @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pygtkcompatPYTHON
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pygtkcompatPYTHON
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am all-local check check-am clean clean-generic \
-       clean-libtool cscopelist-am ctags-am distclean \
-       distclean-generic distclean-libtool distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-pygtkcompatPYTHON \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags-am uninstall uninstall-am uninstall-pygtkcompatPYTHON
-
-.PRECIOUS: Makefile
-
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
-       for f in $(pygtkcompat_PYTHON); do \
-           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
-       done
-
-all-local: build_pylinks
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/pygtkcompat/__init__.py b/pygtkcompat/__init__.py
deleted file mode 100644 (file)
index 8ae0337..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-
-# pyflakes.ignore
-from .pygtkcompat import (enable,
-                          enable_gtk,
-                          enable_vte,
-                          enable_poppler,
-                          enable_webkit,
-                          enable_gudev,
-                          enable_gst,
-                          enable_goocanvas)
-
-
-__all__ = ['enable',
-           'enable_gtk',
-           'enable_vte',
-           'enable_poppler',
-           'enable_webkit',
-           'enable_gudev',
-           'enable_gst',
-           'enable_goocanvas']
diff --git a/pygtkcompat/generictreemodel.py b/pygtkcompat/generictreemodel.py
deleted file mode 100644 (file)
index 1c26490..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# generictreemodel - GenericTreeModel implementation for pygtk compatibility.
-# Copyright (C) 2013 Simon Feltman
-#
-#   generictreemodel.py: GenericTreeModel implementation for pygtk compatibility
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
-
-
-# System
-import sys
-import random
-import collections
-import ctypes
-
-# GObject
-from gi.repository import GObject
-from gi.repository import Gtk
-
-
-class _CTreeIter(ctypes.Structure):
-    _fields_ = [('stamp', ctypes.c_int),
-                ('user_data', ctypes.c_void_p),
-                ('user_data2', ctypes.c_void_p),
-                ('user_data3', ctypes.c_void_p)]
-
-    @classmethod
-    def from_iter(cls, iter):
-        offset = sys.getsizeof(object())  # size of PyObject_HEAD
-        return ctypes.POINTER(cls).from_address(id(iter) + offset)
-
-
-def _get_user_data_as_pyobject(iter):
-    citer = _CTreeIter.from_iter(iter)
-    return ctypes.cast(citer.contents.user_data, ctypes.py_object).value
-
-
-def handle_exception(default_return):
-    """Returns a function which can act as a decorator for wrapping exceptions and
-    returning "default_return" upon an exception being thrown.
-
-    This is used to wrap Gtk.TreeModel "do_" method implementations so we can return
-    a proper value from the override upon an exception occurring with client code
-    implemented by the "on_" methods.
-    """
-    def decorator(func):
-        def wrapped_func(*args, **kargs):
-            try:
-                return func(*args, **kargs)
-            except:
-                # Use excepthook directly to avoid any printing to the screen
-                # if someone installed an except hook.
-                sys.excepthook(*sys.exc_info())
-            return default_return
-        return wrapped_func
-    return decorator
-
-
-class GenericTreeModel(GObject.GObject, Gtk.TreeModel):
-    """A base implementation of a Gtk.TreeModel for python.
-
-    The GenericTreeModel eases implementing the Gtk.TreeModel interface in Python.
-    The class can be subclassed to provide a TreeModel implementation which works
-    directly with Python objects instead of iterators.
-
-    All of the on_* methods should be overridden by subclasses to provide the
-    underlying implementation a way to access custom model data. For the purposes of
-    this API, all custom model data supplied or handed back through the overridable
-    API will use the argument names: node, parent, and child in regards to user data
-    python objects.
-
-    The create_tree_iter, set_user_data, invalidate_iters, iter_is_valid methods are
-    available to help manage Gtk.TreeIter objects and their Python object references.
-
-    GenericTreeModel manages a pool of user data nodes that have been used with iters.
-    This pool stores a references to user data nodes as a dictionary value with the
-    key being the integer id of the data. This id is what the Gtk.TreeIter objects
-    use to reference data in the pool.
-    References will be removed from the pool when the model is deleted or explicitly
-    by using the optional "node" argument to the "row_deleted" method when notifying
-    the model of row deletion.
-    """
-
-    leak_references = GObject.Property(default=True, type=bool,
-                                       blurb="If True, strong references to user data attached to iters are "
-                                       "stored in a dictionary pool (default). Otherwise the user data is "
-                                       "stored as a raw pointer to a python object without a reference.")
-
-    #
-    # Methods
-    #
-    def __init__(self):
-        """Initialize. Make sure to call this from derived classes if overridden."""
-        super(GenericTreeModel, self).__init__()
-        self.stamp = 0
-
-        #: Dictionary of (id(user_data): user_data), used when leak-refernces=False
-        self._held_refs = dict()
-
-        # Set initial stamp
-        self.invalidate_iters()
-
-    def iter_depth_first(self):
-        """Depth-first iteration of the entire TreeModel yielding the python nodes."""
-        stack = collections.deque([None])
-        while stack:
-            it = stack.popleft()
-            if it is not None:
-                yield self.get_user_data(it)
-            children = [self.iter_nth_child(it, i) for i in range(self.iter_n_children(it))]
-            stack.extendleft(reversed(children))
-
-    def invalidate_iter(self, iter):
-        """Clear user data and its reference from the iter and this model."""
-        iter.stamp = 0
-        if iter.user_data:
-            if iter.user_data in self._held_refs:
-                del self._held_refs[iter.user_data]
-            iter.user_data = None
-
-    def invalidate_iters(self):
-        """
-        This method invalidates all TreeIter objects associated with this custom tree model
-        and frees their locally pooled references.
-        """
-        self.stamp = random.randint(-2147483648, 2147483647)
-        self._held_refs.clear()
-
-    def iter_is_valid(self, iter):
-        """
-        :Returns:
-            True if the gtk.TreeIter specified by iter is valid for the custom tree model.
-        """
-        return iter.stamp == self.stamp
-
-    def get_user_data(self, iter):
-        """Get the user_data associated with the given TreeIter.
-
-        GenericTreeModel stores arbitrary Python objects mapped to instances of Gtk.TreeIter.
-        This method allows to retrieve the Python object held by the given iterator.
-        """
-        if self.leak_references:
-            return self._held_refs[iter.user_data]
-        else:
-            return _get_user_data_as_pyobject(iter)
-
-    def set_user_data(self, iter, user_data):
-        """Applies user_data and stamp to the given iter.
-
-        If the models "leak_references" property is set, a reference to the
-        user_data is stored with the model to ensure we don't run into bad
-        memory problems with the TreeIter.
-        """
-        iter.user_data = id(user_data)
-
-        if user_data is None:
-            self.invalidate_iter(iter)
-        else:
-            iter.stamp = self.stamp
-            if self.leak_references:
-                self._held_refs[iter.user_data] = user_data
-
-    def create_tree_iter(self, user_data):
-        """Create a Gtk.TreeIter instance with the given user_data specific for this model.
-
-        Use this method to create Gtk.TreeIter instance instead of directly calling
-        Gtk.Treeiter(), this will ensure proper reference managment of wrapped used_data.
-        """
-        iter = Gtk.TreeIter()
-        self.set_user_data(iter, user_data)
-        return iter
-
-    def _create_tree_iter(self, data):
-        """Internal creation of a (bool, TreeIter) pair for returning directly
-        back to the view interfacing with this model."""
-        if data is None:
-            return (False, None)
-        else:
-            it = self.create_tree_iter(data)
-            return (True, it)
-
-    def row_deleted(self, path, node=None):
-        """Notify the model a row has been deleted.
-
-        Use the node parameter to ensure the user_data reference associated
-        with the path is properly freed by this model.
-
-        :Parameters:
-            path : Gtk.TreePath
-                Path to the row that has been deleted.
-            node : object
-                Python object used as the node returned from "on_get_iter". This is
-                optional but ensures the model will not leak references to this object.
-        """
-        super(GenericTreeModel, self).row_deleted(path)
-        node_id = id(node)
-        if node_id in self._held_refs:
-            del self._held_refs[node_id]
-
-    #
-    # GtkTreeModel Interface Implementation
-    #
-    @handle_exception(0)
-    def do_get_flags(self):
-        """Internal method."""
-        return self.on_get_flags()
-
-    @handle_exception(0)
-    def do_get_n_columns(self):
-        """Internal method."""
-        return self.on_get_n_columns()
-
-    @handle_exception(GObject.TYPE_INVALID)
-    def do_get_column_type(self, index):
-        """Internal method."""
-        return self.on_get_column_type(index)
-
-    @handle_exception((False, None))
-    def do_get_iter(self, path):
-        """Internal method."""
-        return self._create_tree_iter(self.on_get_iter(path))
-
-    @handle_exception(False)
-    def do_iter_next(self, iter):
-        """Internal method."""
-        if iter is None:
-            next_data = self.on_iter_next(None)
-        else:
-            next_data = self.on_iter_next(self.get_user_data(iter))
-
-        self.set_user_data(iter, next_data)
-        return next_data is not None
-
-    @handle_exception(None)
-    def do_get_path(self, iter):
-        """Internal method."""
-        path = self.on_get_path(self.get_user_data(iter))
-        if path is None:
-            return None
-        else:
-            return Gtk.TreePath(path)
-
-    @handle_exception(None)
-    def do_get_value(self, iter, column):
-        """Internal method."""
-        return self.on_get_value(self.get_user_data(iter), column)
-
-    @handle_exception((False, None))
-    def do_iter_children(self, parent):
-        """Internal method."""
-        data = self.get_user_data(parent) if parent else None
-        return self._create_tree_iter(self.on_iter_children(data))
-
-    @handle_exception(False)
-    def do_iter_has_child(self, parent):
-        """Internal method."""
-        return self.on_iter_has_child(self.get_user_data(parent))
-
-    @handle_exception(0)
-    def do_iter_n_children(self, iter):
-        """Internal method."""
-        if iter is None:
-            return self.on_iter_n_children(None)
-        return self.on_iter_n_children(self.get_user_data(iter))
-
-    @handle_exception((False, None))
-    def do_iter_nth_child(self, parent, n):
-        """Internal method."""
-        if parent is None:
-            data = self.on_iter_nth_child(None, n)
-        else:
-            data = self.on_iter_nth_child(self.get_user_data(parent), n)
-        return self._create_tree_iter(data)
-
-    @handle_exception((False, None))
-    def do_iter_parent(self, child):
-        """Internal method."""
-        return self._create_tree_iter(self.on_iter_parent(self.get_user_data(child)))
-
-    @handle_exception(None)
-    def do_ref_node(self, iter):
-        self.on_ref_node(self.get_user_data(iter))
-
-    @handle_exception(None)
-    def do_unref_node(self, iter):
-        self.on_unref_node(self.get_user_data(iter))
-
-    #
-    # Python Subclass Overridables
-    #
-    def on_get_flags(self):
-        """Overridable.
-
-        :Returns Gtk.TreeModelFlags:
-            The flags for this model. See: Gtk.TreeModelFlags
-        """
-        raise NotImplementedError
-
-    def on_get_n_columns(self):
-        """Overridable.
-
-        :Returns:
-            The number of columns for this model.
-        """
-        raise NotImplementedError
-
-    def on_get_column_type(self, index):
-        """Overridable.
-
-        :Returns:
-            The column type for the given index.
-        """
-        raise NotImplementedError
-
-    def on_get_iter(self, path):
-        """Overridable.
-
-        :Returns:
-            A python object (node) for the given TreePath.
-        """
-        raise NotImplementedError
-
-    def on_iter_next(self, node):
-        """Overridable.
-
-        :Parameters:
-            node : object
-                Node at current level.
-
-        :Returns:
-            A python object (node) following the given node at the current level.
-        """
-        raise NotImplementedError
-
-    def on_get_path(self, node):
-        """Overridable.
-
-        :Returns:
-            A TreePath for the given node.
-        """
-        raise NotImplementedError
-
-    def on_get_value(self, node, column):
-        """Overridable.
-
-        :Parameters:
-            node : object
-            column : int
-                Column index to get the value from.
-
-        :Returns:
-            The value of the column for the given node."""
-        raise NotImplementedError
-
-    def on_iter_children(self, parent):
-        """Overridable.
-
-        :Returns:
-            The first child of parent or None if parent has no children.
-            If parent is None, return the first node of the model.
-        """
-        raise NotImplementedError
-
-    def on_iter_has_child(self, node):
-        """Overridable.
-
-        :Returns:
-            True if the given node has children.
-        """
-        raise NotImplementedError
-
-    def on_iter_n_children(self, node):
-        """Overridable.
-
-        :Returns:
-            The number of children for the given node. If node is None,
-            return the number of top level nodes.
-        """
-        raise NotImplementedError
-
-    def on_iter_nth_child(self, parent, n):
-        """Overridable.
-
-        :Parameters:
-            parent : object
-            n : int
-                Index of child within parent.
-
-        :Returns:
-            The child for the given parent index starting at 0. If parent None,
-            return the top level node corresponding to "n".
-            If "n" is larger then available nodes, return None.
-        """
-        raise NotImplementedError
-
-    def on_iter_parent(self, child):
-        """Overridable.
-
-        :Returns:
-            The parent node of child or None if child is a top level node."""
-        raise NotImplementedError
-
-    def on_ref_node(self, node):
-        pass
-
-    def on_unref_node(self, node):
-        pass
diff --git a/pygtkcompat/pygtkcompat.py b/pygtkcompat/pygtkcompat.py
deleted file mode 100644 (file)
index 6884ef1..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2011-2012 Johan Dahlin <johan@gnome.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-"""
-PyGTK compatibility layer.
-
-This modules goes a little bit longer to maintain PyGTK compatibility than
-the normal overrides system.
-
-It is recommended to not depend on this layer, but only use it as an
-intermediate step when porting your application to PyGI.
-
-Compatibility might never be 100%, but the aim is to make it possible to run
-a well behaved PyGTK application mostly unmodified on top of PyGI.
-
-"""
-
-import sys
-import warnings
-
-try:
-    # Python 3
-    from collections import UserList
-    UserList  # pyflakes
-    with warnings.catch_warnings():
-        warnings.simplefilter('ignore')
-        from imp import reload
-except ImportError:
-    # Python 2 ships that in a different module
-    from UserList import UserList
-    UserList  # pyflakes
-
-import gi
-from gi.repository import GObject
-
-
-def _install_enums(module, dest=None, strip=''):
-    if dest is None:
-        dest = module
-    modname = dest.__name__.rsplit('.', 1)[1].upper()
-    for attr in dir(module):
-        try:
-            obj = getattr(module, attr, None)
-        except:
-            continue
-        try:
-            if issubclass(obj, GObject.GEnum):
-                for value, enum in obj.__enum_values__.items():
-                    name = enum.value_name
-                    name = name.replace(modname + '_', '')
-                    if strip and name.startswith(strip):
-                        name = name[len(strip):]
-                    setattr(dest, name, enum)
-        except TypeError:
-            continue
-        try:
-            if issubclass(obj, GObject.GFlags):
-                for value, flag in obj.__flags_values__.items():
-                    try:
-                        name = flag.value_names[-1].replace(modname + '_', '')
-                    except IndexError:
-                        # FIXME: this happens for some large flags which do not
-                        # fit into a long on 32 bit systems
-                        continue
-                    setattr(dest, name, flag)
-        except TypeError:
-            continue
-
-
-_enabled_registry = {}
-
-
-def _check_enabled(name, version=None):
-    """Returns True in case it is already enabled"""
-
-    if name in _enabled_registry:
-        enabled_version = _enabled_registry[name]
-        if enabled_version != version:
-            raise ValueError(
-                "%r already enabled with different version (%r)" % (
-                    name, enabled_version))
-        return True
-    else:
-        _enabled_registry[name] = version
-        return False
-
-
-def enable():
-    if _check_enabled(""):
-        return
-
-    # gobject
-    from gi.repository import GLib
-    sys.modules['glib'] = GLib
-
-    # gobject
-    from gi.repository import GObject
-    sys.modules['gobject'] = GObject
-    from gi import _propertyhelper
-    sys.modules['gobject.propertyhelper'] = _propertyhelper
-
-    # gio
-    from gi.repository import Gio
-    sys.modules['gio'] = Gio
-
-
-_unset = object()
-
-
-def enable_gtk(version='3.0'):
-    if _check_enabled("gtk", version):
-        return
-
-    if version == "4.0":
-        raise ValueError("version 4.0 not supported")
-
-    # set the default encoding like PyGTK
-    reload(sys)
-    if sys.version_info < (3, 0):
-        sys.setdefaultencoding('utf-8')
-
-    # atk
-    gi.require_version('Atk', '1.0')
-    from gi.repository import Atk
-    sys.modules['atk'] = Atk
-    _install_enums(Atk)
-
-    # pango
-    gi.require_version('Pango', '1.0')
-    from gi.repository import Pango
-    sys.modules['pango'] = Pango
-    _install_enums(Pango)
-
-    # pangocairo
-    gi.require_version('PangoCairo', '1.0')
-    from gi.repository import PangoCairo
-    sys.modules['pangocairo'] = PangoCairo
-
-    # gdk
-    gi.require_version('Gdk', version)
-    gi.require_version('GdkPixbuf', '2.0')
-    from gi.repository import Gdk
-    from gi.repository import GdkPixbuf
-    sys.modules['gtk.gdk'] = Gdk
-    _install_enums(Gdk)
-    _install_enums(GdkPixbuf, dest=Gdk)
-    Gdk._2BUTTON_PRESS = 5
-    Gdk.BUTTON_PRESS = 4
-
-    Gdk.screen_get_default = Gdk.Screen.get_default
-    Gdk.Pixbuf = GdkPixbuf.Pixbuf
-    Gdk.PixbufLoader = GdkPixbuf.PixbufLoader.new_with_type
-    Gdk.pixbuf_new_from_data = GdkPixbuf.Pixbuf.new_from_data
-    Gdk.pixbuf_new_from_file = GdkPixbuf.Pixbuf.new_from_file
-    try:
-        Gdk.pixbuf_new_from_file_at_scale = GdkPixbuf.Pixbuf.new_from_file_at_scale
-    except AttributeError:
-        pass
-    Gdk.pixbuf_new_from_file_at_size = GdkPixbuf.Pixbuf.new_from_file_at_size
-    Gdk.pixbuf_new_from_inline = GdkPixbuf.Pixbuf.new_from_inline
-    Gdk.pixbuf_new_from_stream = GdkPixbuf.Pixbuf.new_from_stream
-    Gdk.pixbuf_new_from_stream_at_scale = GdkPixbuf.Pixbuf.new_from_stream_at_scale
-    Gdk.pixbuf_new_from_xpm_data = GdkPixbuf.Pixbuf.new_from_xpm_data
-    Gdk.pixbuf_get_file_info = GdkPixbuf.Pixbuf.get_file_info
-
-    orig_get_formats = GdkPixbuf.Pixbuf.get_formats
-
-    def get_formats():
-        formats = orig_get_formats()
-        result = []
-
-        def make_dict(format_):
-            result = {}
-            result['description'] = format_.get_description()
-            result['name'] = format_.get_name()
-            result['mime_types'] = format_.get_mime_types()
-            result['extensions'] = format_.get_extensions()
-            return result
-
-        for format_ in formats:
-            result.append(make_dict(format_))
-        return result
-
-    Gdk.pixbuf_get_formats = get_formats
-
-    orig_get_frame_extents = Gdk.Window.get_frame_extents
-
-    def get_frame_extents(window):
-        try:
-            try:
-                rect = Gdk.Rectangle(0, 0, 0, 0)
-            except TypeError:
-                rect = Gdk.Rectangle()
-            orig_get_frame_extents(window, rect)
-        except TypeError:
-            rect = orig_get_frame_extents(window)
-        return rect
-    Gdk.Window.get_frame_extents = get_frame_extents
-
-    orig_get_origin = Gdk.Window.get_origin
-
-    def get_origin(self):
-        return orig_get_origin(self)[1:]
-    Gdk.Window.get_origin = get_origin
-
-    Gdk.screen_width = Gdk.Screen.width
-    Gdk.screen_height = Gdk.Screen.height
-
-    orig_gdk_window_get_geometry = Gdk.Window.get_geometry
-
-    def gdk_window_get_geometry(window):
-        return orig_gdk_window_get_geometry(window) + (window.get_visual().get_best_depth(),)
-    Gdk.Window.get_geometry = gdk_window_get_geometry
-
-    # gtk
-    gi.require_version('Gtk', version)
-    from gi.repository import Gtk
-    sys.modules['gtk'] = Gtk
-    Gtk.gdk = Gdk
-
-    Gtk.pygtk_version = (2, 99, 0)
-
-    Gtk.gtk_version = (Gtk.MAJOR_VERSION,
-                       Gtk.MINOR_VERSION,
-                       Gtk.MICRO_VERSION)
-    _install_enums(Gtk)
-
-    # Action
-
-    def set_tool_item_type(menuaction, gtype):
-        warnings.warn('set_tool_item_type() is not supported',
-                      gi.PyGIDeprecationWarning, stacklevel=2)
-    Gtk.Action.set_tool_item_type = classmethod(set_tool_item_type)
-
-    # Alignment
-
-    orig_Alignment = Gtk.Alignment
-
-    class Alignment(orig_Alignment):
-        def __init__(self, xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0):
-            orig_Alignment.__init__(self)
-            self.props.xalign = xalign
-            self.props.yalign = yalign
-            self.props.xscale = xscale
-            self.props.yscale = yscale
-
-    Gtk.Alignment = Alignment
-
-    # Box
-
-    orig_pack_end = Gtk.Box.pack_end
-
-    def pack_end(self, child, expand=True, fill=True, padding=0):
-        orig_pack_end(self, child, expand, fill, padding)
-    Gtk.Box.pack_end = pack_end
-
-    orig_pack_start = Gtk.Box.pack_start
-
-    def pack_start(self, child, expand=True, fill=True, padding=0):
-        orig_pack_start(self, child, expand, fill, padding)
-    Gtk.Box.pack_start = pack_start
-
-    # TreeViewColumn
-
-    orig_tree_view_column_pack_end = Gtk.TreeViewColumn.pack_end
-
-    def tree_view_column_pack_end(self, cell, expand=True):
-        orig_tree_view_column_pack_end(self, cell, expand)
-    Gtk.TreeViewColumn.pack_end = tree_view_column_pack_end
-
-    orig_tree_view_column_pack_start = Gtk.TreeViewColumn.pack_start
-
-    def tree_view_column_pack_start(self, cell, expand=True):
-        orig_tree_view_column_pack_start(self, cell, expand)
-    Gtk.TreeViewColumn.pack_start = tree_view_column_pack_start
-
-    # CellLayout
-
-    orig_cell_pack_end = Gtk.CellLayout.pack_end
-
-    def cell_pack_end(self, cell, expand=True):
-        orig_cell_pack_end(self, cell, expand)
-    Gtk.CellLayout.pack_end = cell_pack_end
-
-    orig_cell_pack_start = Gtk.CellLayout.pack_start
-
-    def cell_pack_start(self, cell, expand=True):
-        orig_cell_pack_start(self, cell, expand)
-    Gtk.CellLayout.pack_start = cell_pack_start
-
-    orig_set_cell_data_func = Gtk.CellLayout.set_cell_data_func
-
-    def set_cell_data_func(self, cell, func, user_data=_unset):
-        def callback(*args):
-            if args[-1] == _unset:
-                args = args[:-1]
-            return func(*args)
-        orig_set_cell_data_func(self, cell, callback, user_data)
-    Gtk.CellLayout.set_cell_data_func = set_cell_data_func
-
-    # CellRenderer
-
-    class GenericCellRenderer(Gtk.CellRenderer):
-        pass
-    Gtk.GenericCellRenderer = GenericCellRenderer
-
-    # ComboBox
-
-    orig_combo_row_separator_func = Gtk.ComboBox.set_row_separator_func
-
-    def combo_row_separator_func(self, func, user_data=_unset):
-        def callback(*args):
-            if args[-1] == _unset:
-                args = args[:-1]
-            return func(*args)
-        orig_combo_row_separator_func(self, callback, user_data)
-    Gtk.ComboBox.set_row_separator_func = combo_row_separator_func
-
-    # ComboBoxEntry
-
-    class ComboBoxEntry(Gtk.ComboBox):
-        def __init__(self, **kwds):
-            Gtk.ComboBox.__init__(self, has_entry=True, **kwds)
-
-        def set_text_column(self, text_column):
-            self.set_entry_text_column(text_column)
-
-        def get_text_column(self):
-            return self.get_entry_text_column()
-    Gtk.ComboBoxEntry = ComboBoxEntry
-
-    def combo_box_entry_new():
-        return Gtk.ComboBoxEntry()
-    Gtk.combo_box_entry_new = combo_box_entry_new
-
-    def combo_box_entry_new_with_model(model):
-        return Gtk.ComboBoxEntry(model=model)
-    Gtk.combo_box_entry_new_with_model = combo_box_entry_new_with_model
-
-    # Container
-
-    def install_child_property(container, flag, pspec):
-        warnings.warn('install_child_property() is not supported',
-                      gi.PyGIDeprecationWarning, stacklevel=2)
-    Gtk.Container.install_child_property = classmethod(install_child_property)
-
-    def new_text():
-        combo = Gtk.ComboBox()
-        model = Gtk.ListStore(str)
-        combo.set_model(model)
-        combo.set_entry_text_column(0)
-        return combo
-    Gtk.combo_box_new_text = new_text
-
-    def append_text(self, text):
-        model = self.get_model()
-        model.append([text])
-    Gtk.ComboBox.append_text = append_text
-    Gtk.expander_new_with_mnemonic = Gtk.Expander.new_with_mnemonic
-    Gtk.icon_theme_get_default = Gtk.IconTheme.get_default
-    Gtk.image_new_from_pixbuf = Gtk.Image.new_from_pixbuf
-    Gtk.image_new_from_stock = Gtk.Image.new_from_stock
-    Gtk.image_new_from_animation = Gtk.Image.new_from_animation
-    Gtk.image_new_from_icon_set = Gtk.Image.new_from_icon_set
-    Gtk.image_new_from_file = Gtk.Image.new_from_file
-    Gtk.settings_get_default = Gtk.Settings.get_default
-    Gtk.window_set_default_icon = Gtk.Window.set_default_icon
-    try:
-        Gtk.clipboard_get = Gtk.Clipboard.get
-    except AttributeError:
-        pass
-
-    # AccelGroup
-    Gtk.AccelGroup.connect_group = Gtk.AccelGroup.connect
-
-    # StatusIcon
-    Gtk.status_icon_position_menu = Gtk.StatusIcon.position_menu
-    Gtk.StatusIcon.set_tooltip = Gtk.StatusIcon.set_tooltip_text
-
-    # Scale
-
-    orig_HScale = Gtk.HScale
-    orig_VScale = Gtk.VScale
-
-    class HScale(orig_HScale):
-        def __init__(self, adjustment=None):
-            orig_HScale.__init__(self, adjustment=adjustment)
-    Gtk.HScale = HScale
-
-    class VScale(orig_VScale):
-        def __init__(self, adjustment=None):
-            orig_VScale.__init__(self, adjustment=adjustment)
-    Gtk.VScale = VScale
-
-    Gtk.stock_add = lambda items: None
-
-    # Widget
-
-    Gtk.Widget.window = property(fget=Gtk.Widget.get_window)
-
-    Gtk.widget_get_default_direction = Gtk.Widget.get_default_direction
-    orig_size_request = Gtk.Widget.size_request
-
-    def size_request(widget):
-        class SizeRequest(UserList):
-            def __init__(self, req):
-                self.height = req.height
-                self.width = req.width
-                UserList.__init__(self, [self.width, self.height])
-        return SizeRequest(orig_size_request(widget))
-    Gtk.Widget.size_request = size_request
-    Gtk.Widget.hide_all = Gtk.Widget.hide
-
-    class BaseGetter(object):
-        def __init__(self, context):
-            self.context = context
-
-        def __getitem__(self, state):
-            color = self.context.get_background_color(state)
-            return Gdk.Color(red=int(color.red * 65535),
-                             green=int(color.green * 65535),
-                             blue=int(color.blue * 65535))
-
-    class Styles(object):
-        def __init__(self, widget):
-            context = widget.get_style_context()
-            self.base = BaseGetter(context)
-            self.black = Gdk.Color(red=0, green=0, blue=0)
-
-    class StyleDescriptor(object):
-        def __get__(self, instance, class_):
-            return Styles(instance)
-    Gtk.Widget.style = StyleDescriptor()
-
-    # TextView
-
-    orig_text_view_scroll_to_mark = Gtk.TextView.scroll_to_mark
-
-    def text_view_scroll_to_mark(self, mark, within_margin,
-                                 use_align=False, xalign=0.5, yalign=0.5):
-        return orig_text_view_scroll_to_mark(self, mark, within_margin,
-                                             use_align, xalign, yalign)
-    Gtk.TextView.scroll_to_mark = text_view_scroll_to_mark
-
-    # Window
-
-    orig_set_geometry_hints = Gtk.Window.set_geometry_hints
-
-    def set_geometry_hints(self, geometry_widget=None,
-                           min_width=-1, min_height=-1, max_width=-1, max_height=-1,
-                           base_width=-1, base_height=-1, width_inc=-1, height_inc=-1,
-                           min_aspect=-1.0, max_aspect=-1.0):
-
-        geometry = Gdk.Geometry()
-        geom_mask = Gdk.WindowHints(0)
-
-        if min_width >= 0 or min_height >= 0:
-            geometry.min_width = max(min_width, 0)
-            geometry.min_height = max(min_height, 0)
-            geom_mask |= Gdk.WindowHints.MIN_SIZE
-
-        if max_width >= 0 or max_height >= 0:
-            geometry.max_width = max(max_width, 0)
-            geometry.max_height = max(max_height, 0)
-            geom_mask |= Gdk.WindowHints.MAX_SIZE
-
-        if base_width >= 0 or base_height >= 0:
-            geometry.base_width = max(base_width, 0)
-            geometry.base_height = max(base_height, 0)
-            geom_mask |= Gdk.WindowHints.BASE_SIZE
-
-        if width_inc >= 0 or height_inc >= 0:
-            geometry.width_inc = max(width_inc, 0)
-            geometry.height_inc = max(height_inc, 0)
-            geom_mask |= Gdk.WindowHints.RESIZE_INC
-
-        if min_aspect >= 0.0 or max_aspect >= 0.0:
-            if min_aspect <= 0.0 or max_aspect <= 0.0:
-                raise TypeError("aspect ratios must be positive")
-
-            geometry.min_aspect = min_aspect
-            geometry.max_aspect = max_aspect
-            geom_mask |= Gdk.WindowHints.ASPECT
-
-        return orig_set_geometry_hints(self, geometry_widget, geometry, geom_mask)
-
-    Gtk.Window.set_geometry_hints = set_geometry_hints
-    Gtk.window_list_toplevels = Gtk.Window.list_toplevels
-    Gtk.window_set_default_icon_name = Gtk.Window.set_default_icon_name
-
-    # gtk.unixprint
-
-    class UnixPrint(object):
-        pass
-    unixprint = UnixPrint()
-    sys.modules['gtkunixprint'] = unixprint
-
-    # gtk.keysyms
-
-    with warnings.catch_warnings():
-        warnings.simplefilter('ignore', category=RuntimeWarning)
-        from gi.overrides import keysyms
-
-    sys.modules['gtk.keysyms'] = keysyms
-    Gtk.keysyms = keysyms
-
-    from . import generictreemodel
-    Gtk.GenericTreeModel = generictreemodel.GenericTreeModel
-
-
-def enable_vte():
-    if _check_enabled("vte"):
-        return
-
-    gi.require_version('Vte', '0.0')
-    from gi.repository import Vte
-    sys.modules['vte'] = Vte
-
-
-def enable_poppler():
-    if _check_enabled("poppler"):
-        return
-
-    gi.require_version('Poppler', '0.18')
-    from gi.repository import Poppler
-    sys.modules['poppler'] = Poppler
-    Poppler.pypoppler_version = (1, 0, 0)
-
-
-def enable_webkit(version='1.0'):
-    if _check_enabled("webkit", version):
-        return
-
-    gi.require_version('WebKit', version)
-    from gi.repository import WebKit
-    sys.modules['webkit'] = WebKit
-    WebKit.WebView.get_web_inspector = WebKit.WebView.get_inspector
-
-
-def enable_gudev():
-    if _check_enabled("gudev"):
-        return
-
-    gi.require_version('GUdev', '1.0')
-    from gi.repository import GUdev
-    sys.modules['gudev'] = GUdev
-
-
-def enable_gst():
-    if _check_enabled("gst"):
-        return
-
-    gi.require_version('Gst', '0.10')
-    from gi.repository import Gst
-    sys.modules['gst'] = Gst
-    _install_enums(Gst)
-    Gst.registry_get_default = Gst.Registry.get_default
-    Gst.element_register = Gst.Element.register
-    Gst.element_factory_make = Gst.ElementFactory.make
-    Gst.caps_new_any = Gst.Caps.new_any
-    Gst.get_pygst_version = lambda: (0, 10, 19)
-    Gst.get_gst_version = lambda: (0, 10, 40)
-
-    from gi.repository import GstInterfaces
-    sys.modules['gst.interfaces'] = GstInterfaces
-    _install_enums(GstInterfaces)
-
-    from gi.repository import GstAudio
-    sys.modules['gst.audio'] = GstAudio
-    _install_enums(GstAudio)
-
-    from gi.repository import GstVideo
-    sys.modules['gst.video'] = GstVideo
-    _install_enums(GstVideo)
-
-    from gi.repository import GstBase
-    sys.modules['gst.base'] = GstBase
-    _install_enums(GstBase)
-
-    Gst.BaseTransform = GstBase.BaseTransform
-    Gst.BaseSink = GstBase.BaseSink
-
-    from gi.repository import GstController
-    sys.modules['gst.controller'] = GstController
-    _install_enums(GstController, dest=Gst)
-
-    from gi.repository import GstPbutils
-    sys.modules['gst.pbutils'] = GstPbutils
-    _install_enums(GstPbutils)
-
-
-def enable_goocanvas():
-    if _check_enabled("goocanvas"):
-        return
-
-    gi.require_version('GooCanvas', '2.0')
-    from gi.repository import GooCanvas
-    sys.modules['goocanvas'] = GooCanvas
-    _install_enums(GooCanvas, strip='GOO_CANVAS_')
-    GooCanvas.ItemSimple = GooCanvas.CanvasItemSimple
-    GooCanvas.Item = GooCanvas.CanvasItem
-    GooCanvas.Image = GooCanvas.CanvasImage
-    GooCanvas.Group = GooCanvas.CanvasGroup
-    GooCanvas.Rect = GooCanvas.CanvasRect
diff --git a/setup.py b/setup.py
deleted file mode 100755 (executable)
index 0da9ed9..0000000
--- a/setup.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env python
-
-
-import os
-import re
-import subprocess
-import sys
-
-from distutils.command.build import build as orig_build
-from setuptools.command.build_ext import build_ext as orig_build_ext
-from setuptools.command.build_py import build_py as orig_build_py
-from setuptools import setup, Extension
-
-
-with open("configure.ac", "r") as h:
-    version = ".".join(re.findall("pygobject_[^\s]+_version,\s*(\d+)\)", h.read()))
-
-
-def makedirs(dirpath):
-    """Safely make directories
-
-    By default, os.makedirs fails if the directory already exists.
-
-    Python 3.2 introduced the `exist_ok` argument, but we can't use it because
-    we want to keep supporting Python 2 for some time.
-    """
-    import errno
-
-    try:
-        os.makedirs(dirpath)
-
-    except OSError as e:
-        if e.errno == errno.EEXIST:
-            return
-
-        raise
-
-
-class Build(orig_build):
-    """Dummy version of distutils build which runs an Autotools build system
-    instead.
-    """
-    def run(self):
-        srcdir = os.getcwd()
-        builddir = os.path.join(srcdir, self.build_temp)
-        makedirs(builddir)
-        configure = os.path.join(srcdir, 'configure')
-
-        if not os.path.exists(configure):
-            configure = os.path.join(srcdir, 'autogen.sh')
-
-        subprocess.check_call([
-                configure,
-                'PYTHON=%s' % sys.executable,
-                # Put the documentation, etc. out of the way: we only want
-                # the Python code and extensions
-                '--prefix=' + os.path.join(builddir, 'prefix'),
-            ],
-            cwd=builddir)
-        make_args = [
-            'pythondir=%s' % os.path.join(srcdir, self.build_lib),
-            'pyexecdir=%s' % os.path.join(srcdir, self.build_lib),
-        ]
-        subprocess.check_call(['make', '-C', builddir] + make_args)
-        subprocess.check_call(['make', '-C', builddir, 'install'] + make_args)
-
-
-class BuildExt(orig_build_ext):
-    def run(self):
-        pass
-
-
-class BuildPy(orig_build_py):
-    def run(self):
-        pass
-
-
-setup(
-    name='pygobject',
-    version=version,
-    description='Python bindings for GObject Introspection',
-    maintainer='The pygobject maintainers',
-    maintainer_email='http://mail.gnome.org/mailman/listinfo/python-hackers-list',
-    download_url='http://download.gnome.org/sources/pygobject/',
-    url='https://wiki.gnome.org/Projects/PyGObject',
-    packages=['gi', 'pygtkcompat'],
-    ext_modules=[
-        Extension(
-            '_gi', sources=['gi/gimodule.c'])
-        ],
-    license='LGPL',
-    classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)',
-        'Programming Language :: C',
-        'Programming Language :: Python :: 2',
-        'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: Implementation :: CPython',
-    ],
-    cmdclass={
-        'build': Build,
-        'build_py': BuildPy,
-        'build_ext': BuildExt,
-    },
-)
index ff10433..f54a8bb 100644 (file)
@@ -1,71 +1,23 @@
 CLEANFILES =
-test_ltlibraries = libgimarshallingtests.la
-test_typelibs = GIMarshallingTests-1.0.typelib
-extension_ltlibraries =
-extension_libadd =
-
-common_ldflags = \
-       -avoid-version \
-       -rpath $(abs_builddir) \
-       -shared
-
-if OS_WIN32
-extension_libadd += \
-       $(PYTHON_LIBS)
-
-common_ldflags += \
-       -no-undefined
-endif
-
-# Note for Python extensions we need to use .so on Mac OSX, not .dylib
-extension_ldflags = \
-       $(common_ldflags) \
-       -module \
-       -shrext $(PYTHON_SO)
-
-nodist_libgimarshallingtests_la_SOURCES = \
-       $(GI_DATADIR)/tests/gimarshallingtests.c \
-       $(GI_DATADIR)/tests/gimarshallingtests.h
-
-dist_libgimarshallingtests_la_SOURCES = \
-       $(srcdir)/gimarshallingtestsextra.c \
-       $(srcdir)/gimarshallingtestsextra.h
-
-# We don't control the source so don't pass WARN_CFLAGS etc
-libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
-libgimarshallingtests_la_LDFLAGS = $(common_ldflags)
-libgimarshallingtests_la_LIBADD = $(GLIB_LIBS)
+noinst_LTLIBRARIES = libregress.la libgimarshallingtests.la
 
-GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
-       $(AM_V_GEN) $(INTROSPECTION_SCANNER) --include=Gio-2.0 \
-       --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
-       --warn-all --warn-error \
-       --library=libgimarshallingtests.la \
-       --libtool="$(top_builddir)/libtool" \
-       --output $@ \
-       $(nodist_libgimarshallingtests_la_SOURCES) \
-       $(dist_libgimarshallingtests_la_SOURCES)
+nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
+libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS)
+libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(PYCAIRO_LIBS)
+nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
+libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
+libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS)
 
-GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
-       $(AM_V_GEN) $(INTROSPECTION_COMPILER) $< -o $@
+# This is a hack to make sure a shared library is built
+libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
-# regress.c needs cairo
-test_ltlibraries += libregress.la
-test_typelibs += Regress-1.0.typelib
-nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
-# We don't control the source so don't pass WARN_CFLAGS etc
-if ENABLE_CAIRO
-libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
-libregress_la_LIBADD = $(GIO_LIBS) $(CAIRO_LIBS)
-else
-libregress_la_CFLAGS = $(GIO_CFLAGS) -D_GI_DISABLE_CAIRO
-libregress_la_LIBADD = $(GIO_LIBS) $(CAIRO_LIBS)
-endif
-libregress_la_LDFLAGS = $(common_ldflags)
+libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
 
 # g-i doesn't ship these as shared libraries anymore; we build them here
 Regress-1.0.gir: libregress.la Makefile
-       $(AM_V_GEN) $(INTROSPECTION_SCANNER) --include=cairo-1.0 --include=Gio-2.0 \
+       $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
        --namespace=Regress --nsversion=1.0 \
        --warn-all --warn-error \
        --library=libregress.la \
@@ -73,104 +25,90 @@ Regress-1.0.gir: libregress.la Makefile
        --output $@ \
        $(nodist_libregress_la_SOURCES)
 Regress-1.0.typelib: Regress-1.0.gir Makefile
-       $(AM_V_GEN) $(INTROSPECTION_COMPILER) $< -o $@
+       $(AM_V_GEN) g-ir-compiler $< -o $@
+
+GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
+       $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
+       --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
+       --warn-all --warn-error \
+       --library=libgimarshallingtests.la \
+       --libtool="$(top_builddir)/libtool" \
+       --output $@ \
+       $(nodist_libgimarshallingtests_la_SOURCES)
+GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
+       $(AM_V_GEN) g-ir-compiler $< -o $@
 
 gschemas.compiled: org.gnome.test.gschema.xml
        glib-compile-schemas --targetdir=. --schema-file=$<
 
 CLEANFILES += Regress-1.0.gir Regress-1.0.typelib GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib gschemas.compiled
 
-extension_ltlibraries += testhelper.la
-
-testhelper_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)/gi $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
-testhelper_la_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
-testhelper_la_LDFLAGS = $(WARN_LDFLAGS) $(extension_ldflags)
-testhelper_la_LIBADD = $(CODE_COVERAGE_LIBS) $(GLIB_LIBS) $(extension_libadd)
+noinst_LTLIBRARIES += testhelper.la
 
+testhelper_la_CFLAGS = -I$(top_srcdir)/gi/_gobject -I$(top_srcdir)/gi/_glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
+testhelper_la_LDFLAGS = -module -avoid-version
+testhelper_la_LIBADD = $(GLIB_LIBS)
 testhelper_la_SOURCES = \
        testhelpermodule.c \
        test-floating.c \
        test-thread.c \
        test-unknown.c
 
-check_LTLIBRARIES = $(test_ltlibraries) $(extension_ltlibraries)
+# This is a hack to make sure a shared library is built
+testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
 
-target_libraries = \
-       $(test_ltlibraries:.la=.$(OS_EXT)) \
-       $(extension_ltlibraries:.la=$(PYTHON_SO))
 
-$(target_libraries):
+.la.so:
        test -L $@ || $(LN_S) .libs/$@ $@
 
+
+all: $(LTLIBRARIES:.la=.so)
+
 EXTRA_DIST = \
-       helper.py \
        compathelper.py \
        runtests.py \
+       runtests-windows.py \
        testmodule.py \
        test-floating.h \
        test-thread.h \
        test-unknown.h \
        te_ST@nouppera \
        org.gnome.test.gschema.xml \
-       test_cairo.py \
-       test_error.py \
-       test_fields.py \
-       test_gio.py \
-       test_glib.py \
        test_gobject.py \
-       test_gtype.py \
        test_interface.py \
-       test_internal_api.py \
-       test_iochannel.py \
        test_mainloop.py \
-       test_object_marshaling.py \
        test_option.py \
        test_properties.py \
        test_signal.py \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_typeclass.py \
+       test_uris.py \
        test_everything.py \
        test_gi.py \
        test_gdbus.py \
-       test_import_machinery.py \
-       test_overrides_glib.py \
-       test_overrides_pango.py \
-       test_overrides_gdk.py \
-       test_overrides_gtk.py \
+       test_overrides.py \
        test_atoms.py \
-       test_generictreemodel.py \
-       test_docstring.py \
-       test_repository.py \
-       test_resulttuple.py \
-       compat_test_pygtk.py \
-       gi/__init__.py \
-       gi/overrides/__init__.py \
-       gi/overrides/Regress.py \
-       $(NULL)
+       test_pygtkcompat.py
 
 clean-local:
-       rm -f $(target_libraries) file.txt~
+       rm -f $(LTLIBRARIES:.la=.so) file.txt~
 
-# Unsetting MSYSTEM prevents msys2 from changing os.path.sep to "/"
+DBUS_LAUNCH=$(shell which dbus-launch)
 RUN_TESTS_ENV_VARS= \
-       MALLOC_PERTURB_=85 \
-       MALLOC_CHECK_=3 \
-       G_SLICE=debug-blocks \
-       MSYSTEM= \
+       PYTHONPATH=$(top_builddir):$(top_builddir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \
+       LD_LIBRARY_PATH=$(builddir)/.libs:$$LD_LIBRARY_PATH \
+       GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
+       XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
        TESTS_BUILDDIR=$(builddir)
 
-# if dbus-run-session is available, use it, otherwise disable DBUS
-check-local:
-       DBUS_ENV=$$(dbus-run-session true && echo "dbus-run-session --" || echo "DBUS_SESSION_BUS_ADDRESS=.") $(MAKE) check.real
-
-# pygtkcompat tests need to be run in a separate process as they
-# clobber global name space
-check.real: $(target_libraries) $(test_typelibs) gschemas.compiled
-       $(RUN_TESTS_ENV_VARS) $(EXTRA_ENV) $(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd $(srcdir)/runtests.py; rc=$$?; \
-       [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS)  $(EXTRA_ENV) $(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
-       exit $$rc
+check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+       @echo "  CHECK  Pyflakes"
+       @pyflakes $(top_srcdir)
+       @echo "  CHECK  PEP8"
+       @pep8 --ignore=E501 --repeat --show-source $(top_srcdir)
+       $(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning $(srcdir)/runtests.py
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
@@ -178,30 +116,7 @@ check.gdb:
 check.nemiver:
        EXEC_NAME="nemiver" $(MAKE) check
 
-# Note G_SLICE in these check variations is intended to clobber the default set in RUN_TESTS_ENV_VARS
 check.valgrind:
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       " \
-       $(MAKE) check
-
-check.valgrindlog:
-       mkdir -p $(top_builddir)/tmp
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       --child-silent-after-fork=yes \
-       --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log \
-       " \
-       $(MAKE) check
-
-check.valgrindxml:
-       mkdir -p $(top_builddir)/tmp
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       --child-silent-after-fork=yes \
-       --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml \
-       " \
-       $(MAKE) check
+       EXEC_NAME="valgrind --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
+
+-include $(top_srcdir)/git.mk
index 3e34139..4e90e86 100644 (file)
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.11.3 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \  ]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -87,69 +34,41 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@OS_WIN32_TRUE@am__append_1 = \
-@OS_WIN32_TRUE@        $(PYTHON_LIBS)
-
-@OS_WIN32_TRUE@am__append_2 = \
-@OS_WIN32_TRUE@        -no-undefined
-
 subdir = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_compile_flags.m4 \
-       $(top_srcdir)/m4/ax_append_flag.m4 \
-       $(top_srcdir)/m4/ax_append_link_flags.m4 \
-       $(top_srcdir)/m4/ax_check_compile_flag.m4 \
-       $(top_srcdir)/m4/ax_check_link_flag.m4 \
-       $(top_srcdir)/m4/ax_code_coverage.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_cflags.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_gir.m4 \
-       $(top_srcdir)/m4/ax_compiler_flags_ldflags.m4 \
-       $(top_srcdir)/m4/ax_is_release.m4 \
-       $(top_srcdir)/m4/ax_require_defined.m4 \
-       $(top_srcdir)/m4/glib-2.0.m4 $(top_srcdir)/m4/introspection.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
+       $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
+       $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+       $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
        $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__DEPENDENCIES_1 =
-libgimarshallingtests_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
-dist_libgimarshallingtests_la_OBJECTS =  \
-       libgimarshallingtests_la-gimarshallingtestsextra.lo
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libgimarshallingtests_la_LIBADD =
 nodist_libgimarshallingtests_la_OBJECTS =  \
        libgimarshallingtests_la-gimarshallingtests.lo
 libgimarshallingtests_la_OBJECTS =  \
-       $(dist_libgimarshallingtests_la_OBJECTS) \
        $(nodist_libgimarshallingtests_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
-am__v_lt_1 = 
 libgimarshallingtests_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
        $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) \
        $(libgimarshallingtests_la_LDFLAGS) $(LDFLAGS) -o $@
-@ENABLE_CAIRO_FALSE@libregress_la_DEPENDENCIES =  \
-@ENABLE_CAIRO_FALSE@   $(am__DEPENDENCIES_1) \
-@ENABLE_CAIRO_FALSE@   $(am__DEPENDENCIES_1)
-@ENABLE_CAIRO_TRUE@libregress_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-@ENABLE_CAIRO_TRUE@    $(am__DEPENDENCIES_1)
+libregress_la_LIBADD =
 nodist_libregress_la_OBJECTS = libregress_la-regress.lo
 libregress_la_OBJECTS = $(nodist_libregress_la_OBJECTS)
 libregress_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libregress_la_CFLAGS) \
        $(CFLAGS) $(libregress_la_LDFLAGS) $(LDFLAGS) -o $@
-@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2)
-testhelper_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3)
+am__DEPENDENCIES_1 =
+testhelper_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_testhelper_la_OBJECTS = testhelper_la-testhelpermodule.lo \
        testhelper_la-test-floating.lo testhelper_la-test-thread.lo \
        testhelper_la-test-unknown.lo
@@ -157,18 +76,6 @@ testhelper_la_OBJECTS = $(am_testhelper_la_OBJECTS)
 testhelper_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(testhelper_la_CFLAGS) \
        $(CFLAGS) $(testhelper_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -181,48 +88,28 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
+am__v_CC_0 = @echo "  CC    " $@;
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(dist_libgimarshallingtests_la_SOURCES) \
-       $(nodist_libgimarshallingtests_la_SOURCES) \
+am__v_CCLD_0 = @echo "  CCLD  " $@;
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN   " $@;
+SOURCES = $(nodist_libgimarshallingtests_la_SOURCES) \
        $(nodist_libregress_la_SOURCES) $(testhelper_la_SOURCES)
-DIST_SOURCES = $(dist_libgimarshallingtests_la_SOURCES) \
-       $(testhelper_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
+DIST_SOURCES = $(testhelper_la_SOURCES)
 ETAGS = etags
 CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
@@ -231,20 +118,13 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-CAIRO_CFLAGS = @CAIRO_CFLAGS@
-CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
-CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
-CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@
-CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
-CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
-CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
-CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
+DATADIR = @DATADIR@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
@@ -258,8 +138,6 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
-GCOV = @GCOV@
-GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -277,15 +155,8 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -295,7 +166,7 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -303,7 +174,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OS_EXT = @OS_EXT@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -317,30 +187,28 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PLATFORM = @PLATFORM@
 PYCAIRO_CFLAGS = @PYCAIRO_CFLAGS@
 PYCAIRO_LIBS = @PYCAIRO_LIBS@
 PYGOBJECT_MAJOR_VERSION = @PYGOBJECT_MAJOR_VERSION@
 PYGOBJECT_MICRO_VERSION = @PYGOBJECT_MICRO_VERSION@
 PYGOBJECT_MINOR_VERSION = @PYGOBJECT_MINOR_VERSION@
 PYTHON = @PYTHON@
+PYTHON_BASENAME = @PYTHON_BASENAME@
 PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
 PYTHON_PLATFORM = @PYTHON_PLATFORM@
 PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_SO = @PYTHON_SO@
-PYTHON_VALGRIND_SUPP = @PYTHON_VALGRIND_SUPP@
 PYTHON_VERSION = @PYTHON_VERSION@
 RANLIB = @RANLIB@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
+THREADING_CFLAGS = @THREADING_CFLAGS@
 VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_LDFLAGS = @WARN_LDFLAGS@
-WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -389,7 +257,6 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -401,118 +268,63 @@ top_srcdir = @top_srcdir@
 CLEANFILES = Regress-1.0.gir Regress-1.0.typelib \
        GIMarshallingTests-1.0.gir GIMarshallingTests-1.0.typelib \
        gschemas.compiled
-
-# regress.c needs cairo
-test_ltlibraries = libgimarshallingtests.la libregress.la
-test_typelibs = GIMarshallingTests-1.0.typelib Regress-1.0.typelib
-extension_ltlibraries = testhelper.la
-extension_libadd = $(am__append_1)
-common_ldflags = -avoid-version -rpath $(abs_builddir) -shared \
-       $(am__append_2)
-
-# Note for Python extensions we need to use .so on Mac OSX, not .dylib
-extension_ldflags = \
-       $(common_ldflags) \
-       -module \
-       -shrext $(PYTHON_SO)
-
-nodist_libgimarshallingtests_la_SOURCES = \
-       $(GI_DATADIR)/tests/gimarshallingtests.c \
-       $(GI_DATADIR)/tests/gimarshallingtests.h
-
-dist_libgimarshallingtests_la_SOURCES = \
-       $(srcdir)/gimarshallingtestsextra.c \
-       $(srcdir)/gimarshallingtestsextra.h
-
-
-# We don't control the source so don't pass WARN_CFLAGS etc
-libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
-libgimarshallingtests_la_LDFLAGS = $(common_ldflags)
-libgimarshallingtests_la_LIBADD = $(GLIB_LIBS)
+noinst_LTLIBRARIES = libregress.la libgimarshallingtests.la \
+       testhelper.la
 nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
-@ENABLE_CAIRO_FALSE@libregress_la_CFLAGS = $(GIO_CFLAGS) -D_GI_DISABLE_CAIRO
-# We don't control the source so don't pass WARN_CFLAGS etc
-@ENABLE_CAIRO_TRUE@libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
-@ENABLE_CAIRO_FALSE@libregress_la_LIBADD = $(GIO_LIBS) $(CAIRO_LIBS)
-@ENABLE_CAIRO_TRUE@libregress_la_LIBADD = $(GIO_LIBS) $(CAIRO_LIBS)
-libregress_la_LDFLAGS = $(common_ldflags)
-testhelper_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)/gi $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
-testhelper_la_CPPFLAGS = $(CODE_COVERAGE_CPPFLAGS)
-testhelper_la_LDFLAGS = $(WARN_LDFLAGS) $(extension_ldflags)
-testhelper_la_LIBADD = $(CODE_COVERAGE_LIBS) $(GLIB_LIBS) $(extension_libadd)
+libregress_la_CFLAGS = $(GIO_CFLAGS) $(PYCAIRO_CFLAGS)
+libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(PYCAIRO_LIBS)
+nodist_libgimarshallingtests_la_SOURCES = $(GI_DATADIR)/tests/gimarshallingtests.c $(GI_DATADIR)/tests/gimarshallingtests.h
+libgimarshallingtests_la_CFLAGS = $(GLIB_CFLAGS)
+libgimarshallingtests_la_LDFLAGS = -module -avoid-version $(GLIB_LIBS)
+testhelper_la_CFLAGS = -I$(top_srcdir)/gi/_gobject -I$(top_srcdir)/gi/_glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
+testhelper_la_LDFLAGS = -module -avoid-version
+testhelper_la_LIBADD = $(GLIB_LIBS)
 testhelper_la_SOURCES = \
        testhelpermodule.c \
        test-floating.c \
        test-thread.c \
        test-unknown.c
 
-check_LTLIBRARIES = $(test_ltlibraries) $(extension_ltlibraries)
-target_libraries = \
-       $(test_ltlibraries:.la=.$(OS_EXT)) \
-       $(extension_ltlibraries:.la=$(PYTHON_SO))
-
 EXTRA_DIST = \
-       helper.py \
        compathelper.py \
        runtests.py \
+       runtests-windows.py \
        testmodule.py \
        test-floating.h \
        test-thread.h \
        test-unknown.h \
        te_ST@nouppera \
        org.gnome.test.gschema.xml \
-       test_cairo.py \
-       test_error.py \
-       test_fields.py \
-       test_gio.py \
-       test_glib.py \
        test_gobject.py \
-       test_gtype.py \
        test_interface.py \
-       test_internal_api.py \
-       test_iochannel.py \
        test_mainloop.py \
-       test_object_marshaling.py \
        test_option.py \
        test_properties.py \
        test_signal.py \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_typeclass.py \
+       test_uris.py \
        test_everything.py \
        test_gi.py \
        test_gdbus.py \
-       test_import_machinery.py \
-       test_overrides_glib.py \
-       test_overrides_pango.py \
-       test_overrides_gdk.py \
-       test_overrides_gtk.py \
+       test_overrides.py \
        test_atoms.py \
-       test_generictreemodel.py \
-       test_docstring.py \
-       test_repository.py \
-       test_resulttuple.py \
-       compat_test_pygtk.py \
-       gi/__init__.py \
-       gi/overrides/__init__.py \
-       gi/overrides/Regress.py \
-       $(NULL)
-
-
-# Unsetting MSYSTEM prevents msys2 from changing os.path.sep to "/"
+       test_pygtkcompat.py
+
+DBUS_LAUNCH = $(shell which dbus-launch)
 RUN_TESTS_ENV_VARS = \
-       MALLOC_PERTURB_=85 \
-       MALLOC_CHECK_=3 \
-       G_SLICE=debug-blocks \
-       MSYSTEM= \
+       PYTHONPATH=$(top_builddir):$(top_builddir)/tests:$${PYTHONPATH:+:$$PYTHONPATH} \
+       LD_LIBRARY_PATH=$(builddir)/.libs:$$LD_LIBRARY_PATH \
+       GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
+       XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
        TESTS_BUILDDIR=$(builddir)
 
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+.SUFFIXES: .c .la .lo .o .obj .so
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -524,6 +336,7 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign tests/Makefile
+.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -536,31 +349,20 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 
-$(top_srcdir)/configure:  $(am__configure_deps)
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-clean-checkLTLIBRARIES:
-       -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
-       @list='$(check_LTLIBRARIES)'; \
-       locs=`for p in $$list; do echo $$p; done | \
-             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-             sort -u`; \
-       test -z "$$locs" || { \
-         echo rm -f $${locs}; \
-         rm -f $${locs}; \
-       }
-
-libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES) $(EXTRA_libgimarshallingtests_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(libgimarshallingtests_la_LINK)  $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_LIBADD) $(LIBS)
-
-libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES) $(EXTRA_libregress_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(libregress_la_LINK)  $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
-
-testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES) $(EXTRA_testhelper_la_DEPENDENCIES) 
-       $(AM_V_CCLD)$(testhelper_la_LINK)  $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
+clean-noinstLTLIBRARIES:
+       -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" != "$$p" || dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -569,7 +371,6 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgimarshallingtests_la-gimarshallingtestsextra.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-regress.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testhelper_la-test-floating.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testhelper_la-test-thread.Plo@am__quote@
@@ -581,14 +382,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -597,13 +398,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgimarshallingtests_la-gimarshallingtestsextra.lo: $(srcdir)/gimarshallingtestsextra.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -MT libgimarshallingtests_la-gimarshallingtestsextra.lo -MD -MP -MF $(DEPDIR)/libgimarshallingtests_la-gimarshallingtestsextra.Tpo -c -o libgimarshallingtests_la-gimarshallingtestsextra.lo `test -f '$(srcdir)/gimarshallingtestsextra.c' || echo '$(srcdir)/'`$(srcdir)/gimarshallingtestsextra.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgimarshallingtests_la-gimarshallingtestsextra.Tpo $(DEPDIR)/libgimarshallingtests_la-gimarshallingtestsextra.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$(srcdir)/gimarshallingtestsextra.c' object='libgimarshallingtests_la-gimarshallingtestsextra.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -c -o libgimarshallingtests_la-gimarshallingtestsextra.lo `test -f '$(srcdir)/gimarshallingtestsextra.c' || echo '$(srcdir)/'`$(srcdir)/gimarshallingtestsextra.c
-
 libgimarshallingtests_la-gimarshallingtests.lo: $(GI_DATADIR)/tests/gimarshallingtests.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) -MT libgimarshallingtests_la-gimarshallingtests.lo -MD -MP -MF $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Tpo -c -o libgimarshallingtests_la-gimarshallingtests.lo `test -f '$(GI_DATADIR)/tests/gimarshallingtests.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/gimarshallingtests.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Tpo $(DEPDIR)/libgimarshallingtests_la-gimarshallingtests.Plo
@@ -619,32 +413,32 @@ libregress_la-regress.lo: $(GI_DATADIR)/tests/regress.c
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libregress_la_CFLAGS) $(CFLAGS) -c -o libregress_la-regress.lo `test -f '$(GI_DATADIR)/tests/regress.c' || echo '$(srcdir)/'`$(GI_DATADIR)/tests/regress.c
 
 testhelper_la-testhelpermodule.lo: testhelpermodule.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-testhelpermodule.lo -MD -MP -MF $(DEPDIR)/testhelper_la-testhelpermodule.Tpo -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-testhelpermodule.lo -MD -MP -MF $(DEPDIR)/testhelper_la-testhelpermodule.Tpo -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-testhelpermodule.Tpo $(DEPDIR)/testhelper_la-testhelpermodule.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testhelpermodule.c' object='testhelper_la-testhelpermodule.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-testhelpermodule.lo `test -f 'testhelpermodule.c' || echo '$(srcdir)/'`testhelpermodule.c
 
 testhelper_la-test-floating.lo: test-floating.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-floating.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-floating.Tpo -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-floating.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-floating.Tpo -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-floating.Tpo $(DEPDIR)/testhelper_la-test-floating.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-floating.c' object='testhelper_la-test-floating.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-floating.lo `test -f 'test-floating.c' || echo '$(srcdir)/'`test-floating.c
 
 testhelper_la-test-thread.lo: test-thread.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-thread.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-thread.Tpo -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-thread.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-thread.Tpo -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-thread.Tpo $(DEPDIR)/testhelper_la-test-thread.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-thread.c' object='testhelper_la-test-thread.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-thread.lo `test -f 'test-thread.c' || echo '$(srcdir)/'`test-thread.c
 
 testhelper_la-test-unknown.lo: test-unknown.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-unknown.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-unknown.Tpo -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -MT testhelper_la-test-unknown.lo -MD -MP -MF $(DEPDIR)/testhelper_la-test-unknown.Tpo -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/testhelper_la-test-unknown.Tpo $(DEPDIR)/testhelper_la-test-unknown.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test-unknown.c' object='testhelper_la-test-unknown.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testhelper_la_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testhelper_la_CFLAGS) $(CFLAGS) -c -o testhelper_la-test-unknown.lo `test -f 'test-unknown.c' || echo '$(srcdir)/'`test-unknown.c
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -652,15 +446,26 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-ID: $(am__tagged_files)
-       $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
        set x; \
        here=`pwd`; \
-       $(am__define_uniq_tagged_files); \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -672,11 +477,15 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
              $$unique; \
          fi; \
        fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-       $(am__define_uniq_tagged_files); \
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -685,21 +494,6 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-       list='$(am__tagged_files)'; \
-       case "$(srcdir)" in \
-         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-         *) sdir=$(subdir)/$(srcdir) ;; \
-       esac; \
-       for i in $$list; do \
-         if test -f "$$i"; then \
-           echo "$(subdir)/$$i"; \
-         else \
-           echo "$$sdir/$$i"; \
-         fi; \
-       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -735,10 +529,9 @@ distdir: $(DISTFILES)
          fi; \
        done
 check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES)
        $(MAKE) $(AM_MAKEFLAGS) check-local
 check: check-am
-all-am: Makefile
+all-am: Makefile $(LTLIBRARIES)
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -773,8 +566,8 @@ maintainer-clean-generic:
        @echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-checkLTLIBRARIES clean-generic clean-libtool \
-       clean-local mostlyclean-am
+clean-am: clean-generic clean-libtool clean-local \
+       clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-am
        -rm -rf ./$(DEPDIR)
@@ -844,9 +637,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
-       clean-checkLTLIBRARIES clean-generic clean-libtool clean-local \
-       cscopelist-am ctags ctags-am distclean distclean-compile \
+.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
+       clean-generic clean-libtool clean-local \
+       clean-noinstLTLIBRARIES ctags distclean distclean-compile \
        distclean-generic distclean-libtool distclean-tags distdir dvi \
        dvi-am html html-am info info-am install install-am \
        install-data install-data-am install-dvi install-dvi-am \
@@ -856,27 +649,19 @@ uninstall-am:
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
+       tags uninstall uninstall-am
 
 
-GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
-       $(AM_V_GEN) $(INTROSPECTION_SCANNER) --include=Gio-2.0 \
-       --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
-       --warn-all --warn-error \
-       --library=libgimarshallingtests.la \
-       --libtool="$(top_builddir)/libtool" \
-       --output $@ \
-       $(nodist_libgimarshallingtests_la_SOURCES) \
-       $(dist_libgimarshallingtests_la_SOURCES)
+# This is a hack to make sure a shared library is built
+libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
-GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
-       $(AM_V_GEN) $(INTROSPECTION_COMPILER) $< -o $@
+libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
 
 # g-i doesn't ship these as shared libraries anymore; we build them here
 Regress-1.0.gir: libregress.la Makefile
-       $(AM_V_GEN) $(INTROSPECTION_SCANNER) --include=cairo-1.0 --include=Gio-2.0 \
+       $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
        --namespace=Regress --nsversion=1.0 \
        --warn-all --warn-error \
        --library=libregress.la \
@@ -884,27 +669,40 @@ Regress-1.0.gir: libregress.la Makefile
        --output $@ \
        $(nodist_libregress_la_SOURCES)
 Regress-1.0.typelib: Regress-1.0.gir Makefile
-       $(AM_V_GEN) $(INTROSPECTION_COMPILER) $< -o $@
+       $(AM_V_GEN) g-ir-compiler $< -o $@
+
+GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
+       $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
+       --namespace=GIMarshallingTests --nsversion=1.0 --symbol-prefix=gi_marshalling_tests \
+       --warn-all --warn-error \
+       --library=libgimarshallingtests.la \
+       --libtool="$(top_builddir)/libtool" \
+       --output $@ \
+       $(nodist_libgimarshallingtests_la_SOURCES)
+GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
+       $(AM_V_GEN) g-ir-compiler $< -o $@
 
 gschemas.compiled: org.gnome.test.gschema.xml
        glib-compile-schemas --targetdir=. --schema-file=$<
 
-$(target_libraries):
+# This is a hack to make sure a shared library is built
+testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
+       $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
+
+.la.so:
        test -L $@ || $(LN_S) .libs/$@ $@
 
-clean-local:
-       rm -f $(target_libraries) file.txt~
+all: $(LTLIBRARIES:.la=.so)
 
-# if dbus-run-session is available, use it, otherwise disable DBUS
-check-local:
-       DBUS_ENV=$$(dbus-run-session true && echo "dbus-run-session --" || echo "DBUS_SESSION_BUS_ADDRESS=.") $(MAKE) check.real
+clean-local:
+       rm -f $(LTLIBRARIES:.la=.so) file.txt~
 
-# pygtkcompat tests need to be run in a separate process as they
-# clobber global name space
-check.real: $(target_libraries) $(test_typelibs) gschemas.compiled
-       $(RUN_TESTS_ENV_VARS) $(EXTRA_ENV) $(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd $(srcdir)/runtests.py; rc=$$?; \
-       [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS)  $(EXTRA_ENV) $(DBUS_ENV) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
-       exit $$rc
+check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+       @echo "  CHECK  Pyflakes"
+       @pyflakes $(top_srcdir)
+       @echo "  CHECK  PEP8"
+       @pep8 --ignore=E501 --repeat --show-source $(top_srcdir)
+       $(RUN_TESTS_ENV_VARS) $(DBUS_LAUNCH) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning $(srcdir)/runtests.py
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
@@ -912,33 +710,10 @@ check.gdb:
 check.nemiver:
        EXEC_NAME="nemiver" $(MAKE) check
 
-# Note G_SLICE in these check variations is intended to clobber the default set in RUN_TESTS_ENV_VARS
 check.valgrind:
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       " \
-       $(MAKE) check
-
-check.valgrindlog:
-       mkdir -p $(top_builddir)/tmp
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       --child-silent-after-fork=yes \
-       --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log \
-       " \
-       $(MAKE) check
-
-check.valgrindxml:
-       mkdir -p $(top_builddir)/tmp
-       EXTRA_ENV="G_SLICE=always-malloc G_DEBUG=gc-friendly PYTHONMALLOC=malloc" \
-       EXEC_NAME="valgrind --leak-check=full --show-possibly-lost=no --num-callers=20 \
-       --suppressions=$(top_srcdir)/tests/$(PYTHON_VALGRIND_SUPP).supp \
-       --child-silent-after-fork=yes \
-       --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml \
-       " \
-       $(MAKE) check
+       EXEC_NAME="valgrind --suppressions=python.supp" G_SLICE=always-malloc G_DEBUG=gc-friendly $(MAKE) check
+
+-include $(top_srcdir)/git.mk
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/compat_test_pygtk.py b/tests/compat_test_pygtk.py
deleted file mode 100644 (file)
index 6552256..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import unittest
-import base64
-
-try:
-    from gi.repository import Gtk
-    from gi.repository import Pango
-    from gi.repository import Atk
-    from gi.repository import Gdk
-    (Atk, Gtk, Pango)  # pyflakes
-
-    import pygtkcompat
-
-    pygtkcompat.enable()
-    pygtkcompat.enable_gtk(version=Gtk._version)
-
-    import atk
-    import pango
-    import pangocairo
-    import gtk
-    import gtk.gdk
-except (ValueError, ImportError):
-    Gtk = None
-
-from helper import capture_gi_deprecation_warnings, capture_glib_warnings
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestMultipleEnable(unittest.TestCase):
-
-    def test_main(self):
-        pygtkcompat.enable()
-        pygtkcompat.enable()
-
-    def test_gtk(self):
-        pygtkcompat.enable_gtk("3.0")
-        pygtkcompat.enable_gtk("3.0")
-
-        # https://bugzilla.gnome.org/show_bug.cgi?id=759009
-        w = gtk.Window()
-        w.realize()
-        self.assertEqual(len(w.window.get_origin()), 2)
-        w.destroy()
-
-    def test_gtk_version_conflict(self):
-        self.assertRaises(ValueError, pygtkcompat.enable_gtk, version='2.0')
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestATKCompat(unittest.TestCase):
-    def test_object(self):
-        self.assertTrue(hasattr(atk, 'Object'))
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestPangoCompat(unittest.TestCase):
-    def test_layout(self):
-        self.assertTrue(hasattr(pango, 'Layout'))
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestPangoCairoCompat(unittest.TestCase):
-    def test_error_underline_path(self):
-        self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestGTKCompat(unittest.TestCase):
-    def test_buttons(self):
-        self.assertEqual(Gdk._2BUTTON_PRESS, 5)
-        self.assertEqual(Gdk.BUTTON_PRESS, 4)
-
-    def test_enums(self):
-        self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
-        self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
-
-    def test_flags(self):
-        self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
-        self.assertEqual(gtk.gdk.SHIFT_MASK, Gdk.ModifierType.SHIFT_MASK)
-
-    def test_keysyms(self):
-        import gtk.keysyms
-        self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
-        self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
-
-    def test_style(self):
-        widget = gtk.Button()
-        with capture_gi_deprecation_warnings():
-            widget.get_style_context().set_state(gtk.STATE_NORMAL)
-            self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
-                                       gtk.gdk.Color))
-
-    def test_alignment(self):
-        # Creation of pygtk.Alignment causes hard warnings, ignore this in testing.
-        with capture_glib_warnings(allow_warnings=True):
-            a = gtk.Alignment()
-
-        self.assertEqual(a.props.xalign, 0.0)
-        self.assertEqual(a.props.yalign, 0.0)
-        self.assertEqual(a.props.xscale, 0.0)
-        self.assertEqual(a.props.yscale, 0.0)
-
-    def test_box(self):
-        box = gtk.Box()
-        child = gtk.Button()
-
-        box.pack_start(child)
-        expand, fill, padding, pack_type = box.query_child_packing(child)
-        self.assertTrue(expand)
-        self.assertTrue(fill)
-        self.assertEqual(padding, 0)
-        self.assertEqual(pack_type, gtk.PACK_START)
-
-        child = gtk.Button()
-        box.pack_end(child)
-        expand, fill, padding, pack_type = box.query_child_packing(child)
-        self.assertTrue(expand)
-        self.assertTrue(fill)
-        self.assertEqual(padding, 0)
-        self.assertEqual(pack_type, gtk.PACK_END)
-
-    def test_combobox_entry(self):
-        liststore = gtk.ListStore(int, str)
-        liststore.append((1, 'One'))
-        liststore.append((2, 'Two'))
-        liststore.append((3, 'Three'))
-        # might cause a Pango warning, do not break on this
-        with capture_glib_warnings(allow_warnings=True):
-            combo = gtk.ComboBoxEntry(model=liststore)
-        combo.set_text_column(1)
-        combo.set_active(0)
-        self.assertEqual(combo.get_text_column(), 1)
-        self.assertEqual(combo.get_child().get_text(), 'One')
-        combo = gtk.combo_box_entry_new()
-        combo.set_model(liststore)
-        combo.set_text_column(1)
-        combo.set_active(0)
-        self.assertEqual(combo.get_text_column(), 1)
-        self.assertEqual(combo.get_child().get_text(), 'One')
-        combo = gtk.combo_box_entry_new_with_model(liststore)
-        combo.set_text_column(1)
-        combo.set_active(0)
-        self.assertEqual(combo.get_text_column(), 1)
-        self.assertEqual(combo.get_child().get_text(), 'One')
-
-    def test_size_request(self):
-        box = gtk.Box()
-        with capture_gi_deprecation_warnings():
-            self.assertEqual(box.size_request(), [0, 0])
-
-    def test_pixbuf(self):
-        gtk.gdk.Pixbuf()
-
-    def test_pixbuf_loader(self):
-        # load a 1x1 pixel PNG from memory
-        data = base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4n8Dw'
-                                'HwAGIAJf85Z3XgAAAABJRU5ErkJggg==')
-        loader = gtk.gdk.PixbufLoader('png')
-        loader.write(data)
-        loader.close()
-
-        pixbuf = loader.get_pixbuf()
-        self.assertEqual(pixbuf.get_width(), 1)
-        self.assertEqual(pixbuf.get_height(), 1)
-
-    def test_pixbuf_formats(self):
-        formats = gtk.gdk.pixbuf_get_formats()
-        self.assertEqual(type(formats[0]), dict)
-        self.assertTrue('name' in formats[0])
-        self.assertTrue('description' in formats[0])
-        self.assertTrue('mime_types' in formats[0])
-        self.assertEqual(type(formats[0]['extensions']), list)
-
-    def test_gdk_window(self):
-        w = gtk.Window()
-        w.realize()
-        origin = w.get_window().get_origin()
-        self.assertTrue(isinstance(origin, tuple))
-        self.assertEqual(len(origin), 2)
index d4f4d27..668e60a 100644 (file)
@@ -1,7 +1,5 @@
 import sys
 
-PY2 = PY3 = False
-
 if sys.version_info >= (3, 0):
     '''
     for tests that need to test long values in python 2
@@ -30,12 +28,42 @@ if sys.version_info >= (3, 0):
     '''
     _basestring = str
 
-    from io import StringIO
-    StringIO
-    PY3 = True
+    '''
+    for tests that need to write to intefaces that take bytes in
+    python 3
+
+    python 3 has a seperate bytes type for low level functions like os.write
+
+    python 2 treats these as strings
+
+    any tests that need to write a string of bytes should do something like
+    this:
+
+    from compathelper import _bytes
+    os.write(_bytes("hello"))
+    '''
+
+    _bytes = lambda s: s.encode()
+
+    '''
+    for tests that need to write to intefaces that take unicode in
+    python 2
+
+    python 3 strings are unicode encoded as UTF-8 so the unicode object
+    doesn't exist
+
+    python 2 differs between a string an unicode string and you must specify
+    an encoding.  This macro will specify UTF-8 in python 2
+
+    any tests that need to use unicode should do this
+
+    from compathelper import _unicode
+    unicode_string = _unicode('this is a unicode string')
+    '''
+
+    _unicode = lambda s: str(s)
 else:
     _long = long
     _basestring = basestring
-    from StringIO import StringIO
-    StringIO
-    PY2 = True
+    _bytes = str
+    _unicode = lambda s: unicode(s, 'UTF-8')
diff --git a/tests/gi/__init__.py b/tests/gi/__init__.py
deleted file mode 100644 (file)
index 3ad9513..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
diff --git a/tests/gi/overrides/Regress.py b/tests/gi/overrides/Regress.py
deleted file mode 100644 (file)
index cb38631..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2012 Martin Pitt <martinpitt@gnome.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-from ..importer import modules
-
-Regress = modules['Regress']._introspection_module
-
-REGRESS_OVERRIDE = 42
-__all__ = ['REGRESS_OVERRIDE']
diff --git a/tests/gi/overrides/__init__.py b/tests/gi/overrides/__init__.py
deleted file mode 100644 (file)
index 3ad9513..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)
diff --git a/tests/gimarshallingtestsextra.c b/tests/gimarshallingtestsextra.c
deleted file mode 100644 (file)
index eee3a14..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/* gimarshallingtestsextra.c
- *
- * Copyright (C) 2016 Thibault Saunier <tsaunier@gnome.org>
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This file is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gimarshallingtestsextra.h"
-#include <string.h>
-
-void
-gi_marshalling_tests_compare_two_gerrors_in_gvalue (GValue *v, GValue *v1)
-{
-  GError *error, * error1;
-
-  g_assert_cmpstr (g_type_name (G_VALUE_TYPE (v)), ==,
-                   g_type_name (G_TYPE_ERROR));
-  g_assert_cmpstr (g_type_name (G_VALUE_TYPE (v1)), ==,
-                   g_type_name (G_TYPE_ERROR));
-
-  error = (GError*) g_value_get_boxed (v);
-  error1 = (GError*) g_value_get_boxed (v1);
-
-  g_assert_cmpint (error->domain, ==, error1->domain);
-  g_assert_cmpint (error->code, ==, error1->code);
-  g_assert_cmpstr (error->message, ==, error1->message);
-}
-
-/**
- * gi_marshalling_tests_ghashtable_enum_none_in:
- * @hash_table: (element-type gint GIMarshallingTestsExtraEnum) (transfer none):
- */
-void
-gi_marshalling_tests_ghashtable_enum_none_in (GHashTable *hash_table)
-{
-  g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (1))), ==, GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE1);
-  g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (2))), ==, GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE2);
-  g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (3))), ==, GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE3);
-}
-
-/**
- * gi_marshalling_tests_ghashtable_enum_none_return:
- *
- * Returns: (element-type gint GIMarshallingTestsExtraEnum) (transfer none):
- */
-GHashTable *
-gi_marshalling_tests_ghashtable_enum_none_return (void)
-{
-  static GHashTable *hash_table = NULL;
-
-  if (hash_table == NULL)
-    {
-      hash_table = g_hash_table_new (NULL, NULL);
-      g_hash_table_insert (hash_table, GINT_TO_POINTER (1), GINT_TO_POINTER (GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE1));
-      g_hash_table_insert (hash_table, GINT_TO_POINTER (2), GINT_TO_POINTER (GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE2));
-      g_hash_table_insert (hash_table, GINT_TO_POINTER (3), GINT_TO_POINTER (GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE3));
-    }
-
-  return hash_table;
-}
-
-/**
- * gi_marshalling_tests_filename_copy:
- * @path_in: (type filename) (nullable)
- *
- * Returns: (type filename) (nullable)
- */
-gchar *
-gi_marshalling_tests_filename_copy (gchar *path_in)
-{
-  return g_strdup (path_in);
-}
-
-/**
- * gi_marshalling_tests_filename_to_glib_repr:
- * @path_in: (type filename) (nullable)
- *
- * Returns: (array length=len) (element-type guint8)
- */
-gchar *
-gi_marshalling_tests_filename_to_glib_repr (gchar *path_in, gsize *len)
-{
-  *len = strlen(path_in);
-  return g_strdup (path_in);
-}
-
-/**
- * gi_marshalling_tests_filename_exists:
- * @path: (type filename)
- */
-gboolean
-gi_marshalling_tests_filename_exists (gchar *path)
-{
-  return g_file_test (path, G_FILE_TEST_EXISTS);
-}
diff --git a/tests/gimarshallingtestsextra.h b/tests/gimarshallingtestsextra.h
deleted file mode 100644 (file)
index 5452688..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* gimarshallingtestsextra.h
- *
- * Copyright (C) 2016 Thibault Saunier <tsaunier@gnome.org>
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This file is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef EXTRA_TESTS
-#define EXTRA_TESTS
-
-#include <glib-object.h>
-
-typedef enum
-{
-  GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE1,
-  GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE2,
-  GI_MARSHALLING_TESTS_EXTRA_ENUM_VALUE3 = 42
-} GIMarshallingTestsExtraEnum;
-
-
-void gi_marshalling_tests_compare_two_gerrors_in_gvalue (GValue *v, GValue *v1);
-void gi_marshalling_tests_ghashtable_enum_none_in (GHashTable *hash_table);
-GHashTable * gi_marshalling_tests_ghashtable_enum_none_return (void);
-
-gchar * gi_marshalling_tests_filename_copy (gchar *path_in);
-gboolean gi_marshalling_tests_filename_exists (gchar *path);
-gchar * gi_marshalling_tests_filename_to_glib_repr (gchar *path_in, gsize *len);
-
-#endif /* EXTRA_TESTS */
diff --git a/tests/helper.py b/tests/helper.py
deleted file mode 100644 (file)
index 0d2f204..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-import contextlib
-import unittest
-import inspect
-import warnings
-import functools
-import sys
-from collections import namedtuple
-
-import gi
-from gi import PyGIDeprecationWarning
-from gi.repository import GLib
-
-from compathelper import StringIO
-
-
-ExceptionInfo = namedtuple("ExceptionInfo", ["type", "value", "traceback"])
-"""The type used for storing exceptions used by capture_exceptions()"""
-
-
-@contextlib.contextmanager
-def capture_exceptions():
-    """Installs a temporary sys.excepthook which records all exceptions
-    instead of printing them.
-    """
-
-    exceptions = []
-
-    def custom_excepthook(*args):
-        exceptions.append(ExceptionInfo(*args))
-
-    old_hook = sys.excepthook
-    sys.excepthook = custom_excepthook
-    try:
-        yield exceptions
-    finally:
-        sys.excepthook = old_hook
-
-
-def ignore_gi_deprecation_warnings(func_or_class):
-    """A unittest class and function decorator which makes them ignore
-    PyGIDeprecationWarning.
-    """
-
-    if inspect.isclass(func_or_class):
-        assert issubclass(func_or_class, unittest.TestCase)
-        cls = func_or_class
-        for name, value in cls.__dict__.items():
-            if callable(value) and name.startswith("test_"):
-                new_value = ignore_gi_deprecation_warnings(value)
-                setattr(cls, name, new_value)
-        return cls
-    else:
-        func = func_or_class
-
-        @functools.wraps(func)
-        def wrapper(*args, **kwargs):
-            with capture_gi_deprecation_warnings():
-                return func(*args, **kwargs)
-
-        return wrapper
-
-
-@contextlib.contextmanager
-def capture_gi_deprecation_warnings():
-    """Temporarily suppress PyGIDeprecationWarning output and record them"""
-
-    with warnings.catch_warnings(record=True) as warn:
-        warnings.simplefilter('always', category=PyGIDeprecationWarning)
-        yield warn
-
-
-@contextlib.contextmanager
-def capture_glib_warnings(allow_warnings=False, allow_criticals=False):
-    """Temporarily suppress glib warning output and record them.
-
-    The test suite is run with G_DEBUG="fatal-warnings fatal-criticals"
-    by default. Setting allow_warnings and allow_criticals will temporarily
-    allow warnings or criticals without terminating the test run.
-    """
-
-    old_mask = GLib.log_set_always_fatal(GLib.LogLevelFlags(0))
-
-    new_mask = old_mask
-    if allow_warnings:
-        new_mask &= ~GLib.LogLevelFlags.LEVEL_WARNING
-    if allow_criticals:
-        new_mask &= ~GLib.LogLevelFlags.LEVEL_CRITICAL
-
-    GLib.log_set_always_fatal(GLib.LogLevelFlags(new_mask))
-
-    GLibWarning = gi._gi.Warning
-    try:
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.filterwarnings('always', category=GLibWarning)
-            yield warn
-    finally:
-        GLib.log_set_always_fatal(old_mask)
-
-
-@contextlib.contextmanager
-def capture_glib_deprecation_warnings():
-    """Temporarily suppress glib deprecation warning output and record them"""
-
-    GLibWarning = gi._gi.Warning
-    with warnings.catch_warnings(record=True) as warn:
-        warnings.filterwarnings(
-            'always', category=GLibWarning,
-            message=".+ is deprecated and shouldn't be used anymore\\. "
-                    "It will be removed in a future version\\.")
-        yield warn
-
-
-@contextlib.contextmanager
-def capture_output():
-    """
-    with capture_output as (stdout, stderr):
-        some_action()
-    print(stdout.getvalue(), stderr.getvalue())
-    """
-
-    err = StringIO()
-    out = StringIO()
-    old_err = sys.stderr
-    old_out = sys.stdout
-    sys.stderr = err
-    sys.stdout = out
-
-    try:
-        yield (out, err)
-    finally:
-        sys.stderr = old_err
-        sys.stdout = old_out
index eb9aab8..221b87a 100644 (file)
@@ -1,10 +1,4 @@
 <schemalist>
-    <enum id="org.gnome.test.FruitType">
-        <value nick="banana" value="0"/>
-        <value nick="apple" value="1"/>
-        <value nick="pear" value="2"/>
-    </enum>
-
     <schema id="org.gnome.test" path="/tests/">
        <key name="test-boolean" type="b">
            <default>true</default>
@@ -18,9 +12,6 @@
        <key name="test-array" type="ai">
            <default>[1,2]</default>
        </key>
-       <key name="test-enum" enum="org.gnome.test.FruitType">
-           <default>'banana'</default>
-       </key>
     </schema>
 
     <schema id="org.gnome.nopathtest">
diff --git a/tests/runtests-windows.py b/tests/runtests-windows.py
new file mode 100644 (file)
index 0000000..ae81202
--- /dev/null
@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+import os
+import sys
+import glob
+import unittest
+
+os.environ['PYGTK_USE_GIL_STATE_API'] = ''
+sys.path.insert(0, os.path.dirname(__file__))
+sys.argv.append('--g-fatal-warnings')
+
+from gi.repository import GObject
+GObject.threads_init()
+
+
+SKIP_FILES = ['runtests',
+              'test_mainloop',      # no os.fork on windows
+              'test_subprocess']    # blocks on testChildWatch
+
+
+if __name__ == '__main__':
+    testdir = os.path.split(os.path.abspath(__file__))[0]
+    os.chdir(testdir)
+
+    def gettestnames():
+        files = glob.glob('*.py')
+        names = map(lambda x: x[:-3], files)
+        map(names.remove, SKIP_FILES)
+        return names
+
+    suite = unittest.TestSuite()
+    loader = unittest.TestLoader()
+
+    for name in gettestnames():
+        try:
+            suite.addTest(loader.loadTestsFromName(name))
+        except Exception, e:
+            print 'Could not load %s: %s' % (name, e)
+
+    testRunner = unittest.TextTestRunner()
+    testRunner.verbosity = 2
+    testRunner.run(suite)
index fda4dd1..4dddc72 100755 (executable)
@@ -7,76 +7,22 @@ import sys
 
 import unittest
 
-# this was renamed in Python 3, provide backwards compatible name
-if sys.version_info[:2] == (2, 7):
-    unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
-
-if sys.version_info[0] == 3:
-    unittest.TestCase.assertRegexpMatches = unittest.TestCase.assertRegex
-    unittest.TestCase.assertRaisesRegexp = unittest.TestCase.assertRaisesRegex
-
-
 if '--help' in sys.argv:
     print("Usage: ./runtests.py <testfiles>")
     sys.exit(0)
 
 mydir = os.path.dirname(os.path.abspath(__file__))
-tests_builddir = os.path.abspath(os.environ.get('TESTS_BUILDDIR', os.path.dirname(__file__)))
-builddir = os.path.dirname(tests_builddir)
-tests_srcdir = os.path.abspath(os.path.dirname(__file__))
-srcdir = os.path.dirname(tests_srcdir)
-
-sys.path.insert(0, tests_srcdir)
-sys.path.insert(0, srcdir)
-sys.path.insert(0, tests_builddir)
-sys.path.insert(0, builddir)
 
 # force untranslated messages, as we check for them in some tests
 os.environ['LC_MESSAGES'] = 'C'
 os.environ['G_DEBUG'] = 'fatal-warnings fatal-criticals'
-if sys.platform == "darwin":
-    # gtk 3.22 has warnings and ciriticals on OS X, ignore for now
-    os.environ['G_DEBUG'] = ''
 
 # make Gio able to find our gschemas.compiled in tests/. This needs to be set
 # before importing Gio. Support a separate build tree, so look in build dir
 # first.
 os.environ['GSETTINGS_BACKEND'] = 'memory'
-os.environ['GSETTINGS_SCHEMA_DIR'] = tests_builddir
-os.environ['G_FILENAME_ENCODING'] = 'UTF-8'
-
-import gi
-gi.require_version("GIRepository", "2.0")
-from gi.repository import GIRepository
-repo = GIRepository.Repository.get_default()
-repo.prepend_library_path(os.path.join(tests_builddir, ".libs"))
-repo.prepend_search_path(tests_builddir)
-
-
-def try_require_version(namespace, version):
-    try:
-        gi.require_version(namespace, version)
-    except ValueError:
-        # prevent tests from running with the wrong version
-        sys.modules["gi.repository." + namespace] = None
-
-
-# Optional
-try_require_version("Gtk", os.environ.get("TEST_GTK_VERSION", "3.0"))
-try_require_version("Gdk", os.environ.get("TEST_GTK_VERSION", "3.0"))
-try_require_version("GdkPixbuf", "2.0")
-try_require_version("Pango", "1.0")
-try_require_version("PangoCairo", "1.0")
-try_require_version("Atk", "1.0")
-
-# Required
-gi.require_versions({
-    "GIMarshallingTests": "1.0",
-    "Regress": "1.0",
-    "GLib": "2.0",
-    "Gio": "2.0",
-    "GObject": "2.0",
-})
+os.environ['GSETTINGS_SCHEMA_DIR'] = os.environ.get('TESTS_BUILDDIR',
+        os.path.dirname(__file__))
 
 # Load tests.
 if 'TEST_NAMES' in os.environ:
index 438cb97..0f5b909 100644 (file)
@@ -43,7 +43,8 @@ other_thread_cb (TestThread *self)
 static void
 test_thread_emit_signal (TestThread *self)
 {
-  self->thread = g_thread_new ("t", (GThreadFunc)other_thread_cb, self);
+  self->thread = g_thread_create ((GThreadFunc)other_thread_cb,
+                                 self, TRUE, NULL);
 }
 
 static void test_thread_init (TestThread *self) {}
index f1c3139..85aba73 100644 (file)
@@ -53,7 +53,7 @@ test_interface_get_type (void)
   return gtype;
 }
 
-static void test_unknown_iface_method (TestInterface *iface)
+void test_unknown_iface_method (TestInterface *iface)
 {
 }
 
index a2c2d5b..851368f 100644 (file)
@@ -1,38 +1,13 @@
-import os
-import sys
 import unittest
 
-try:
-    from gi.repository import Gtk, Atk, Gdk
-except ImportError:
-    Gdk = None
-    Atk = None
-    Gtk = None
+from gi.repository import Gdk, Gtk
 
-from helper import capture_glib_deprecation_warnings
 
-
-@unittest.skipUnless(Gdk, 'Gdk not available')
 class TestGdkAtom(unittest.TestCase):
     def test_create(self):
         atom = Gdk.Atom.intern('my_string', False)
         self.assertEqual(atom.name(), 'my_string')
 
-    def test_str(self):
-        atom = Gdk.Atom.intern('my_string', False)
-        self.assertEqual(str(atom), 'my_string')
-
-        self.assertEqual(str(Gdk.SELECTION_CLIPBOARD), 'CLIPBOARD')
-
-    def test_repr(self):
-        # __repr__ should generate a string which is parsable when possible
-        # http://docs.python.org/2/reference/datamodel.html#object.__repr__
-        atom = Gdk.Atom.intern('my_string', False)
-        self.assertEqual(repr(atom), 'Gdk.Atom.intern("my_string", False)')
-        self.assertEqual(eval(repr(atom)), atom)
-
-        self.assertEqual(repr(Gdk.SELECTION_CLIPBOARD), 'Gdk.Atom.intern("CLIPBOARD", False)')
-
     def test_in_single(self):
         a_selection = Gdk.Atom.intern('test_clipboard', False)
         clipboard = Gtk.Clipboard.get(a_selection)
@@ -56,34 +31,10 @@ class TestGdkAtom(unittest.TestCase):
         self.assertTrue(Gtk.targets_include_image([a_jpeg], False))
         self.assertTrue(Gtk.targets_include_image([a_jpeg, a_plain], False))
 
-    @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
-    def test_out_array(self):
-        a_selection = Gdk.Atom.intern('my_clipboard', False)
-        clipboard = Gtk.Clipboard.get(a_selection)
-
-        # empty
-        (res, targets) = clipboard.wait_for_targets()
-        self.assertEqual(res, False)
-        self.assertEqual(targets, [])
-
-        # text
-        clipboard.set_text('hello', 5)
-        (res, targets) = clipboard.wait_for_targets()
-        self.assertEqual(res, True)
-        self.assertNotEqual(targets, [])
-        self.assertEqual(type(targets[0]), Gdk.Atom)
-        names = [t.name() for t in targets]
-        self.assertFalse(None in names, names)
-        self.assertTrue('TEXT' in names, names)
-
-    @unittest.skipIf(sys.platform == "darwin" or os.name == "nt",
-                     "fails on OSX/Windows")
-    @unittest.skipIf(not Gdk or Gdk._version == "4.0", "not in gdk4")
     def test_out_glist(self):
         display = Gdk.Display.get_default()
-        with capture_glib_deprecation_warnings():
-            dm = display.get_device_manager()
-            device = dm.get_client_pointer()
+        dm = display.get_device_manager()
+        device = dm.get_client_pointer()
         axes = device.list_axes()
         axes_names = [atom.name() for atom in axes]
         self.assertNotEqual(axes_names, [])
diff --git a/tests/test_cairo.py b/tests/test_cairo.py
deleted file mode 100644 (file)
index 3edf5d5..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# coding=utf-8
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import unittest
-
-import gi
-
-try:
-    gi.require_foreign('cairo')
-    import cairo
-    has_cairo = True
-except ImportError:
-    has_cairo = False
-
-has_region = has_cairo and hasattr(cairo, "Region")
-
-try:
-    from gi.repository import Gtk, Gdk
-    Gtk, Gdk  # pyflakes
-except:
-    Gtk = None
-    Gdk = None
-
-from gi.repository import GObject, Regress
-
-
-@unittest.skipUnless(has_cairo, 'built without cairo support')
-class Test(unittest.TestCase):
-    def test_cairo_context(self):
-        context = Regress.test_cairo_context_full_return()
-        self.assertTrue(isinstance(context, cairo.Context))
-
-        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
-        context = cairo.Context(surface)
-        Regress.test_cairo_context_none_in(context)
-
-    def test_cairo_surface(self):
-        surface = Regress.test_cairo_surface_none_return()
-        self.assertTrue(isinstance(surface, cairo.ImageSurface))
-        self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEqual(surface.get_width(), 10)
-        self.assertEqual(surface.get_height(), 10)
-
-        surface = Regress.test_cairo_surface_full_return()
-        self.assertTrue(isinstance(surface, cairo.ImageSurface))
-        self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEqual(surface.get_width(), 10)
-        self.assertEqual(surface.get_height(), 10)
-
-        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
-        Regress.test_cairo_surface_none_in(surface)
-
-        surface = Regress.test_cairo_surface_full_out()
-        self.assertTrue(isinstance(surface, cairo.ImageSurface))
-        self.assertTrue(isinstance(surface, cairo.Surface))
-        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
-        self.assertEqual(surface.get_width(), 10)
-        self.assertEqual(surface.get_height(), 10)
-
-    def test_require_foreign(self):
-        self.assertEqual(gi.require_foreign('cairo'), None)
-        self.assertEqual(gi.require_foreign('cairo', 'Context'), None)
-        self.assertRaises(ImportError, gi.require_foreign, 'invalid_module')
-        self.assertRaises(ImportError, gi.require_foreign, 'invalid_module', 'invalid_symbol')
-        self.assertRaises(ImportError, gi.require_foreign, 'cairo', 'invalid_symbol')
-
-
-@unittest.skipUnless(has_cairo, 'built without cairo support')
-@unittest.skipUnless(has_region, 'built without cairo.Region support')
-@unittest.skipUnless(Gdk, 'Gdk not available')
-class TestRegion(unittest.TestCase):
-
-    def test_region_to_py(self):
-        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
-        context = cairo.Context(surface)
-        context.paint()
-        region = Gdk.cairo_region_create_from_surface(surface)
-        r = region.get_extents()
-        self.assertEqual((r.height, r.width), (10, 10))
-
-    def test_region_from_py(self):
-        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
-        context = cairo.Context(surface)
-        region = cairo.Region(cairo.RectangleInt(0, 0, 42, 42))
-        Gdk.cairo_region(context, region)
-        self.assertTrue("42" in repr(list(context.copy_path())))
-
-
-@unittest.skipUnless(has_cairo, 'built without cairo support')
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestPango(unittest.TestCase):
-    def test_cairo_font_options(self):
-        screen = Gtk.Window().get_screen()
-        font_opts = screen.get_font_options()
-        self.assertEqual(type(font_opts.get_subpixel_order()), int)
-
-
-if has_cairo:
-    from gi.repository import cairo as CairoGObject
-
-    # Use PyGI signals to test non-introspected foreign marshaling.
-    class CairoSignalTester(GObject.Object):
-        sig_context = GObject.Signal(arg_types=[CairoGObject.Context])
-        sig_surface = GObject.Signal(arg_types=[CairoGObject.Surface])
-        sig_font_face = GObject.Signal(arg_types=[CairoGObject.FontFace])
-        sig_scaled_font = GObject.Signal(arg_types=[CairoGObject.ScaledFont])
-        sig_pattern = GObject.Signal(arg_types=[CairoGObject.Pattern])
-
-
-@unittest.skipUnless(has_cairo, 'built without cairo support')
-class TestSignalMarshaling(unittest.TestCase):
-    # Tests round tripping of cairo objects through non-introspected signals.
-
-    def setUp(self):
-        self.surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
-        self.context = cairo.Context(self.surface)
-        self.tester = CairoSignalTester()
-
-    def pass_object_through_signal(self, obj, signal):
-        """Pass the given `obj` through the `signal` emission storing the
-        `obj` passed through the signal and returning it."""
-        passthrough_result = []
-
-        def callback(instance, passthrough):
-            passthrough_result.append(passthrough)
-
-        signal.connect(callback)
-        signal.emit(obj)
-
-        return passthrough_result[0]
-
-    def test_context(self):
-        result = self.pass_object_through_signal(self.context, self.tester.sig_context)
-        self.assertTrue(isinstance(result, cairo.Context))
-
-    def test_surface(self):
-        result = self.pass_object_through_signal(self.surface, self.tester.sig_surface)
-        self.assertTrue(isinstance(result, cairo.Surface))
-
-    def test_font_face(self):
-        font_face = self.context.get_font_face()
-        result = self.pass_object_through_signal(font_face, self.tester.sig_font_face)
-        self.assertTrue(isinstance(result, cairo.FontFace))
-
-    def test_scaled_font(self):
-        scaled_font = cairo.ScaledFont(self.context.get_font_face(),
-                                       cairo.Matrix(),
-                                       cairo.Matrix(),
-                                       self.context.get_font_options())
-        result = self.pass_object_through_signal(scaled_font, self.tester.sig_scaled_font)
-        self.assertTrue(isinstance(result, cairo.ScaledFont))
-
-    def test_pattern(self):
-        pattern = cairo.SolidPattern(1, 1, 1, 1)
-        result = self.pass_object_through_signal(pattern, self.tester.sig_pattern)
-        self.assertTrue(isinstance(result, cairo.Pattern))
-        self.assertTrue(isinstance(result, cairo.SolidPattern))
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_docstring.py b/tests/test_docstring.py
deleted file mode 100644 (file)
index 29b7e5e..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-import unittest
-
-import gi.docstring
-
-from gi.repository import Regress
-from gi.repository import GIMarshallingTests
-from gi.repository import Gio
-from gi.repository import GObject
-from gi.repository import GLib
-
-try:
-    from gi.repository import Gtk
-except ImportError:
-    Gtk = None
-
-
-class Test(unittest.TestCase):
-    def test_api(self):
-        new_func = lambda info: 'docstring test'
-        old_func = gi.docstring.get_doc_string_generator()
-
-        gi.docstring.set_doc_string_generator(new_func)
-        self.assertEqual(gi.docstring.get_doc_string_generator(),
-                         new_func)
-        self.assertEqual(gi.docstring.generate_doc_string(None),
-                         'docstring test')
-
-        # Set back to original generator
-        gi.docstring.set_doc_string_generator(old_func)
-        self.assertEqual(gi.docstring.get_doc_string_generator(),
-                         old_func)
-
-    def test_final_signature_with_full_inout(self):
-        self.assertEqual(GIMarshallingTests.Object.full_inout.__doc__,
-                         'full_inout(object:GIMarshallingTests.Object) -> object:GIMarshallingTests.Object')
-
-    def test_overridden_doc_is_not_clobbered(self):
-        self.assertEqual(GIMarshallingTests.OverridesObject.method.__doc__,
-                         'Overridden doc string.')
-
-    def test_allow_none_with_user_data_defaults(self):
-        g_file_copy_doc = 'copy(self, destination:Gio.File, ' \
-                          'flags:Gio.FileCopyFlags, ' \
-                          'cancellable:Gio.Cancellable=None, ' \
-                          'progress_callback:Gio.FileProgressCallback=None, ' \
-                          'progress_callback_data=None) -> bool'
-
-        self.assertEqual(Gio.File.copy.__doc__, g_file_copy_doc)
-
-    def test_array_length_arg(self):
-        self.assertEqual(GIMarshallingTests.array_in.__doc__,
-                         'array_in(ints:list)')
-
-    def test_init_function(self):
-        # This tests implicit array length args along with skipping a
-        # boolean return
-        self.assertEqual(GIMarshallingTests.init_function.__doc__,
-                         'init_function(argv:list=None) -> bool, argv:list')
-
-    def test_boolean_return(self):
-        self.assertEqual(GIMarshallingTests.boolean_return_true.__doc__,
-                         'boolean_return_true() -> bool')
-
-    @unittest.skipUnless((GLib.MAJOR_VERSION, GLib.MINOR_VERSION) >= (2, 42),
-                         "nullable was added in newer glib/gi")
-    # https://bugzilla.gnome.org/show_bug.cgi?id=740301
-    def test_may_return_none(self):
-        self.assertEqual(Gio.File.get_basename.__doc__,
-                         'get_basename(self) -> str or None')
-
-    def test_class_doc_constructors(self):
-        doc = GIMarshallingTests.Object.__doc__
-        self.assertTrue('new(int_:int)' in doc)
-
-    def test_struct_doc_constructors(self):
-        doc = GIMarshallingTests.BoxedStruct.__doc__
-        self.assertTrue('new()' in doc)
-        self.assertTrue('BoxedStruct()' in doc)
-
-    def test_private_struct_constructors(self):
-        # Structs without a size or constructor should have no constructor docs.
-        doc = Regress.TestBoxedPrivate.__doc__
-        self.assertEqual(doc, '')
-
-    def test_array_inout_etc(self):
-        self.assertEqual(GIMarshallingTests.array_inout_etc.__doc__,
-                         'array_inout_etc(first:int, ints:list, last:int) -> ints:list, sum:int')
-
-    def test_array_out_etc(self):
-        self.assertEqual(GIMarshallingTests.array_out_etc.__doc__,
-                         'array_out_etc(first:int, last:int) -> ints:list, sum:int')
-
-    @unittest.skipUnless(Gtk, 'no Gtk')
-    def test_shared_array_length_with_prior_out_arg(self):
-        # Test the 'iter' out argument does not effect length argument skipping.
-        self.assertEqual(Gtk.ListStore.insert_with_valuesv.__doc__,
-                         'insert_with_valuesv(self, position:int, columns:list, values:list) -> iter:Gtk.TreeIter')
-
-    def test_sub_class_doc(self):
-        class A(GObject.Object):
-            """first doc"""
-            pass
-
-        class B(A):
-            """second doc"""
-            pass
-
-        self.assertEqual(A.__doc__, "first doc")
-        self.assertEqual(B.__doc__, "second doc")
-
-    def test_sub_class_no_doc(self):
-        class A(GObject.Object):
-            pass
-
-        class B(A):
-            """sub-class doc"""
-
-        self.assertEqual(A.__doc__, None)
-        self.assertEqual(B.__doc__, "sub-class doc")
-
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=734926
-    def test_sub_class_doc_setattr(self):
-        class A(GObject.Object):
-            pass
-
-        class B(A):
-            pass
-
-        A.__doc__ = 'custom doc'
-
-        self.assertEqual(A.__doc__, "custom doc")
-        self.assertEqual(B.__doc__, "custom doc")
diff --git a/tests/test_error.py b/tests/test_error.py
deleted file mode 100644 (file)
index 5702490..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# test_error.py: Tests for GError wrapper implementation
-#
-# Copyright (C) 2012 Will Thompson
-# Copyright (C) 2013 Martin Pitt
-# Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-import unittest
-
-from gi.repository import GLib
-from gi.repository import GIMarshallingTests
-
-
-class TestType(unittest.TestCase):
-    def test_attributes(self):
-        e = GLib.Error('test message', 'mydomain', 42)
-        self.assertEqual(e.message, 'test message')
-        self.assertEqual(e.domain, 'mydomain')
-        self.assertEqual(e.code, 42)
-
-    def test_new_literal(self):
-        mydomain = GLib.quark_from_string('mydomain')
-        e = GLib.Error.new_literal(mydomain, 'test message', 42)
-        self.assertEqual(e.message, 'test message')
-        self.assertEqual(e.domain, 'mydomain')
-        self.assertEqual(e.code, 42)
-
-    def test_matches(self):
-        mydomain = GLib.quark_from_string('mydomain')
-        notmydomain = GLib.quark_from_string('notmydomain')
-        e = GLib.Error('test message', 'mydomain', 42)
-        self.assertTrue(e.matches(mydomain, 42))
-        self.assertFalse(e.matches(notmydomain, 42))
-        self.assertFalse(e.matches(mydomain, 40))
-
-    def test_str(self):
-        e = GLib.Error('test message', 'mydomain', 42)
-        self.assertEqual(str(e),
-                         'mydomain: test message (42)')
-
-    def test_repr(self):
-        e = GLib.Error('test message', 'mydomain', 42)
-        self.assertEqual(repr(e),
-                         "GLib.Error('test message', 'mydomain', 42)")
-
-    def test_inheritance(self):
-        self.assertTrue(issubclass(GLib.Error, RuntimeError))
-
-
-class ObjectWithVFuncException(GIMarshallingTests.Object):
-    def do_vfunc_meth_with_err(self, x):
-        if x == 42:
-            return True
-
-        raise GLib.Error('unexpected value %d' % x, 'mydomain', 42)
-
-
-class TestMarshalling(unittest.TestCase):
-    def test_array_in_crash(self):
-        # Previously there was a bug in invoke, in which C arrays were unwrapped
-        # from inside GArrays to be passed to the C function. But when a GError was
-        # set, invoke would attempt to free the C array as if it were a GArray.
-        # This crash is only for C arrays. It does not happen for C functions which
-        # take in GArrays. See https://bugzilla.gnome.org/show_bug.cgi?id=642708
-        self.assertRaises(GLib.Error, GIMarshallingTests.gerror_array_in, [1, 2, 3])
-
-    def test_out(self):
-        # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
-        error, debug = GIMarshallingTests.gerror_out()
-
-        self.assertIsInstance(error, GLib.Error)
-        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
-        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
-        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
-        self.assertEqual(debug, GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE)
-
-    def test_out_transfer_none(self):
-        # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
-        error, debug = GIMarshallingTests.gerror_out_transfer_none()
-
-        self.assertIsInstance(error, GLib.Error)
-        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
-        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
-        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
-        self.assertEqual(GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE, debug)
-
-    def test_return(self):
-        # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
-        error = GIMarshallingTests.gerror_return()
-
-        self.assertIsInstance(error, GLib.Error)
-        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
-        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
-        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
-
-    def test_exception(self):
-        with self.assertRaises(GLib.Error) as context:
-            GIMarshallingTests.gerror()
-
-        e = context.exception
-        self.assertEqual(e.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
-        self.assertEqual(e.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
-        self.assertEqual(e.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
-
-    def test_vfunc_no_exception(self):
-        obj = ObjectWithVFuncException()
-        self.assertTrue(obj.vfunc_meth_with_error(42))
-
-    def test_vfunc_gerror_exception(self):
-        obj = ObjectWithVFuncException()
-        with self.assertRaises(GLib.Error) as context:
-            obj.vfunc_meth_with_error(-1)
-
-        e = context.exception
-        self.assertEqual(e.message, 'unexpected value -1')
-        self.assertEqual(e.domain, 'mydomain')
-        self.assertEqual(e.code, 42)
-
-    def tests_compare_two_gerrors_in_gvalue(self):
-        error = GLib.Error.new_literal(1, "error", 1)
-        error1 = GLib.Error.new_literal(1, "error", 1)
-
-        GIMarshallingTests.compare_two_gerrors_in_gvalue(error, error1)
-
-
-if __name__ == '__main__':
-    unittest.main()
index 0378781..563936b 100644 (file)
@@ -3,24 +3,18 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 
 import unittest
-import traceback
-import ctypes
-import warnings
+
 import sys
+sys.path.insert(0, "../")
+from sys import getrefcount
+
+import copy
+import cairo
 
-from gi.repository import Regress as Everything
 from gi.repository import GObject
 from gi.repository import GLib
 from gi.repository import Gio
-
-try:
-    from gi.repository import Gtk
-    Gtk  # pyflakes
-except:
-    Gtk = None
-
-from helper import capture_exceptions
-
+from gi.repository import Regress as Everything
 
 if sys.version_info < (3, 0):
     UNICHAR = "\xe2\x99\xa5"
@@ -29,149 +23,40 @@ else:
     UNICHAR = "♥"
 
 
-const_str = b'const \xe2\x99\xa5 utf8'
-if sys.version_info >= (3, 0):
-    const_str = const_str.decode('UTF-8')
-noconst_str = 'non' + const_str
-
-
-class RawGList(ctypes.Structure):
-    _fields_ = [('data', ctypes.c_void_p),
-                ('next', ctypes.c_void_p),
-                ('prev', ctypes.c_void_p)]
-
-    @classmethod
-    def from_wrapped(cls, obj):
-        offset = sys.getsizeof(object())  # size of PyObject_HEAD
-        return ctypes.POINTER(cls).from_address(id(obj) + offset)
-
-
-class TestInstanceTransfer(unittest.TestCase):
-
-    def test_main(self):
-        obj = Everything.TestObj()
-        for _ in range(10):
-            obj.instance_method_full()
-
-
 class TestEverything(unittest.TestCase):
 
-    def test_bool(self):
-        self.assertEqual(Everything.test_boolean(False), False)
-        self.assertEqual(Everything.test_boolean(True), True)
-        self.assertEqual(Everything.test_boolean('hello'), True)
-        self.assertEqual(Everything.test_boolean(''), False)
-
-        self.assertEqual(Everything.test_boolean_true(True), True)
-        self.assertEqual(Everything.test_boolean_false(False), False)
-
-    def test_int8(self):
-        self.assertEqual(Everything.test_int8(GLib.MAXINT8),
-                         GLib.MAXINT8)
-        self.assertEqual(Everything.test_int8(GLib.MININT8),
-                         GLib.MININT8)
-        self.assertRaises(OverflowError, Everything.test_int8, GLib.MAXINT8 + 1)
-
-        self.assertEqual(Everything.test_uint8(GLib.MAXUINT8),
-                         GLib.MAXUINT8)
-        self.assertEqual(Everything.test_uint8(0), 0)
-        self.assertRaises(OverflowError, Everything.test_uint8, -1)
-        self.assertRaises(OverflowError, Everything.test_uint8, GLib.MAXUINT8 + 1)
-
-    def test_int16(self):
-        self.assertEqual(Everything.test_int16(GLib.MAXINT16),
-                         GLib.MAXINT16)
-        self.assertEqual(Everything.test_int16(GLib.MININT16),
-                         GLib.MININT16)
-        self.assertRaises(OverflowError, Everything.test_int16, GLib.MAXINT16 + 1)
-
-        self.assertEqual(Everything.test_uint16(GLib.MAXUINT16),
-                         GLib.MAXUINT16)
-        self.assertEqual(Everything.test_uint16(0), 0)
-        self.assertRaises(OverflowError, Everything.test_uint16, -1)
-        self.assertRaises(OverflowError, Everything.test_uint16, GLib.MAXUINT16 + 1)
-
-    def test_int32(self):
-        self.assertEqual(Everything.test_int32(GLib.MAXINT32),
-                         GLib.MAXINT32)
-        self.assertEqual(Everything.test_int32(GLib.MININT32),
-                         GLib.MININT32)
-        self.assertRaises(OverflowError, Everything.test_int32, GLib.MAXINT32 + 1)
-
-        self.assertEqual(Everything.test_uint32(GLib.MAXUINT32),
-                         GLib.MAXUINT32)
-        self.assertEqual(Everything.test_uint32(0), 0)
-        self.assertRaises(OverflowError, Everything.test_uint32, -1)
-        self.assertRaises(OverflowError, Everything.test_uint32, GLib.MAXUINT32 + 1)
-
-    def test_int64(self):
-        self.assertEqual(Everything.test_int64(GLib.MAXINT64),
-                         GLib.MAXINT64)
-        self.assertEqual(Everything.test_int64(GLib.MININT64),
-                         GLib.MININT64)
-        self.assertRaises(OverflowError, Everything.test_int64, GLib.MAXINT64 + 1)
-
-        self.assertEqual(Everything.test_uint64(GLib.MAXUINT64),
-                         GLib.MAXUINT64)
-        self.assertEqual(Everything.test_uint64(0), 0)
-        self.assertRaises(OverflowError, Everything.test_uint64, -1)
-        self.assertRaises(OverflowError, Everything.test_uint64, GLib.MAXUINT64 + 1)
-
-    def test_int(self):
-        self.assertEqual(Everything.test_int(GLib.MAXINT),
-                         GLib.MAXINT)
-        self.assertEqual(Everything.test_int(GLib.MININT),
-                         GLib.MININT)
-        self.assertRaises(OverflowError, Everything.test_int, GLib.MAXINT + 1)
-
-        self.assertEqual(Everything.test_uint(GLib.MAXUINT),
-                         GLib.MAXUINT)
-        self.assertEqual(Everything.test_uint(0), 0)
-        self.assertRaises(OverflowError, Everything.test_uint, -1)
-        self.assertRaises(OverflowError, Everything.test_uint, GLib.MAXUINT + 1)
-
-    def test_short(self):
-        self.assertEqual(Everything.test_short(GLib.MAXSHORT),
-                         GLib.MAXSHORT)
-        self.assertEqual(Everything.test_short(GLib.MINSHORT),
-                         GLib.MINSHORT)
-        self.assertRaises(OverflowError, Everything.test_short, GLib.MAXSHORT + 1)
-
-        self.assertEqual(Everything.test_ushort(GLib.MAXUSHORT),
-                         GLib.MAXUSHORT)
-        self.assertEqual(Everything.test_ushort(0), 0)
-        self.assertRaises(OverflowError, Everything.test_ushort, -1)
-        self.assertRaises(OverflowError, Everything.test_ushort, GLib.MAXUSHORT + 1)
-
-    def test_long(self):
-        self.assertEqual(Everything.test_long(GLib.MAXLONG),
-                         GLib.MAXLONG)
-        self.assertEqual(Everything.test_long(GLib.MINLONG),
-                         GLib.MINLONG)
-        self.assertRaises(OverflowError, Everything.test_long, GLib.MAXLONG + 1)
-
-        self.assertEqual(Everything.test_ulong(GLib.MAXULONG),
-                         GLib.MAXULONG)
-        self.assertEqual(Everything.test_ulong(0), 0)
-        self.assertRaises(OverflowError, Everything.test_ulong, -1)
-        self.assertRaises(OverflowError, Everything.test_ulong, GLib.MAXULONG + 1)
-
-    def test_size(self):
-        self.assertEqual(Everything.test_ssize(GLib.MAXSSIZE),
-                         GLib.MAXSSIZE)
-        self.assertEqual(Everything.test_ssize(GLib.MINSSIZE),
-                         GLib.MINSSIZE)
-        self.assertRaises(OverflowError, Everything.test_ssize, GLib.MAXSSIZE + 1)
-
-        self.assertEqual(Everything.test_size(GLib.MAXSIZE),
-                         GLib.MAXSIZE)
-        self.assertEqual(Everything.test_size(0), 0)
-        self.assertRaises(OverflowError, Everything.test_size, -1)
-        self.assertRaises(OverflowError, Everything.test_size, GLib.MAXSIZE + 1)
-
-    def test_timet(self):
-        self.assertEqual(Everything.test_timet(42), 42)
-        self.assertRaises(OverflowError, Everything.test_timet, GLib.MAXUINT64 + 1)
+    def test_cairo_context(self):
+        context = Everything.test_cairo_context_full_return()
+        self.assertTrue(isinstance(context, cairo.Context))
+
+        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
+        context = cairo.Context(surface)
+        Everything.test_cairo_context_none_in(context)
+
+    def test_cairo_surface(self):
+        surface = Everything.test_cairo_surface_none_return()
+        self.assertTrue(isinstance(surface, cairo.ImageSurface))
+        self.assertTrue(isinstance(surface, cairo.Surface))
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
+
+        surface = Everything.test_cairo_surface_full_return()
+        self.assertTrue(isinstance(surface, cairo.ImageSurface))
+        self.assertTrue(isinstance(surface, cairo.Surface))
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
+
+        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 10, 10)
+        Everything.test_cairo_surface_none_in(surface)
+
+        surface = Everything.test_cairo_surface_full_out()
+        self.assertTrue(isinstance(surface, cairo.ImageSurface))
+        self.assertTrue(isinstance(surface, cairo.Surface))
+        self.assertEqual(surface.get_format(), cairo.FORMAT_ARGB32)
+        self.assertEqual(surface.get_width(), 10)
+        self.assertEqual(surface.get_height(), 10)
 
     def test_unichar(self):
         self.assertEqual("c", Everything.test_unichar("c"))
@@ -182,102 +67,6 @@ class TestEverything(unittest.TestCase):
         self.assertRaises(TypeError, Everything.test_unichar, "")
         self.assertRaises(TypeError, Everything.test_unichar, "morethanonechar")
 
-    def test_float(self):
-        self.assertEqual(Everything.test_float(GLib.MAXFLOAT),
-                         GLib.MAXFLOAT)
-        self.assertEqual(Everything.test_float(GLib.MINFLOAT),
-                         GLib.MINFLOAT)
-        self.assertRaises(OverflowError, Everything.test_float, GLib.MAXFLOAT * 2)
-
-    def test_double(self):
-        self.assertEqual(Everything.test_double(GLib.MAXDOUBLE),
-                         GLib.MAXDOUBLE)
-        self.assertEqual(Everything.test_double(GLib.MINDOUBLE),
-                         GLib.MINDOUBLE)
-
-        (two, three) = Everything.test_multi_double_args(2.5)
-        self.assertAlmostEqual(two, 5.0)
-        self.assertAlmostEqual(three, 7.5)
-
-    def test_value(self):
-        self.assertEqual(Everything.test_int_value_arg(GLib.MAXINT), GLib.MAXINT)
-        self.assertEqual(Everything.test_value_return(GLib.MAXINT), GLib.MAXINT)
-
-    def test_variant(self):
-        v = Everything.test_gvariant_i()
-        self.assertEqual(v.get_type_string(), 'i')
-        self.assertEqual(v.get_int32(), 1)
-
-        v = Everything.test_gvariant_s()
-        self.assertEqual(v.get_type_string(), 's')
-        self.assertEqual(v.get_string(), 'one')
-
-        v = Everything.test_gvariant_v()
-        self.assertEqual(v.get_type_string(), 'v')
-        vi = v.get_variant()
-        self.assertEqual(vi.get_type_string(), 's')
-        self.assertEqual(vi.get_string(), 'contents')
-
-        v = Everything.test_gvariant_as()
-        self.assertEqual(v.get_type_string(), 'as')
-        self.assertEqual(v.get_strv(), ['one', 'two', 'three'])
-
-        v = Everything.test_gvariant_asv()
-        self.assertEqual(v.get_type_string(), 'a{sv}')
-        self.assertEqual(v.lookup_value('nosuchkey', None), None)
-        name = v.lookup_value('name', None)
-        self.assertEqual(name.get_string(), 'foo')
-        timeout = v.lookup_value('timeout', None)
-        self.assertEqual(timeout.get_int32(), 10)
-
-    def test_utf8_const_return(self):
-        self.assertEqual(Everything.test_utf8_const_return(), const_str)
-
-    def test_utf8_nonconst_return(self):
-        self.assertEqual(Everything.test_utf8_nonconst_return(), noconst_str)
-
-    def test_utf8_out(self):
-        self.assertEqual(Everything.test_utf8_out(), noconst_str)
-
-    def test_utf8_const_in(self):
-        Everything.test_utf8_const_in(const_str)
-
-    def test_utf8_inout(self):
-        self.assertEqual(Everything.test_utf8_inout(const_str), noconst_str)
-
-    def test_filename_return(self):
-        self.assertEqual(Everything.test_filename_return(), ['åäö', '/etc/fstab'])
-
-    def test_int_out_utf8(self):
-        # returns g_utf8_strlen() in out argument
-        self.assertEqual(Everything.test_int_out_utf8(''), 0)
-        self.assertEqual(Everything.test_int_out_utf8('hello world'), 11)
-        self.assertEqual(Everything.test_int_out_utf8('åäö'), 3)
-
-    def test_utf8_out_out(self):
-        self.assertEqual(Everything.test_utf8_out_out(), ('first', 'second'))
-
-    def test_utf8_out_nonconst_return(self):
-        self.assertEqual(Everything.test_utf8_out_nonconst_return(), ('first', 'second'))
-
-    def test_enum(self):
-        self.assertEqual(Everything.test_enum_param(Everything.TestEnum.VALUE1), 'value1')
-        self.assertEqual(Everything.test_enum_param(Everything.TestEnum.VALUE3), 'value3')
-        self.assertRaises(TypeError, Everything.test_enum_param, 'hello')
-
-    # FIXME: ValueError: invalid enum value: 2147483648
-    @unittest.expectedFailure
-    def test_enum_unsigned(self):
-        self.assertEqual(Everything.test_unsigned_enum_param(Everything.TestEnumUnsigned.VALUE1), 'value1')
-        self.assertEqual(Everything.test_unsigned_enum_param(Everything.TestEnumUnsigned.VALUE3), 'value3')
-        self.assertRaises(TypeError, Everything.test_unsigned_enum_param, 'hello')
-
-    def test_flags(self):
-        result = Everything.global_get_flags_out()
-        # assert that it's not an int
-        self.assertEqual(type(result), Everything.TestFlags)
-        self.assertEqual(result, Everything.TestFlags.FLAG1 | Everything.TestFlags.FLAG3)
-
     def test_floating(self):
         e = Everything.TestFloating()
         self.assertEqual(e.__grefcount__, 1)
@@ -317,15 +106,12 @@ class TestEverything(unittest.TestCase):
         self.assertEqual(struct_b.nested_a.some_double, struct_b_clone.nested_a.some_double)
         self.assertEqual(struct_b.nested_a.some_enum, struct_b_clone.nested_a.some_enum)
 
-        struct_a = Everything.test_struct_a_parse('ignored')
-        self.assertEqual(struct_a.some_int, 23)
-
     def test_wrong_type_of_arguments(self):
         try:
             Everything.test_int8()
         except TypeError:
             (e_type, e) = sys.exc_info()[:2]
-            self.assertEqual(e.args, ("Regress.test_int8() takes exactly 1 argument (0 given)",))
+            self.assertEqual(e.args, ("test_int8() takes exactly 1 argument (0 given)",))
 
     def test_gtypes(self):
         gchararray_gtype = GObject.type_from_name('gchararray')
@@ -372,123 +158,18 @@ class TestEverything(unittest.TestCase):
         # test that there are no duplicates returned
         self.assertEqual(len(attr_list), len(set(attr_list)))
 
-    def test_array_int_in_empty(self):
-        self.assertEqual(Everything.test_array_int_in([]), 0)
-
-    def test_array_int_in(self):
-        self.assertEqual(Everything.test_array_int_in([1, 5, -2]), 4)
-
-    def test_array_int_out(self):
-        self.assertEqual(Everything.test_array_int_out(), [0, 1, 2, 3, 4])
-
-    def test_array_int_full_out(self):
-        self.assertEqual(Everything.test_array_int_full_out(), [0, 1, 2, 3, 4])
-
-    def test_array_int_none_out(self):
-        self.assertEqual(Everything.test_array_int_none_out(), [1, 2, 3, 4, 5])
-
-    def test_array_int_inout(self):
-        self.assertEqual(Everything.test_array_int_inout([1, 5, 42, -8]), [6, 43, -7])
-
-    def test_array_int_inout_empty(self):
-        self.assertEqual(Everything.test_array_int_inout([]), [])
-
-    def test_array_gint8_in(self):
-        if sys.version_info >= (3, 0):
-            self.assertEqual(Everything.test_array_gint8_in(b'\x01\x03\x05'), 9)
-        self.assertEqual(Everything.test_array_gint8_in([1, 3, 5, -50]), -41)
-
-    def test_array_gint16_in(self):
-        self.assertEqual(Everything.test_array_gint16_in([256, 257, -1000, 10000]), 9513)
-
-    def test_array_gint32_in(self):
-        self.assertEqual(Everything.test_array_gint32_in([30000, 1, -2]), 29999)
-
-    def test_array_gint64_in(self):
-        self.assertEqual(Everything.test_array_gint64_in([2 ** 33, 2 ** 34]), 2 ** 33 + 2 ** 34)
-
-    def test_array_gtype_in(self):
-        self.assertEqual(Everything.test_array_gtype_in(
-            [GObject.TYPE_STRING, GObject.TYPE_UINT64, GObject.TYPE_VARIANT]),
-            '[gchararray,guint64,GVariant,]')
-
-    def test_array_fixed_size_int_in(self):
-        # fixed length of 5
-        self.assertEqual(Everything.test_array_fixed_size_int_in([1, 2, -10, 5, 3]), 1)
-
-    def test_array_fixed_size_int_in_error(self):
-        self.assertRaises(ValueError, Everything.test_array_fixed_size_int_in, [1, 2, 3, 4])
-        self.assertRaises(ValueError, Everything.test_array_fixed_size_int_in, [1, 2, 3, 4, 5, 6])
-
-    def test_array_fixed_size_int_out(self):
-        self.assertEqual(Everything.test_array_fixed_size_int_out(), [0, 1, 2, 3, 4])
-
-    def test_array_fixed_size_int_return(self):
-        self.assertEqual(Everything.test_array_fixed_size_int_return(), [0, 1, 2, 3, 4])
-
-    def test_garray_container_return(self):
-        # GPtrArray transfer container
+    def test_ptrarray(self):
+        # transfer container
         result = Everything.test_garray_container_return()
         self.assertEqual(result, ['regress'])
         result = None
 
-    def test_garray_full_return(self):
-        # GPtrArray transfer full
+        # transfer full
         result = Everything.test_garray_full_return()
         self.assertEqual(result, ['regress'])
         result = None
 
-    def test_strv_out(self):
-        self.assertEqual(Everything.test_strv_out(), ['thanks', 'for', 'all', 'the', 'fish'])
-
-    def test_strv_out_c(self):
-        self.assertEqual(Everything.test_strv_out_c(), ['thanks', 'for', 'all', 'the', 'fish'])
-
-    def test_strv_out_container(self):
-        self.assertEqual(Everything.test_strv_out_container(), ['1', '2', '3'])
-
-    def test_strv_outarg(self):
-        self.assertEqual(Everything.test_strv_outarg(), ['1', '2', '3'])
-
-    def test_strv_in_gvalue(self):
-        self.assertEqual(Everything.test_strv_in_gvalue(), ['one', 'two', 'three'])
-
-    def test_strv_in(self):
-        Everything.test_strv_in(['1', '2', '3'])
-
-    def test_glist(self):
-        self.assertEqual(Everything.test_glist_nothing_return(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_glist_nothing_return2(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_glist_container_return(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_glist_everything_return(), ['1', '2', '3'])
-
-        Everything.test_glist_nothing_in(['1', '2', '3'])
-        Everything.test_glist_nothing_in2(['1', '2', '3'])
-
-    @unittest.skipUnless(hasattr(Everything, 'test_glist_gtype_container_in'),
-                         'Requires newer version of GI')
-    def test_glist_gtype(self):
-        Everything.test_glist_gtype_container_in(
-            [Everything.TestObj, Everything.TestSubObj])
-
-    def test_gslist(self):
-        self.assertEqual(Everything.test_gslist_nothing_return(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_gslist_nothing_return2(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_gslist_container_return(), ['1', '2', '3'])
-        self.assertEqual(Everything.test_gslist_everything_return(), ['1', '2', '3'])
-
-        Everything.test_gslist_nothing_in(['1', '2', '3'])
-        Everything.test_gslist_nothing_in2(['1', '2', '3'])
-
     def test_hash_return(self):
-        expected = {'foo': 'bar', 'baz': 'bat', 'qux': 'quux'}
-
-        self.assertEqual(Everything.test_ghash_null_return(), None)
-        self.assertEqual(Everything.test_ghash_nothing_return(), expected)
-        self.assertEqual(Everything.test_ghash_nothing_return(), expected)
-        self.assertEqual(Everything.test_ghash_container_return(), expected)
-        self.assertEqual(Everything.test_ghash_everything_return(), expected)
-
         result = Everything.test_ghash_gvalue_return()
         self.assertEqual(result['integer'], 12)
         self.assertEqual(result['boolean'], True)
@@ -498,20 +179,12 @@ class TestEverything(unittest.TestCase):
         self.assertEqual(result['enum'], Everything.TestEnum.VALUE2)
         result = None
 
-    # FIXME: CRITICAL **: Unsupported type ghash
-    def disabled_test_hash_return_nested(self):
-        self.assertEqual(Everything.test_ghash_nested_everything_return(), {})
-        self.assertEqual(Everything.test_ghash_nested_everything_return2(), {})
-
     def test_hash_in(self):
-        expected = {'foo': 'bar', 'baz': 'bat', 'qux': 'quux'}
-
-        Everything.test_ghash_nothing_in(expected)
-        Everything.test_ghash_nothing_in2(expected)
-
-    def test_hash_in_with_typed_strv(self):
+        # specifying a simple string array for "strings" does not work due to
+        # https://bugzilla.gnome.org/show_bug.cgi?id=666636
+        # workaround by explicitly building a GStrv object
         class GStrv(list):
-            __gtype__ = GObject.TYPE_STRV
+            __gtype__ = GObject.type_from_name('GStrv')
 
         data = {'integer': 12,
                 'boolean': True,
@@ -523,50 +196,25 @@ class TestEverything(unittest.TestCase):
         Everything.test_ghash_gvalue_in(data)
         data = None
 
-    def test_hash_in_with_gvalue_strv(self):
-        data = {'integer': 12,
-                'boolean': True,
-                'string': 'some text',
-                'strings': GObject.Value(GObject.TYPE_STRV, ['first', 'second', 'third']),
-                'flags': Everything.TestFlags.FLAG1 | Everything.TestFlags.FLAG3,
-                'enum': Everything.TestEnum.VALUE2,
-               }
-        Everything.test_ghash_gvalue_in(data)
-        data = None
-
     def test_struct_gpointer(self):
-        glist = GLib.List()
-        raw = RawGList.from_wrapped(glist)
+        l1 = GLib.List()
+        self.assertEqual(l1.data, None)
+        init_refcount = getrefcount(l1)
 
-        # Note that pointer fields use 0 for NULL in PyGObject and None in ctypes
-        self.assertEqual(glist.data, 0)
-        self.assertEqual(raw.contents.data, None)
+        l1.data = 'foo'
+        self.assertEqual(l1.data, 'foo')
 
-        glist.data = 123
-        self.assertEqual(glist.data, 123)
-        self.assertEqual(raw.contents.data, 123)
+        l2 = l1
+        self.assertEqual(l1.data, l2.data)
+        self.assertEqual(getrefcount(l1), init_refcount + 1)
 
-        glist.data = None
-        self.assertEqual(glist.data, 0)
-        self.assertEqual(raw.contents.data, None)
-
-        # Setting to anything other than an int should raise
-        self.assertRaises(TypeError, setattr, glist.data, 'nan')
-        self.assertRaises(TypeError, setattr, glist.data, object())
-        self.assertRaises(TypeError, setattr, glist.data, 123.321)
-
-    def test_struct_opaque(self):
-        # we should get a sensible error message
-        try:
-            Everything.TestBoxedPrivate()
-            self.fail('allocating disguised struct without default constructor unexpectedly succeeded')
-        except TypeError:
-            (e_type, e_value, e_tb) = sys.exc_info()
-            self.assertEqual(e_type, TypeError)
-            self.assertTrue('TestBoxedPrivate' in str(e_value), str(e_value))
-            self.assertTrue('constructor' in str(e_value), str(e_value))
-            tb = ''.join(traceback.format_exception(e_type, e_value, e_tb))
-            self.assertTrue('test_everything.py", line' in tb, tb)
+        l3 = copy.copy(l1)
+        l3.data = 'bar'
+        self.assertEqual(l1.data, 'foo')
+        self.assertEqual(l2.data, 'foo')
+        self.assertEqual(l3.data, 'bar')
+        self.assertEqual(getrefcount(l1), init_refcount + 1)
+        self.assertEqual(getrefcount(l3), init_refcount)
 
 
 class TestNullableArgs(unittest.TestCase):
@@ -608,7 +256,7 @@ class TestNullableArgs(unittest.TestCase):
 
 class TestCallbacks(unittest.TestCase):
     called = False
-    main_loop = GLib.MainLoop()
+    main_loop = GObject.MainLoop()
 
     def test_callback(self):
         TestCallbacks.called = False
@@ -631,10 +279,7 @@ class TestCallbacks(unittest.TestCase):
         # note that we do NOT expect the ZeroDivisionError to be propagated
         # through from the callback, as it crosses the Python<->C boundary
         # twice. (See GNOME #616279)
-        with capture_exceptions() as exc:
-            Everything.test_simple_callback(callback)
-        self.assertTrue(exc)
-        self.assertEqual(exc[0].type, ZeroDivisionError)
+        Everything.test_simple_callback(callback)
 
     def test_double_callback_exception(self):
         """
@@ -653,10 +298,7 @@ class TestCallbacks(unittest.TestCase):
         # note that we do NOT expect the ZeroDivisionError to be propagated
         # through from the callback, as it crosses the Python<->C boundary
         # twice. (See GNOME #616279)
-        with capture_exceptions() as exc:
-            Everything.test_simple_callback(callback)
-        self.assertTrue(exc)
-        self.assertEqual(exc[0].type, ZeroDivisionError)
+        Everything.test_simple_callback(callback)
 
     def test_return_value_callback(self):
         TestCallbacks.called = False
@@ -668,86 +310,27 @@ class TestCallbacks(unittest.TestCase):
         self.assertEqual(Everything.test_callback(callback), 44)
         self.assertTrue(TestCallbacks.called)
 
-    def test_callback_scope_async(self):
+    def test_callback_async(self):
         TestCallbacks.called = False
-        ud = 'Test Value 44'
 
-        def callback(user_data):
-            self.assertEqual(user_data, ud)
+        def callback(foo):
             TestCallbacks.called = True
-            return 44
-
-        ud_refcount = sys.getrefcount(ud)
-        callback_refcount = sys.getrefcount(callback)
+            return foo
 
-        self.assertEqual(Everything.test_callback_async(callback, ud), None)
-        # Callback should not have run and the ref count is increased by 1
-        self.assertEqual(TestCallbacks.called, False)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
-        self.assertEqual(sys.getrefcount(ud), ud_refcount + 1)
-
-        # test_callback_thaw_async will run the callback previously supplied.
-        # references should be auto decremented after this call.
-        self.assertEqual(Everything.test_callback_thaw_async(), 44)
+        Everything.test_callback_async(callback, 44)
+        i = Everything.test_callback_thaw_async()
+        self.assertEqual(44, i)
         self.assertTrue(TestCallbacks.called)
 
-        # Make sure refcounts are returned to normal
-        self.assertEqual(sys.getrefcount(callback), callback_refcount)
-        self.assertEqual(sys.getrefcount(ud), ud_refcount)
-
-    def test_callback_scope_call_multi(self):
-        # This tests a callback that gets called multiple times from a
-        # single scope call in python.
+    def test_callback_scope_call(self):
         TestCallbacks.called = 0
 
         def callback():
             TestCallbacks.called += 1
-            return TestCallbacks.called
+            return 0
 
-        refcount = sys.getrefcount(callback)
-        result = Everything.test_multi_callback(callback)
-        # first callback should give 1, second 2, and the function sums them up
-        self.assertEqual(result, 3)
+        Everything.test_multi_callback(callback)
         self.assertEqual(TestCallbacks.called, 2)
-        self.assertEqual(sys.getrefcount(callback), refcount)
-
-    def test_callback_scope_call_array(self):
-        # This tests a callback that gets called multiple times from a
-        # single scope call in python with array arguments
-        TestCallbacks.callargs = []
-
-        # FIXME: would be cleaner without the explicit length args:
-        # def callback(one, two):
-        def callback(one, one_length, two, two_length):
-            TestCallbacks.callargs.append((one, two))
-            return len(TestCallbacks.callargs)
-
-        refcount = sys.getrefcount(callback)
-        result = Everything.test_array_callback(callback)
-        # first callback should give 1, second 2, and the function sums them up
-        self.assertEqual(result, 3)
-        self.assertEqual(TestCallbacks.callargs,
-                         [([-1, 0, 1, 2], ['one', 'two', 'three'])] * 2)
-        self.assertEqual(sys.getrefcount(callback), refcount)
-
-    @unittest.skipUnless(hasattr(Everything, 'test_array_inout_callback'),
-                         'Requires newer version of GI')
-    def test_callback_scope_call_array_inout(self):
-        # This tests a callback that gets called multiple times from a
-        # single scope call in python with inout array arguments
-        TestCallbacks.callargs = []
-
-        def callback(ints, ints_length):
-            TestCallbacks.callargs.append(ints)
-            return ints[1:], len(ints[1:])
-
-        refcount = sys.getrefcount(callback)
-        result = Everything.test_array_inout_callback(callback)
-        self.assertEqual(TestCallbacks.callargs,
-                         [[-2, -1, 0, 1, 2], [-1, 0, 1, 2]])
-        # first callback should give 4, second 3
-        self.assertEqual(result, 3)
-        self.assertEqual(sys.getrefcount(callback), refcount)
 
     def test_callback_userdata(self):
         TestCallbacks.called = 0
@@ -763,102 +346,27 @@ class TestCallbacks(unittest.TestCase):
 
         self.assertEqual(TestCallbacks.called, 100)
 
-    def test_callback_userdata_no_user_data(self):
-        TestCallbacks.called = 0
-
-        def callback():
-            TestCallbacks.called += 1
-            return TestCallbacks.called
-
-        for i in range(100):
-            val = Everything.test_callback_user_data(callback)
-            self.assertEqual(val, i + 1)
-
-        self.assertEqual(TestCallbacks.called, 100)
-
-    def test_callback_userdata_varargs(self):
-        TestCallbacks.called = 0
-        collected_user_data = []
-
-        def callback(a, b):
-            collected_user_data.extend([a, b])
-            TestCallbacks.called += 1
-            return TestCallbacks.called
-
-        for i in range(10):
-            val = Everything.test_callback_user_data(callback, 1, 2)
-            self.assertEqual(val, i + 1)
-
-        self.assertEqual(TestCallbacks.called, 10)
-        self.assertSequenceEqual(collected_user_data, [1, 2] * 10)
-
-    def test_callback_userdata_as_kwarg_tuple(self):
-        TestCallbacks.called = 0
-        collected_user_data = []
-
-        def callback(user_data):
-            collected_user_data.extend(user_data)
-            TestCallbacks.called += 1
-            return TestCallbacks.called
-
-        for i in range(10):
-            val = Everything.test_callback_user_data(callback, user_data=(1, 2))
-            self.assertEqual(val, i + 1)
-
-        self.assertEqual(TestCallbacks.called, 10)
-        self.assertSequenceEqual(collected_user_data, [1, 2] * 10)
-
-    def test_callback_user_data_middle_none(self):
-        cb_info = {}
-
-        def callback(userdata):
-            cb_info['called'] = True
-            cb_info['userdata'] = userdata
-            return 1
-
-        (y, z, q) = Everything.test_torture_signature_2(
-            42, callback, None, 'some string', 3)
-        self.assertEqual(y, 42)
-        self.assertEqual(z, 84)
-        self.assertEqual(q, 14)
-        self.assertTrue(cb_info['called'])
-        self.assertEqual(cb_info['userdata'], None)
-
-    def test_callback_user_data_middle_single(self):
-        cb_info = {}
+    def test_callback_userdata_refcount(self):
+        TestCallbacks.called = False
 
         def callback(userdata):
-            cb_info['called'] = True
-            cb_info['userdata'] = userdata
+            TestCallbacks.called = True
             return 1
 
-        (y, z, q) = Everything.test_torture_signature_2(
-            42, callback, 'User Data', 'some string', 3)
-        self.assertEqual(y, 42)
-        self.assertEqual(z, 84)
-        self.assertEqual(q, 14)
-        self.assertTrue(cb_info['called'])
-        self.assertEqual(cb_info['userdata'], 'User Data')
+        ud = "Test User Data"
 
-    def test_callback_user_data_middle_tuple(self):
-        cb_info = {}
+        start_ref_count = getrefcount(ud)
+        for i in range(100):
+            Everything.test_callback_destroy_notify(callback, ud)
 
-        def callback(userdata):
-            cb_info['called'] = True
-            cb_info['userdata'] = userdata
-            return 1
+        Everything.test_callback_thaw_notifications()
+        end_ref_count = getrefcount(ud)
 
-        (y, z, q) = Everything.test_torture_signature_2(
-            42, callback, (-5, 'User Data'), 'some string', 3)
-        self.assertEqual(y, 42)
-        self.assertEqual(z, 84)
-        self.assertEqual(q, 14)
-        self.assertTrue(cb_info['called'])
-        self.assertEqual(cb_info['userdata'], (-5, 'User Data'))
+        self.assertEqual(start_ref_count, end_ref_count)
 
     def test_async_ready_callback(self):
         TestCallbacks.called = False
-        TestCallbacks.main_loop = GLib.MainLoop()
+        TestCallbacks.main_loop = GObject.MainLoop()
 
         def callback(obj, result, user_data):
             TestCallbacks.main_loop.quit()
@@ -870,73 +378,15 @@ class TestCallbacks(unittest.TestCase):
 
         self.assertTrue(TestCallbacks.called)
 
-    def test_callback_scope_notified_with_destroy(self):
-        TestCallbacks.called = 0
-        ud = 'Test scope notified data 33'
-
+    def test_callback_destroy_notify(self):
         def callback(user_data):
-            self.assertEqual(user_data, ud)
-            TestCallbacks.called += 1
-            return 33
-
-        value_refcount = sys.getrefcount(ud)
-        callback_refcount = sys.getrefcount(callback)
-
-        # Callback is immediately called.
-        for i in range(100):
-            res = Everything.test_callback_destroy_notify(callback, ud)
-            self.assertEqual(res, 33)
-
-        self.assertEqual(TestCallbacks.called, 100)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount + 100)
-        self.assertEqual(sys.getrefcount(ud), value_refcount + 100)
-
-        # thaw will call the callback again, this time resources should be freed
-        self.assertEqual(Everything.test_callback_thaw_notifications(), 33 * 100)
-        self.assertEqual(TestCallbacks.called, 200)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount)
-        self.assertEqual(sys.getrefcount(ud), value_refcount)
-
-    def test_callback_scope_notified_with_destroy_no_user_data(self):
-        TestCallbacks.called = 0
+            TestCallbacks.called = True
+            return 42
 
-        def callback(user_data):
-            self.assertEqual(user_data, None)
-            TestCallbacks.called += 1
-            return 34
-
-        callback_refcount = sys.getrefcount(callback)
-
-        # Run with warning as exception
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter("error")
-            self.assertRaises(RuntimeWarning,
-                              Everything.test_callback_destroy_notify_no_user_data,
-                              callback)
-
-        self.assertEqual(TestCallbacks.called, 0)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount)
-
-        # Run with warning as warning
-        with warnings.catch_warnings(record=True) as w:
-            # Cause all warnings to always be triggered.
-            warnings.simplefilter("default")
-            # Trigger a warning.
-            res = Everything.test_callback_destroy_notify_no_user_data(callback)
-            # Verify some things
-            self.assertEqual(len(w), 1)
-            self.assertTrue(issubclass(w[-1].category, RuntimeWarning))
-            self.assertTrue('Callables passed to' in str(w[-1].message))
-
-        self.assertEqual(res, 34)
-        self.assertEqual(TestCallbacks.called, 1)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
-
-        # thaw will call the callback again,
-        # refcount will not go down without user_data parameter
-        self.assertEqual(Everything.test_callback_thaw_notifications(), 34)
-        self.assertEqual(TestCallbacks.called, 2)
-        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
+        TestCallbacks.called = False
+        self.assertEqual(Everything.test_callback_destroy_notify(callback, 42), 42)
+        self.assertTrue(TestCallbacks.called)
+        self.assertEqual(Everything.test_callback_thaw_notifications(), 42)
 
     def test_callback_in_methods(self):
         object_ = Everything.TestObj()
@@ -954,17 +404,12 @@ class TestCallbacks(unittest.TestCase):
         self.assertTrue(TestCallbacks.called)
 
         def callbackWithUserData(user_data):
-            TestCallbacks.called += 1
+            TestCallbacks.called = True
             return 42
 
-        TestCallbacks.called = 0
+        TestCallbacks.called = False
         Everything.TestObj.new_callback(callbackWithUserData, None)
-        self.assertEqual(TestCallbacks.called, 1)
-        # Note: using "new_callback" adds the notification to the same global
-        # list as Everything.test_callback_destroy_notify, so thaw the list
-        # so we don't get confusion between tests.
-        self.assertEqual(Everything.test_callback_thaw_notifications(), 42)
-        self.assertEqual(TestCallbacks.called, 2)
+        self.assertTrue(TestCallbacks.called)
 
     def test_callback_none(self):
         # make sure this doesn't assert or crash
@@ -1015,16 +460,6 @@ class TestCallbacks(unittest.TestCase):
 
 
 class TestClosures(unittest.TestCase):
-    def test_no_arg(self):
-        def callback():
-            self.called = True
-            return 42
-
-        self.called = False
-        result = Everything.test_closure(callback)
-        self.assertTrue(self.called)
-        self.assertEqual(result, 42)
-
     def test_int_arg(self):
         def callback(num):
             self.called = True
@@ -1035,12 +470,13 @@ class TestClosures(unittest.TestCase):
         self.assertTrue(self.called)
         self.assertEqual(result, 43)
 
+    # https://bugzilla.gnome.org/show_bug.cgi?id=656554
+
+    @unittest.expectedFailure
     def test_variant(self):
         def callback(variant):
-            self.called = True
-            if variant is None:
-                return None
             self.assertEqual(variant.get_type_string(), 'i')
+            self.called = True
             return GLib.Variant('i', variant.get_int32() + 1)
 
         self.called = False
@@ -1049,32 +485,52 @@ class TestClosures(unittest.TestCase):
         self.assertEqual(result.get_type_string(), 'i')
         self.assertEqual(result.get_int32(), 43)
 
-        self.called = False
-        result = Everything.test_closure_variant(callback, None)
-        self.assertTrue(self.called)
-        self.assertEqual(result, None)
 
-        self.called = False
-        self.assertRaises(TypeError, Everything.test_closure_variant, callback, 'foo')
-        self.assertFalse(self.called)
+class TestProperties(unittest.TestCase):
 
-    def test_variant_wrong_return_type(self):
-        def callback(variant):
-            return 'no_variant'
+    def test_basic(self):
+        object_ = Everything.TestObj()
+
+        self.assertEqual(object_.props.int, 0)
+        object_.props.int = 42
+        self.assertTrue(isinstance(object_.props.int, int))
+        self.assertEqual(object_.props.int, 42)
+
+        self.assertEqual(object_.props.float, 0.0)
+        object_.props.float = 42.42
+        self.assertTrue(isinstance(object_.props.float, float))
+        self.assertAlmostEquals(object_.props.float, 42.42, places=5)
+
+        self.assertEqual(object_.props.double, 0.0)
+        object_.props.double = 42.42
+        self.assertTrue(isinstance(object_.props.double, float))
+        self.assertAlmostEquals(object_.props.double, 42.42, places=5)
+
+        self.assertEqual(object_.props.string, None)
+        object_.props.string = 'mec'
+        self.assertTrue(isinstance(object_.props.string, str))
+        self.assertEqual(object_.props.string, 'mec')
+
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INVALID)
+        object_.props.gtype = int
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
 
-        with capture_exceptions() as exc:
-            # this does not directly raise an exception (see
-            # https://bugzilla.gnome.org/show_bug.cgi?id=616279)
-            result = Everything.test_closure_variant(callback, GLib.Variant('i', 42))
-        # ... but the result shouldn't be a string
-        self.assertEqual(result, None)
-        # and the error should be shown
-        self.assertEqual(len(exc), 1)
-        self.assertEqual(exc[0].type, TypeError)
-        self.assertTrue('return value' in str(exc[0].value), exc[0].value)
+    def test_hash_table(self):
+        object_ = Everything.TestObj()
+        self.assertEqual(object_.props.hash_table, None)
+
+        object_.props.hash_table = {'mec': 56}
+        self.assertTrue(isinstance(object_.props.hash_table, dict))
+        self.assertEqual(list(object_.props.hash_table.items())[0], ('mec', 56))
+
+    def test_list(self):
+        object_ = Everything.TestObj()
+        self.assertEqual(object_.props.list, [])
 
+        object_.props.list = ['1', '2', '3']
+        self.assertTrue(isinstance(object_.props.list, list))
+        self.assertEqual(object_.props.list, ['1', '2', '3'])
 
-class TestBoxed(unittest.TestCase):
     def test_boxed(self):
         object_ = Everything.TestObj()
         self.assertEqual(object_.props.boxed, None)
@@ -1086,42 +542,16 @@ class TestBoxed(unittest.TestCase):
         self.assertTrue(isinstance(object_.props.boxed, Everything.TestBoxed))
         self.assertEqual(object_.props.boxed.some_int8, 42)
 
-    def test_boxed_alternative_constructor(self):
-        boxed = Everything.TestBoxed.new_alternative_constructor1(5)
-        self.assertEqual(boxed.some_int8, 5)
-
-        boxed = Everything.TestBoxed.new_alternative_constructor2(5, 3)
-        self.assertEqual(boxed.some_int8, 8)
-
-        boxed = Everything.TestBoxed.new_alternative_constructor3("-3")
-        self.assertEqual(boxed.some_int8, -3)
-
-    def test_boxed_equality(self):
-        boxed42 = Everything.TestBoxed.new_alternative_constructor1(42)
-        boxed5 = Everything.TestBoxed.new_alternative_constructor1(5)
-        boxed42_2 = Everything.TestBoxed.new_alternative_constructor2(41, 1)
-
-        self.assertFalse(boxed42.equals(boxed5))
-        self.assertTrue(boxed42.equals(boxed42_2))
-        self.assertTrue(boxed42_2.equals(boxed42))
-        self.assertTrue(boxed42.equals(boxed42))
-
-    def test_boxed_b_constructor(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            boxed = Everything.TestBoxedB(42, 47)
-            self.assertTrue(issubclass(warn[0].category, TypeError))
-
-        self.assertEqual(boxed.some_int8, 0)
-        self.assertEqual(boxed.some_long, 0)
+    def test_gtype(self):
+        object_ = Everything.TestObj()
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INVALID)
+        object_.props.gtype = int
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
 
-    def test_boxed_c_equality(self):
-        boxed = Everything.TestBoxedC()
-        # TestBoxedC uses refcounting, so we know that
-        # the pointer is the same when copied
-        copy = boxed.copy()
-        self.assertEqual(boxed, copy)
-        self.assertNotEqual(id(boxed), id(copy))
+        object_ = Everything.TestObj(gtype=int)
+        self.assertEqual(object_.props.gtype, GObject.TYPE_INT)
+        object_.props.gtype = str
+        self.assertEqual(object_.props.gtype, GObject.TYPE_STRING)
 
 
 class TestTortureProfile(unittest.TestCase):
@@ -1171,7 +601,7 @@ class TestTortureProfile(unittest.TestCase):
         sys.stdout.write("\ttorture test 4 (10000 iterations): ")
 
         def callback(userdata):
-            return 0
+            pass
 
         userdata = [1, 2, 3, 4]
         start_time = time.clock()
@@ -1208,3 +638,15 @@ class TestAdvancedInterfaces(unittest.TestCase):
 
         ret = obj.skip_return_val_no_out(1)
         self.assertEqual(ret, None)
+
+
+class TestSignals(unittest.TestCase):
+    def test_object_param_signal(self):
+        obj = Everything.TestObj()
+
+        def callback(obj, obj_param):
+            self.assertEqual(obj_param.props.int, 3)
+            self.assertGreater(obj_param.__grefcount__, 1)
+
+        obj.connect('sig-with-obj', callback)
+        obj.emit_sig_with_obj()
diff --git a/tests/test_fields.py b/tests/test_fields.py
deleted file mode 100644 (file)
index ac09949..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# coding=utf-8
-
-import math
-import unittest
-
-from gi.repository import GLib
-from gi.repository import Regress
-from gi.repository import GIMarshallingTests
-
-
-class Number(object):
-
-    def __init__(self, value):
-        self.value = value
-
-    def __int__(self):
-        return int(self.value)
-
-    def __float__(self):
-        return float(self.value)
-
-
-class TestFields(unittest.TestCase):
-
-    def test_int8(self):
-        s = Regress.TestStructA()
-        s.some_int8 = 21
-        self.assertEqual(s.some_int8, 21)
-
-        s.some_int8 = b"\x42"
-        self.assertEqual(s.some_int8, 0x42)
-
-        self.assertRaises(TypeError, setattr, s, "some_int8", b"ab")
-        self.assertRaises(TypeError, setattr, s, "some_int8", None)
-        self.assertRaises(OverflowError, setattr, s, "some_int8", 128)
-        self.assertRaises(OverflowError, setattr, s, "some_int8", -129)
-
-        s.some_int8 = 3.6
-        self.assertEqual(s.some_int8, 3)
-
-        s.some_int8 = Number(55)
-        self.assertEqual(s.some_int8, 55)
-
-    def test_int(self):
-        s = Regress.TestStructA()
-        s.some_int = GLib.MAXINT
-        self.assertEqual(s.some_int, GLib.MAXINT)
-
-        self.assertRaises(TypeError, setattr, s, "some_int", b"a")
-        self.assertRaises(TypeError, setattr, s, "some_int", None)
-        self.assertRaises(
-            OverflowError, setattr, s, "some_int", GLib.MAXINT + 1)
-        self.assertRaises(
-            OverflowError, setattr, s, "some_int", GLib.MININT - 1)
-
-        s.some_int = 3.6
-        self.assertEqual(s.some_int, 3)
-
-        s.some_int = Number(GLib.MININT)
-        self.assertEqual(s.some_int, GLib.MININT)
-
-    def test_long(self):
-        s = GIMarshallingTests.SimpleStruct()
-        s.long_ = GLib.MAXLONG
-        self.assertEqual(s.long_, GLib.MAXLONG)
-
-        self.assertRaises(TypeError, setattr, s, "long_", b"a")
-        self.assertRaises(TypeError, setattr, s, "long_", None)
-        self.assertRaises(OverflowError, setattr, s, "long_", GLib.MAXLONG + 1)
-        self.assertRaises(OverflowError, setattr, s, "long_", GLib.MINLONG - 1)
-
-        s.long_ = 3.6
-        self.assertEqual(s.long_, 3)
-
-        s.long_ = Number(GLib.MINLONG)
-        self.assertEqual(s.long_, GLib.MINLONG)
-
-    def test_double(self):
-        s = Regress.TestStructA()
-        s.some_double = GLib.MAXDOUBLE
-        self.assertEqual(s.some_double, GLib.MAXDOUBLE)
-        s.some_double = GLib.MINDOUBLE
-        self.assertEqual(s.some_double, GLib.MINDOUBLE)
-
-        s.some_double = float("nan")
-        self.assertTrue(math.isnan(s.some_double))
-
-        self.assertRaises(TypeError, setattr, s, "some_double", b"a")
-        self.assertRaises(TypeError, setattr, s, "some_double", None)
-
-    def test_gtype(self):
-        s = Regress.TestStructE()
-
-        s.some_type = Regress.TestObj
-        self.assertEqual(s.some_type, Regress.TestObj.__gtype__)
-
-        self.assertRaises(TypeError, setattr, s, "some_type", 42)
-
-    def test_unichar(self):
-        # I can't find a unichar field..
-        pass
-
-    def test_utf8(self):
-        s = GIMarshallingTests.BoxedStruct()
-        s.string_ = "hello"
-        self.assertEqual(s.string_, "hello")
-
-        s.string_ = u"hello"
-        self.assertEqual(s.string_, u"hello")
-
-        s.string_ = None
-        self.assertEqual(s.string_, None)
-
-        self.assertRaises(TypeError, setattr, s, "string_", 42)
-
-    def test_array_of_structs(self):
-        s = Regress.TestStructD()
-        self.assertEqual(s.array1, [])
-        self.assertEqual(s.array2, [])
-
-    def test_interface(self):
-        s = Regress.TestStructC()
-
-        obj = Regress.TestObj()
-        s.obj = obj
-        self.assertTrue(s.obj is obj)
-
-        s.obj = None
-        self.assertTrue(s.obj is None)
-
-        self.assertRaises(TypeError, setattr, s, "obj", object())
-
-    def test_glist(self):
-        s = Regress.TestStructD()
-        self.assertEqual(s.list, [])
-
-        self.assertRaises(TypeError, setattr, s, "list", [object()])
-
-    def test_gpointer(self):
-        glist = GLib.List()
-
-        glist.data = 123
-        self.assertEqual(glist.data, 123)
-
-        glist.data = None
-        self.assertEqual(glist.data, 0)
-
-    def test_gptrarray(self):
-        s = Regress.TestStructD()
-        self.assertEqual(s.garray, [])
-
-        self.assertRaises(TypeError, setattr, s, "garray", [object()])
-
-    def test_enum(self):
-        s = Regress.TestStructA()
-
-        s.some_enum = Regress.TestEnum.VALUE3
-        self.assertEqual(s.some_enum, Regress.TestEnum.VALUE3)
-
-        self.assertRaises(TypeError, setattr, s, "some_enum", object())
-
-        s.some_enum = 0
-        self.assertEqual(s.some_enum, Regress.TestEnum.VALUE1)
-
-    def test_union(self):
-        s = Regress.TestStructE()
-        self.assertEqual(s.some_union, [None, None])
-
-    def test_struct(self):
-        s = GIMarshallingTests.NestedStruct()
-
-        # FIXME: segfaults
-        # https://bugzilla.gnome.org/show_bug.cgi?id=747002
-        # s.simple_struct = None
-
-        self.assertRaises(TypeError, setattr, s, "simple_struct", object())
-
-        sub = GIMarshallingTests.SimpleStruct()
-        sub.long_ = 42
-        s.simple_struct = sub
-        self.assertEqual(s.simple_struct.long_, 42)
-
-    def test_ghashtable(self):
-        obj = Regress.TestObj()
-        self.assertTrue(obj.hash_table is None)
index 5fb4f5d..afd18c7 100644 (file)
@@ -3,43 +3,35 @@
 
 import unittest
 
+import sys
+sys.path.insert(0, "../")
+
+from gi.repository import GObject
 from gi.repository import GLib
 from gi.repository import Gio
 
 
-try:
-    Gio.bus_get_sync(Gio.BusType.SESSION, None)
-except GLib.Error:
-    has_dbus = False
-else:
-    has_dbus = True
-
-
-@unittest.skipUnless(has_dbus, "no dbus running")
 class TestGDBusClient(unittest.TestCase):
     def setUp(self):
         self.bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
 
         self.dbus_proxy = Gio.DBusProxy.new_sync(self.bus,
-                                                 Gio.DBusProxyFlags.NONE,
-                                                 None,
-                                                 'org.freedesktop.DBus',
-                                                 '/org/freedesktop/DBus',
-                                                 'org.freedesktop.DBus',
-                                                 None)
+                Gio.DBusProxyFlags.NONE, None,
+                'org.freedesktop.DBus',
+                '/org/freedesktop/DBus',
+                'org.freedesktop.DBus', None)
 
     def test_native_calls_sync(self):
         result = self.dbus_proxy.call_sync('ListNames', None,
-                                           Gio.DBusCallFlags.NO_AUTO_START,
-                                           500, None)
+                Gio.DBusCallFlags.NO_AUTO_START, 500, None)
         self.assertTrue(isinstance(result, GLib.Variant))
         result = result.unpack()[0]  # result is always a tuple
         self.assertTrue(len(result) > 1)
         self.assertTrue('org.freedesktop.DBus' in result)
 
         result = self.dbus_proxy.call_sync('GetNameOwner',
-                                           GLib.Variant('(s)', ('org.freedesktop.DBus',)),
-                                           Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                GLib.Variant('(s)', ('org.freedesktop.DBus',)),
+                Gio.DBusCallFlags.NO_AUTO_START, 500, None)
         self.assertTrue(isinstance(result, GLib.Variant))
         self.assertEqual(type(result.unpack()[0]), type(''))
 
@@ -47,7 +39,7 @@ class TestGDBusClient(unittest.TestCase):
         # error case: invalid argument types
         try:
             self.dbus_proxy.call_sync('GetConnectionUnixProcessID', None,
-                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call with invalid arguments should raise an exception')
         except Exception as e:
             self.assertTrue('InvalidArgs' in str(e))
@@ -55,8 +47,8 @@ class TestGDBusClient(unittest.TestCase):
         # error case: invalid argument
         try:
             self.dbus_proxy.call_sync('GetConnectionUnixProcessID',
-                                      GLib.Variant('(s)', (' unknown',)),
-                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                    GLib.Variant('(s)', (' unknown',)),
+                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call with invalid arguments should raise an exception')
         except Exception as e:
             self.assertTrue('NameHasNoOwner' in str(e))
@@ -64,7 +56,7 @@ class TestGDBusClient(unittest.TestCase):
         # error case: unknown method
         try:
             self.dbus_proxy.call_sync('UnknownMethod', None,
-                                      Gio.DBusCallFlags.NO_AUTO_START, 500, None)
+                    Gio.DBusCallFlags.NO_AUTO_START, 500, None)
             self.fail('call for unknown method should raise an exception')
         except Exception as e:
             self.assertTrue('UnknownMethod' in str(e))
@@ -76,11 +68,11 @@ class TestGDBusClient(unittest.TestCase):
             finally:
                 user_data['main_loop'].quit()
 
-        main_loop = GLib.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.call('ListNames', None,
-                             Gio.DBusCallFlags.NO_AUTO_START, 500, None,
-                             call_done, data)
+                Gio.DBusCallFlags.NO_AUTO_START, 500, None,
+                call_done, data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['result'], GLib.Variant))
@@ -98,11 +90,10 @@ class TestGDBusClient(unittest.TestCase):
             finally:
                 user_data['main_loop'].quit()
 
-        main_loop = GLib.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.call('UnknownMethod', None,
-                             Gio.DBusCallFlags.NO_AUTO_START, 500, None,
-                             call_done, data)
+                Gio.DBusCallFlags.NO_AUTO_START, 500, None, call_done, data)
         main_loop.run()
 
     def test_python_calls_sync(self):
@@ -122,13 +113,12 @@ class TestGDBusClient(unittest.TestCase):
         # does not have any method returning multiple results, so try talking
         # to notification-daemon (and don't fail the test if it does not exist)
         try:
-            nd = Gio.DBusProxy.new_sync(self.bus,
-                                        Gio.DBusProxyFlags.NONE, None,
-                                        'org.freedesktop.Notifications',
-                                        '/org/freedesktop/Notifications',
-                                        'org.freedesktop.Notifications',
-                                        None)
-            result = nd.GetServerInformation('()')
+            notification_daemon = Gio.DBusProxy.new_sync(self.bus,
+                    Gio.DBusProxyFlags.NONE, None,
+                    'org.freedesktop.Notifications',
+                    '/org/freedesktop/Notifications',
+                    'org.freedesktop.Notifications', None)
+            result = notification_daemon.GetServerInformation('()')
             self.assertTrue(isinstance(result, tuple))
             self.assertEqual(len(result), 4)
             for i in result:
@@ -142,9 +132,7 @@ class TestGDBusClient(unittest.TestCase):
             self.dbus_proxy.GetConnectionUnixProcessID('(s)', '1', timeout=0)
             self.fail('call with timeout=0 should raise an exception')
         except Exception as e:
-            # FIXME: this is not very precise, but in some environments we
-            # do not always get an actual timeout
-            self.assertTrue(isinstance(e, GLib.GError), str(e))
+            self.assertTrue('Timeout' in str(e), str(e))
 
     def test_python_calls_sync_noargs(self):
         # methods without arguments don't need an explicit signature
@@ -172,9 +160,10 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = GLib.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
-        self.dbus_proxy.ListNames('()', result_handler=call_done, user_data=data)
+        self.dbus_proxy.ListNames('()', result_handler=call_done,
+                user_data=data)
         main_loop.run()
 
         result = data['result']
@@ -188,10 +177,10 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = GLib.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
-                                  result_handler=call_done, user_data=data)
+                result_handler=call_done, user_data=data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['result'], Exception))
@@ -207,12 +196,11 @@ class TestGDBusClient(unittest.TestCase):
             user_data['error'] = error
             user_data['main_loop'].quit()
 
-        main_loop = GLib.MainLoop()
+        main_loop = GObject.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
-                                  result_handler=call_done,
-                                  error_handler=call_error,
-                                  user_data=data)
+                result_handler=call_done, error_handler=call_error,
+                user_data=data)
         main_loop.run()
 
         self.assertTrue(isinstance(data['error'], Exception))
diff --git a/tests/test_generictreemodel.py b/tests/test_generictreemodel.py
deleted file mode 100644 (file)
index 30ae125..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# test_generictreemodel - Tests for GenericTreeModel
-# Copyright (C) 2013 Simon Feltman
-#
-#   test_generictreemodel.py: Tests for GenericTreeModel
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, see <http://www.gnu.org/licenses/>.
-
-
-# system
-import gc
-import sys
-import weakref
-import unittest
-
-# pygobject
-from gi.repository import GObject
-
-try:
-    from gi.repository import Gtk
-    from pygtkcompat.generictreemodel import GenericTreeModel
-    from pygtkcompat.generictreemodel import _get_user_data_as_pyobject
-    has_gtk = True
-except ImportError:
-    GenericTreeModel = object
-    has_gtk = False
-
-
-class Node(object):
-    """Represents a generic node with name, value, and children."""
-    def __init__(self, name, value, *children):
-        self.name = name
-        self.value = value
-        self.children = list(children)
-        self.parent = None
-        self.next = None
-
-        for i, child in enumerate(children):
-            child.parent = weakref.ref(self)
-            if i < len(children) - 1:
-                child.next = weakref.ref(children[i + 1])
-
-    def __repr__(self):
-        return 'Node("%s", %s)' % (self.name, self.value)
-
-
-class TesterModel(GenericTreeModel):
-    def __init__(self):
-        super(TesterModel, self).__init__()
-        self.root = Node('root', 0,
-                         Node('spam', 1,
-                              Node('sushi', 2),
-                              Node('bread', 3)
-                         ),
-                         Node('eggs', 4)
-                        )
-
-    def on_get_flags(self):
-        return 0
-
-    def on_get_n_columns(self):
-        return 2
-
-    def on_get_column_type(self, n):
-        return (str, int)[n]
-
-    def on_get_iter(self, path):
-        node = self.root
-        path = list(path)
-        idx = path.pop(0)
-        while path:
-            idx = path.pop(0)
-            node = node.children[idx]
-        return node
-
-    def on_get_path(self, node):
-        def rec_get_path(n):
-            for i, child in enumerate(n.children):
-                if child == node:
-                    return [i]
-                else:
-                    res = rec_get_path(child)
-                    if res:
-                        res.insert(0, i)
-
-        return rec_get_path(self.root)
-
-    def on_get_value(self, node, column):
-        if column == 0:
-            return node.name
-        elif column == 1:
-            return node.value
-
-    def on_iter_has_child(self, node):
-        return bool(node.children)
-
-    def on_iter_next(self, node):
-        if node.next:
-            return node.next()
-
-    def on_iter_children(self, node):
-        if node:
-            return node.children[0]
-        else:
-            return self.root
-
-    def on_iter_n_children(self, node):
-        if node is None:
-            return 1
-        return len(node.children)
-
-    def on_iter_nth_child(self, node, n):
-        if node is None:
-            assert n == 0
-            return self.root
-        return node.children[n]
-
-    def on_iter_parent(self, child):
-        if child.parent:
-            return child.parent()
-
-
-@unittest.skipUnless(has_gtk, 'Gtk not available')
-class TestReferences(unittest.TestCase):
-    def setUp(self):
-        pass
-
-    def test_c_tree_iter_user_data_as_pyobject(self):
-        obj = object()
-        obj_id = id(obj)
-        ref_count = sys.getrefcount(obj)
-
-        # This is essentially a stolen ref in the context of _CTreeIter.get_user_data_as_pyobject
-        it = Gtk.TreeIter()
-        it.user_data = obj_id
-
-        obj2 = _get_user_data_as_pyobject(it)
-        self.assertEqual(obj, obj2)
-        self.assertEqual(sys.getrefcount(obj), ref_count + 1)
-
-    def test_leak_references_on(self):
-        model = TesterModel()
-        obj_ref = weakref.ref(model.root)
-        # Initial refcount is 1 for model.root + the temporary
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Iter increases by 1 do to assignment to iter.user_data
-        res, it = model.do_get_iter([0])
-        self.assertEqual(id(model.root), it.user_data)
-        self.assertEqual(sys.getrefcount(model.root), 3)
-
-        # Verify getting a TreeIter more then once does not further increase
-        # the ref count.
-        res2, it2 = model.do_get_iter([0])
-        self.assertEqual(id(model.root), it2.user_data)
-        self.assertEqual(sys.getrefcount(model.root), 3)
-
-        # Deleting the iter does not decrease refcount because references
-        # leak by default (they are stored in the held_refs pool)
-        del it
-        gc.collect()
-        self.assertEqual(sys.getrefcount(model.root), 3)
-
-        # Deleting a model should free all held references to user data
-        # stored by TreeIters
-        del model
-        gc.collect()
-        self.assertEqual(obj_ref(), None)
-
-    def test_row_deleted_frees_refs(self):
-        model = TesterModel()
-        obj_ref = weakref.ref(model.root)
-        # Initial refcount is 1 for model.root + the temporary
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Iter increases by 1 do to assignment to iter.user_data
-        res, it = model.do_get_iter([0])
-        self.assertEqual(id(model.root), it.user_data)
-        self.assertEqual(sys.getrefcount(model.root), 3)
-
-        # Notifying the underlying model of a row_deleted should decrease the
-        # ref count.
-        model.row_deleted(Gtk.TreePath('0'), model.root)
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Finally deleting the actual object should collect it completely
-        del model.root
-        gc.collect()
-        self.assertEqual(obj_ref(), None)
-
-    def test_leak_references_off(self):
-        model = TesterModel()
-        model.leak_references = False
-
-        obj_ref = weakref.ref(model.root)
-        # Initial refcount is 1 for model.root + the temporary
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Iter does not increas count by 1 when leak_references is false
-        res, it = model.do_get_iter([0])
-        self.assertEqual(id(model.root), it.user_data)
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Deleting the iter does not decrease refcount because assigning user_data
-        # eats references and does not release them.
-        del it
-        gc.collect()
-        self.assertEqual(sys.getrefcount(model.root), 2)
-
-        # Deleting the model decreases the final ref, and the object is collected
-        del model
-        gc.collect()
-        self.assertEqual(obj_ref(), None)
-
-    def test_iteration_refs(self):
-        # Pull iterators off the model using the wrapped C API which will
-        # then call back into the python overrides.
-        model = TesterModel()
-        nodes = [node for node in model.iter_depth_first()]
-        values = [node.value for node in nodes]
-
-        # Verify depth first ordering
-        self.assertEqual(values, [0, 1, 2, 3, 4])
-
-        # Verify ref counts for each of the nodes.
-        # 5 refs for each node at this point:
-        #   1 - ref held in getrefcount function
-        #   2 - ref held by "node" var during iteration
-        #   3 - ref held by local "nodes" var
-        #   4 - ref held by the root/children graph itself
-        #   5 - ref held by the model "held_refs" instance var
-        for node in nodes:
-            self.assertEqual(sys.getrefcount(node), 5)
-
-        # A second iteration and storage of the nodes in a new list
-        # should only increase refcounts by 1 even though new
-        # iterators are created and assigned.
-        nodes2 = [node for node in model.iter_depth_first()]
-        for node in nodes2:
-            self.assertEqual(sys.getrefcount(node), 6)
-
-        # Hold weak refs and start verifying ref collection.
-        node_refs = [weakref.ref(node) for node in nodes]
-
-        # First round of collection
-        del nodes2
-        gc.collect()
-        for node in nodes:
-            self.assertEqual(sys.getrefcount(node), 5)
-
-        # Second round of collection, no more local lists of nodes.
-        del nodes
-        gc.collect()
-        for ref in node_refs:
-            node = ref()
-            self.assertEqual(sys.getrefcount(node), 4)
-
-        # Using invalidate_iters or row_deleted(path, node) will clear out
-        # the pooled refs held internal to the GenericTreeModel implementation.
-        model.invalidate_iters()
-        self.assertEqual(len(model._held_refs), 0)
-        gc.collect()
-        for ref in node_refs:
-            node = ref()
-            self.assertEqual(sys.getrefcount(node), 3)
-
-        # Deleting the root node at this point should allow all nodes to be collected
-        # as there is no longer a way to reach the children
-        del node  # node still in locals() from last iteration
-        del model.root
-        gc.collect()
-        for ref in node_refs:
-            self.assertEqual(ref(), None)
-
-
-@unittest.skipUnless(has_gtk, 'Gtk not available')
-class TestIteration(unittest.TestCase):
-    def test_iter_next_root(self):
-        model = TesterModel()
-        it = model.get_iter([0])
-        self.assertEqual(it.user_data, id(model.root))
-        self.assertEqual(model.root.next, None)
-
-        it = model.iter_next(it)
-        self.assertEqual(it, None)
-
-    def test_iter_next_multiple(self):
-        model = TesterModel()
-        it = model.get_iter([0, 0])
-        self.assertEqual(it.user_data, id(model.root.children[0]))
-
-        it = model.iter_next(it)
-        self.assertEqual(it.user_data, id(model.root.children[1]))
-
-        it = model.iter_next(it)
-        self.assertEqual(it, None)
-
-
-class ErrorModel(GenericTreeModel):
-    # All on_* methods will raise a NotImplementedError by default
-    pass
-
-
-@unittest.skipUnless(has_gtk, 'Gtk not available')
-class ExceptHook(object):
-    """
-    Temporarily installs an exception hook in a context which
-    expects the given exc_type to be raised. This allows verification
-    of exceptions that occur within python gi callbacks but
-    are never bubbled through from python to C back to python.
-    This works because exception hooks are called in PyErr_Print.
-    """
-    def __init__(self, *expected_exc_types):
-        self._expected_exc_types = expected_exc_types
-        self._exceptions = []
-
-    def _excepthook(self, exc_type, value, traceback):
-        self._exceptions.append((exc_type, value))
-
-    def __enter__(self):
-        self._oldhook = sys.excepthook
-        sys.excepthook = self._excepthook
-        return self
-
-    def __exit__(self, exc_type, exc_val, exc_tb):
-        sys.excepthook = self._oldhook
-        error_message = 'Expecting the following exceptions: %s, got: %s' % \
-            (str(self._expected_exc_types), '\n'.join([str(item) for item in self._exceptions]))
-
-        assert len(self._expected_exc_types) == len(self._exceptions), error_message
-
-        for expected, got in zip(self._expected_exc_types, [exc[0] for exc in self._exceptions]):
-            assert issubclass(got, expected), error_message
-
-
-@unittest.skipUnless(has_gtk, 'Gtk not available')
-class TestReturnsAfterError(unittest.TestCase):
-    def setUp(self):
-        self.model = ErrorModel()
-
-    def test_get_flags(self):
-        with ExceptHook(NotImplementedError):
-            flags = self.model.get_flags()
-        self.assertEqual(flags, 0)
-
-    def test_get_n_columns(self):
-        with ExceptHook(NotImplementedError):
-            count = self.model.get_n_columns()
-        self.assertEqual(count, 0)
-
-    def test_get_column_type(self):
-        with ExceptHook(NotImplementedError, TypeError):
-            col_type = self.model.get_column_type(0)
-        self.assertEqual(col_type, GObject.TYPE_INVALID)
-
-    def test_get_iter(self):
-        with ExceptHook(NotImplementedError):
-            self.assertRaises(ValueError, self.model.get_iter, Gtk.TreePath(0))
-
-    def test_get_path(self):
-        it = self.model.create_tree_iter('foo')
-        with ExceptHook(NotImplementedError):
-            path = self.model.get_path(it)
-        self.assertEqual(path, None)
-
-    def test_get_value(self):
-        it = self.model.create_tree_iter('foo')
-        with ExceptHook(NotImplementedError):
-            try:
-                self.model.get_value(it, 0)
-            except TypeError:
-                pass  # silence TypeError converting None to GValue
-
-    def test_iter_has_child(self):
-        it = self.model.create_tree_iter('foo')
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_has_child(it)
-        self.assertEqual(res, False)
-
-    def test_iter_next(self):
-        it = self.model.create_tree_iter('foo')
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_next(it)
-        self.assertEqual(res, None)
-
-    def test_iter_children(self):
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_children(None)
-        self.assertEqual(res, None)
-
-    def test_iter_n_children(self):
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_n_children(None)
-        self.assertEqual(res, 0)
-
-    def test_iter_nth_child(self):
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_nth_child(None, 0)
-        self.assertEqual(res, None)
-
-    def test_iter_parent(self):
-        child = self.model.create_tree_iter('foo')
-        with ExceptHook(NotImplementedError):
-            res = self.model.iter_parent(child)
-        self.assertEqual(res, None)
-
-
-if __name__ == '__main__':
-    unittest.main()
index 173744a..2b5b5a1 100644 (file)
@@ -10,24 +10,21 @@ import shutil
 import os
 import locale
 import subprocess
-import gc
-import weakref
-import warnings
-from io import StringIO, BytesIO
-
-import gi
-import gi.overrides
-from gi import PyGIWarning
-from gi import PyGIDeprecationWarning
-from gi.repository import GObject, GLib, Gio
+from gi.repository import GObject, GLib
 
 from gi.repository import GIMarshallingTests
 
-from compathelper import PY2, PY3
-from helper import capture_exceptions
+from compathelper import _bytes
 
+if sys.version_info < (3, 0):
+    CONSTANT_UTF8 = "const \xe2\x99\xa5 utf8"
+    PY2_UNICODE_UTF8 = unicode(CONSTANT_UTF8, 'UTF-8')
+    CHAR_255 = '\xff'
+else:
+    CONSTANT_UTF8 = "const â™¥ utf8"
+    CHAR_255 = bytes([255])
 
-CONSTANT_UTF8 = "const â™¥ utf8"
+CONSTANT_NUMBER = 42
 
 
 class Number(object):
@@ -56,20 +53,12 @@ class Sequence(object):
 
 class TestConstant(unittest.TestCase):
 
-    def test_constant_utf8(self):
-        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.CONSTANT_UTF8)
+# Blocked by https://bugzilla.gnome.org/show_bug.cgi?id=595773
+#    def test_constant_utf8(self):
+#        self.assertEqual(CONSTANT_UTF8, GIMarshallingTests.CONSTANT_UTF8)
 
     def test_constant_number(self):
-        self.assertEqual(42, GIMarshallingTests.CONSTANT_NUMBER)
-
-    def test_min_max_int(self):
-        self.assertEqual(GLib.MAXINT32, 2 ** 31 - 1)
-        self.assertEqual(GLib.MININT32, -2 ** 31)
-        self.assertEqual(GLib.MAXUINT32, 2 ** 32 - 1)
-
-        self.assertEqual(GLib.MAXINT64, 2 ** 63 - 1)
-        self.assertEqual(GLib.MININT64, -2 ** 63)
-        self.assertEqual(GLib.MAXUINT64, 2 ** 64 - 1)
+        self.assertEqual(CONSTANT_NUMBER, GIMarshallingTests.CONSTANT_NUMBER)
 
 
 class TestBoolean(unittest.TestCase):
@@ -96,8 +85,8 @@ class TestBoolean(unittest.TestCase):
 
 class TestInt8(unittest.TestCase):
 
-    MAX = GLib.MAXINT8
-    MIN = GLib.MININT8
+    MAX = GObject.G_MAXINT8
+    MIN = GObject.G_MININT8
 
     def test_int8_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.int8_return_max())
@@ -113,8 +102,8 @@ class TestInt8(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.int8_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.int8_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.int8_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.int8_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.int8_in_max, "self.MAX")
 
@@ -129,7 +118,7 @@ class TestInt8(unittest.TestCase):
 
 class TestUInt8(unittest.TestCase):
 
-    MAX = GLib.MAXUINT8
+    MAX = GObject.G_MAXUINT8
 
     def test_uint8_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.uint8_return())
@@ -138,11 +127,11 @@ class TestUInt8(unittest.TestCase):
         number = Number(self.MAX)
 
         GIMarshallingTests.uint8_in(number)
-        GIMarshallingTests.uint8_in(b'\xff')
+        GIMarshallingTests.uint8_in(CHAR_255)
 
         number.value += 1
-        self.assertRaises(OverflowError, GIMarshallingTests.uint8_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.uint8_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.uint8_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.uint8_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.uint8_in, "self.MAX")
 
@@ -155,8 +144,8 @@ class TestUInt8(unittest.TestCase):
 
 class TestInt16(unittest.TestCase):
 
-    MAX = GLib.MAXINT16
-    MIN = GLib.MININT16
+    MAX = GObject.G_MAXINT16
+    MIN = GObject.G_MININT16
 
     def test_int16_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.int16_return_max())
@@ -172,8 +161,8 @@ class TestInt16(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.int16_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.int16_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.int16_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.int16_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.int16_in_max, "self.MAX")
 
@@ -188,7 +177,7 @@ class TestInt16(unittest.TestCase):
 
 class TestUInt16(unittest.TestCase):
 
-    MAX = GLib.MAXUINT16
+    MAX = GObject.G_MAXUINT16
 
     def test_uint16_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.uint16_return())
@@ -200,8 +189,8 @@ class TestUInt16(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.uint16_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.uint16_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.uint16_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.uint16_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.uint16_in, "self.MAX")
 
@@ -214,8 +203,8 @@ class TestUInt16(unittest.TestCase):
 
 class TestInt32(unittest.TestCase):
 
-    MAX = GLib.MAXINT32
-    MIN = GLib.MININT32
+    MAX = GObject.G_MAXINT32
+    MIN = GObject.G_MININT32
 
     def test_int32_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.int32_return_max())
@@ -231,8 +220,8 @@ class TestInt32(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.int32_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.int32_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.int32_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.int32_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.int32_in_max, "self.MAX")
 
@@ -247,7 +236,7 @@ class TestInt32(unittest.TestCase):
 
 class TestUInt32(unittest.TestCase):
 
-    MAX = GLib.MAXUINT32
+    MAX = GObject.G_MAXUINT32
 
     def test_uint32_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.uint32_return())
@@ -259,8 +248,8 @@ class TestUInt32(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.uint32_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.uint32_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.uint32_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.uint32_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.uint32_in, "self.MAX")
 
@@ -290,8 +279,8 @@ class TestInt64(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.int64_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.int64_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.int64_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.int64_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.int64_in_max, "self.MAX")
 
@@ -318,8 +307,8 @@ class TestUInt64(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.uint64_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.uint64_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.uint64_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.uint64_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.uint64_in, "self.MAX")
 
@@ -332,8 +321,8 @@ class TestUInt64(unittest.TestCase):
 
 class TestShort(unittest.TestCase):
 
-    MAX = GLib.MAXSHORT
-    MIN = GLib.MINSHORT
+    MAX = GObject.constants.G_MAXSHORT
+    MIN = GObject.constants.G_MINSHORT
 
     def test_short_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.short_return_max())
@@ -349,8 +338,8 @@ class TestShort(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.short_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.short_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.short_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.short_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.short_in_max, "self.MAX")
 
@@ -365,7 +354,7 @@ class TestShort(unittest.TestCase):
 
 class TestUShort(unittest.TestCase):
 
-    MAX = GLib.MAXUSHORT
+    MAX = GObject.constants.G_MAXUSHORT
 
     def test_ushort_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ushort_return())
@@ -377,8 +366,8 @@ class TestUShort(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.ushort_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.ushort_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.ushort_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.ushort_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.ushort_in, "self.MAX")
 
@@ -391,8 +380,8 @@ class TestUShort(unittest.TestCase):
 
 class TestInt(unittest.TestCase):
 
-    MAX = GLib.MAXINT
-    MIN = GLib.MININT
+    MAX = GObject.constants.G_MAXINT
+    MIN = GObject.constants.G_MININT
 
     def test_int_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.int_return_max())
@@ -408,8 +397,8 @@ class TestInt(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.int_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.int_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.int_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.int_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.int_in_max, "self.MAX")
 
@@ -420,12 +409,12 @@ class TestInt(unittest.TestCase):
     def test_int_inout(self):
         self.assertEqual(self.MIN, GIMarshallingTests.int_inout_max_min(Number(self.MAX)))
         self.assertEqual(self.MAX, GIMarshallingTests.int_inout_min_max(Number(self.MIN)))
-        self.assertRaises(TypeError, GIMarshallingTests.int_inout_min_max, Number(self.MIN), 42)
+        self.assertRaises(TypeError, GIMarshallingTests.int_inout_min_max, Number(self.MIN), CONSTANT_NUMBER)
 
 
 class TestUInt(unittest.TestCase):
 
-    MAX = GLib.MAXUINT
+    MAX = GObject.constants.G_MAXUINT
 
     def test_uint_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.uint_return())
@@ -437,8 +426,8 @@ class TestUInt(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.uint_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.uint_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.uint_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.uint_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.uint_in, "self.MAX")
 
@@ -451,8 +440,8 @@ class TestUInt(unittest.TestCase):
 
 class TestLong(unittest.TestCase):
 
-    MAX = GLib.MAXLONG
-    MIN = GLib.MINLONG
+    MAX = GObject.constants.G_MAXLONG
+    MIN = GObject.constants.G_MINLONG
 
     def test_long_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.long_return_max())
@@ -468,8 +457,8 @@ class TestLong(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.long_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.long_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.long_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.long_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.long_in_max, "self.MAX")
 
@@ -484,7 +473,7 @@ class TestLong(unittest.TestCase):
 
 class TestULong(unittest.TestCase):
 
-    MAX = GLib.MAXULONG
+    MAX = GObject.constants.G_MAXULONG
 
     def test_ulong_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ulong_return())
@@ -496,8 +485,8 @@ class TestULong(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.ulong_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.ulong_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.ulong_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.ulong_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.ulong_in, "self.MAX")
 
@@ -510,8 +499,8 @@ class TestULong(unittest.TestCase):
 
 class TestSSize(unittest.TestCase):
 
-    MAX = GLib.MAXSSIZE
-    MIN = GLib.MINSSIZE
+    MAX = GObject.constants.G_MAXLONG
+    MIN = GObject.constants.G_MINLONG
 
     def test_ssize_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ssize_return_max())
@@ -527,8 +516,8 @@ class TestSSize(unittest.TestCase):
         max.value += 1
         min.value -= 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.ssize_in_max, max)
-        self.assertRaises(OverflowError, GIMarshallingTests.ssize_in_min, min)
+        self.assertRaises(ValueError, GIMarshallingTests.ssize_in_max, max)
+        self.assertRaises(ValueError, GIMarshallingTests.ssize_in_min, min)
 
         self.assertRaises(TypeError, GIMarshallingTests.ssize_in_max, "self.MAX")
 
@@ -543,7 +532,7 @@ class TestSSize(unittest.TestCase):
 
 class TestSize(unittest.TestCase):
 
-    MAX = GLib.MAXSIZE
+    MAX = GObject.constants.G_MAXULONG
 
     def test_size_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.size_return())
@@ -555,8 +544,8 @@ class TestSize(unittest.TestCase):
 
         number.value += 1
 
-        self.assertRaises(OverflowError, GIMarshallingTests.size_in, number)
-        self.assertRaises(OverflowError, GIMarshallingTests.size_in, Number(-1))
+        self.assertRaises(ValueError, GIMarshallingTests.size_in, number)
+        self.assertRaises(ValueError, GIMarshallingTests.size_in, Number(-1))
 
         self.assertRaises(TypeError, GIMarshallingTests.size_in, "self.MAX")
 
@@ -567,29 +556,13 @@ class TestSize(unittest.TestCase):
         self.assertEqual(0, GIMarshallingTests.size_inout(Number(self.MAX)))
 
 
-class TestTimet(unittest.TestCase):
-
-    def test_time_t_return(self):
-        self.assertEqual(1234567890, GIMarshallingTests.time_t_return())
-
-    def test_time_t_in(self):
-        GIMarshallingTests.time_t_in(1234567890)
-        self.assertRaises(TypeError, GIMarshallingTests.time_t_in, "hello")
-
-    def test_time_t_out(self):
-        self.assertEqual(1234567890, GIMarshallingTests.time_t_out())
-
-    def test_time_t_inout(self):
-        self.assertEqual(0, GIMarshallingTests.time_t_inout(1234567890))
-
-
 class TestFloat(unittest.TestCase):
 
-    MAX = GLib.MAXFLOAT
-    MIN = GLib.MINFLOAT
+    MAX = GObject.constants.G_MAXFLOAT
+    MIN = GObject.constants.G_MINFLOAT
 
     def test_float_return(self):
-        self.assertAlmostEqual(self.MAX, GIMarshallingTests.float_return())
+        self.assertAlmostEquals(self.MAX, GIMarshallingTests.float_return())
 
     def test_float_in(self):
         GIMarshallingTests.float_in(Number(self.MAX))
@@ -597,19 +570,19 @@ class TestFloat(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.float_in, "self.MAX")
 
     def test_float_out(self):
-        self.assertAlmostEqual(self.MAX, GIMarshallingTests.float_out())
+        self.assertAlmostEquals(self.MAX, GIMarshallingTests.float_out())
 
     def test_float_inout(self):
-        self.assertAlmostEqual(self.MIN, GIMarshallingTests.float_inout(Number(self.MAX)))
+        self.assertAlmostEquals(self.MIN, GIMarshallingTests.float_inout(Number(self.MAX)))
 
 
 class TestDouble(unittest.TestCase):
 
-    MAX = GLib.MAXDOUBLE
-    MIN = GLib.MINDOUBLE
+    MAX = GObject.constants.G_MAXDOUBLE
+    MIN = GObject.constants.G_MINDOUBLE
 
     def test_double_return(self):
-        self.assertAlmostEqual(self.MAX, GIMarshallingTests.double_return())
+        self.assertAlmostEquals(self.MAX, GIMarshallingTests.double_return())
 
     def test_double_in(self):
         GIMarshallingTests.double_in(Number(self.MAX))
@@ -617,10 +590,10 @@ class TestDouble(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.double_in, "self.MAX")
 
     def test_double_out(self):
-        self.assertAlmostEqual(self.MAX, GIMarshallingTests.double_out())
+        self.assertAlmostEquals(self.MAX, GIMarshallingTests.double_out())
 
     def test_double_inout(self):
-        self.assertAlmostEqual(self.MIN, GIMarshallingTests.double_inout(Number(self.MAX)))
+        self.assertAlmostEquals(self.MIN, GIMarshallingTests.double_inout(Number(self.MAX)))
 
 
 class TestGType(unittest.TestCase):
@@ -664,9 +637,9 @@ class TestUtf8(unittest.TestCase):
     def test_utf8_none_in(self):
         GIMarshallingTests.utf8_none_in(CONSTANT_UTF8)
         if sys.version_info < (3, 0):
-            GIMarshallingTests.utf8_none_in(CONSTANT_UTF8.decode("utf-8"))
+            GIMarshallingTests.utf8_none_in(PY2_UNICODE_UTF8)
 
-        self.assertRaises(TypeError, GIMarshallingTests.utf8_none_in, 42)
+        self.assertRaises(TypeError, GIMarshallingTests.utf8_none_in, CONSTANT_NUMBER)
         self.assertRaises(TypeError, GIMarshallingTests.utf8_none_in, None)
 
     def test_utf8_none_out(self):
@@ -685,185 +658,6 @@ class TestUtf8(unittest.TestCase):
         self.assertEqual("", GIMarshallingTests.utf8_full_inout(CONSTANT_UTF8))
 
 
-class TestFilename(unittest.TestCase):
-    def setUp(self):
-        self.workdir = tempfile.mkdtemp()
-
-    def tearDown(self):
-        shutil.rmtree(self.workdir)
-
-    def test_filename_in(self):
-        fname = os.path.join(self.workdir, u'testäø.txt')
-        self.assertRaises(GLib.GError, GLib.file_get_contents, fname)
-
-        with open(fname.encode('UTF-8'), 'wb') as f:
-            f.write(b'hello world!\n\x01\x02')
-
-        (result, contents) = GLib.file_get_contents(fname)
-        self.assertEqual(result, True)
-        self.assertEqual(contents, b'hello world!\n\x01\x02')
-
-    def test_filename_in_nullable(self):
-        self.assertTrue(GIMarshallingTests.filename_copy(None) is None)
-        self.assertRaises(TypeError, GIMarshallingTests.filename_exists, None)
-
-    @unittest.skipIf(os.name == "nt", "fixme")
-    def test_filename_out(self):
-        self.assertRaises(GLib.GError, GLib.Dir.make_tmp, 'test')
-
-        dirname = GLib.Dir.make_tmp('testäø.XXXXXX')
-        self.assertTrue(os.path.sep + 'testäø.' in dirname, dirname)
-        self.assertTrue(os.path.isdir(dirname))
-        os.rmdir(dirname)
-
-    def test_wrong_types(self):
-        self.assertRaises(TypeError, GIMarshallingTests.filename_copy, 23)
-        self.assertRaises(TypeError, GIMarshallingTests.filename_copy, [])
-
-    def test_null(self):
-        self.assertTrue(GIMarshallingTests.filename_copy(None) is None)
-        self.assertRaises(TypeError, GIMarshallingTests.filename_exists, None)
-
-    def test_round_trip(self):
-        self.assertEqual(GIMarshallingTests.filename_copy(u"foo"), "foo")
-        self.assertEqual(GIMarshallingTests.filename_copy(b"foo"), "foo")
-
-    def test_contains_null(self):
-        self.assertRaises(
-            (ValueError, TypeError),
-            GIMarshallingTests.filename_copy, b"foo\x00")
-        self.assertRaises(
-            (ValueError, TypeError),
-            GIMarshallingTests.filename_copy, u"foo\x00")
-
-    def test_as_is_py2(self):
-        if not PY2:
-            return
-
-        values = [
-            b"foo",
-            b"\xff\xff",
-            b"\xc3\xb6\xc3\xa4\xc3\xbc",
-            b"\xed\xa0\xbd",
-            b"\xf0\x90\x80\x81",
-        ]
-
-        for v in values:
-            self.assertEqual(GIMarshallingTests.filename_copy(v), v)
-            self.assertEqual(GIMarshallingTests.filename_to_glib_repr(v), v)
-
-    def test_win32_surrogates(self):
-        if os.name != "nt":
-            return
-
-        copy = GIMarshallingTests.filename_copy
-        glib_repr = GIMarshallingTests.filename_to_glib_repr
-
-        if PY3:
-            self.assertEqual(copy(u"\ud83d"), u"\ud83d")
-            self.assertEqual(copy(u"\x61\uDC00"), u"\x61\uDC00")
-            self.assertEqual(copy(u"\uD800\uDC01"), u"\U00010001")
-            self.assertEqual(copy(u"\uD83D\x20\uDCA9"), u"\uD83D\x20\uDCA9")
-        else:
-            self.assertEqual(copy(u"\ud83d"), u"\ud83d".encode("utf-8"))
-            self.assertEqual(copy(u"\uD800\uDC01").decode("utf-8"),
-                             u"\U00010001")
-
-        self.assertEqual(glib_repr(u"\ud83d"), b"\xed\xa0\xbd")
-        self.assertEqual(glib_repr(u"\uD800\uDC01"), b"\xf0\x90\x80\x81")
-
-        self.assertEqual(
-            glib_repr(u"\uD800\uDBFF"), b"\xED\xA0\x80\xED\xAF\xBF")
-        self.assertEqual(
-            glib_repr(u"\uD800\uE000"), b"\xED\xA0\x80\xEE\x80\x80")
-        self.assertEqual(
-            glib_repr(u"\uD7FF\uDC00"), b"\xED\x9F\xBF\xED\xB0\x80")
-        self.assertEqual(glib_repr(u"\x61\uDC00"), b"\x61\xED\xB0\x80")
-        self.assertEqual(glib_repr(u"\uDC00"), b"\xED\xB0\x80")
-
-    def test_win32_bytes_py3(self):
-        if not (os.name == "nt" and PY3):
-            return
-
-        values = [
-            b"foo",
-            b"\xff\xff",
-            b"\xc3\xb6\xc3\xa4\xc3\xbc",
-            b"\xed\xa0\xbd",
-            b"\xf0\x90\x80\x81",
-        ]
-
-        for v in values:
-            try:
-                uni = v.decode(sys.getfilesystemencoding(), "surrogatepass")
-            except UnicodeDecodeError:
-                continue
-            self.assertEqual(GIMarshallingTests.filename_copy(v), uni)
-
-    def test_unix_various(self):
-        if os.name == "nt":
-            return
-
-        copy = GIMarshallingTests.filename_copy
-        glib_repr = GIMarshallingTests.filename_to_glib_repr
-
-        if PY3:
-            str_path = copy(b"\xff\xfe")
-            self.assertTrue(isinstance(str_path, str))
-            self.assertEqual(str_path, os.fsdecode(b"\xff\xfe"))
-            self.assertEqual(copy(str_path), str_path)
-            self.assertEqual(glib_repr(b"\xff\xfe"), b"\xff\xfe")
-            self.assertEqual(glib_repr(str_path), b"\xff\xfe")
-
-            # if getfilesystemencoding is ASCII, then we should fail like
-            # os.fsencode
-            try:
-                byte_path = os.fsencode(u"ä")
-            except UnicodeEncodeError:
-                self.assertRaises(UnicodeEncodeError, copy, u"ä")
-            else:
-                self.assertEqual(copy(u"ä"), u"ä")
-                self.assertEqual(glib_repr(u"ä"), byte_path)
-        else:
-            self.assertTrue(isinstance(copy(b"\xff\xfe"), bytes))
-            self.assertEqual(copy(u"foo"), b"foo")
-            self.assertTrue(isinstance(copy(u"foo"), bytes))
-            try:
-                byte_path = u"ä".encode(sys.getfilesystemencoding())
-            except UnicodeEncodeError:
-                self.assertRaises(UnicodeEncodeError, copy, u"ä")
-            else:
-                self.assertEqual(copy(u"ä"), byte_path)
-                self.assertEqual(glib_repr(u"ä"), byte_path)
-
-    @unittest.skip("glib can't handle non-unicode paths")
-    def test_win32_surrogates_exists(self):
-        if os.name != "nt":
-            return
-
-        path = os.path.join(self.workdir, u"\ud83d")
-        with open(path, "wb"):
-            self.assertTrue(os.path.exists(path))
-            self.assertTrue(GIMarshallingTests.filename_exists(path))
-        os.unlink(path)
-
-    def test_path_exists_various_types(self):
-        wd = self.workdir
-        wdb = os.fsencode(wd) if PY3 else wd
-
-        paths = [(wdb, b"foo-1"), (wd, u"foo-2"), (wd, u"öäü-3")]
-        if PY3:
-            paths.append((wd, os.fsdecode(b"\xff\xfe-4")))
-
-        if os.name != "nt":
-            paths.append((wdb, b"\xff\xfe-5"))
-
-        for (d, path) in paths:
-            path = os.path.join(d, path)
-            with open(path, "wb"):
-                self.assertTrue(GIMarshallingTests.filename_exists(path))
-
-
 class TestArray(unittest.TestCase):
 
     def test_array_fixed_int_return(self):
@@ -892,40 +686,19 @@ class TestArray(unittest.TestCase):
     def test_array_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_return())
 
-    def test_array_return_etc(self):
-        self.assertEqual(([5, 0, 1, 9], 14), GIMarshallingTests.array_return_etc(5, 9))
-
     def test_array_in(self):
         GIMarshallingTests.array_in(Sequence([-1, 0, 1, 2]))
-        GIMarshallingTests.array_in_guint64_len(Sequence([-1, 0, 1, 2]))
-        GIMarshallingTests.array_in_guint8_len(Sequence([-1, 0, 1, 2]))
-
-    def test_array_in_len_before(self):
-        GIMarshallingTests.array_in_len_before(Sequence([-1, 0, 1, 2]))
-
-    def test_array_in_len_zero_terminated(self):
-        GIMarshallingTests.array_in_len_zero_terminated(Sequence([-1, 0, 1, 2]))
 
     def test_array_uint8_in(self):
         GIMarshallingTests.array_uint8_in(Sequence([97, 98, 99, 100]))
-        GIMarshallingTests.array_uint8_in(b"abcd")
-
-    def test_array_string_in(self):
-        GIMarshallingTests.array_string_in(['foo', 'bar'])
+        GIMarshallingTests.array_uint8_in(_bytes("abcd"))
 
     def test_array_out(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_out())
 
-    def test_array_out_etc(self):
-        self.assertEqual(([-5, 0, 1, 9], 4), GIMarshallingTests.array_out_etc(-5, 9))
-
     def test_array_inout(self):
         self.assertEqual([-2, -1, 0, 1, 2], GIMarshallingTests.array_inout(Sequence([-1, 0, 1, 2])))
 
-    def test_array_inout_etc(self):
-        self.assertEqual(([-5, -1, 0, 1, 9], 4),
-                         GIMarshallingTests.array_inout_etc(-5, Sequence([-1, 0, 1, 2]), 9))
-
     def test_method_array_in(self):
         object_ = GIMarshallingTests.Object()
         object_.method_array_in(Sequence([-1, 0, 1, 2]))
@@ -957,55 +730,6 @@ class TestArray(unittest.TestCase):
 
         GIMarshallingTests.array_struct_in([struct1, struct2, struct3])
 
-    def test_array_boxed_struct_in_item_marshal_failure(self):
-        struct1 = GIMarshallingTests.BoxedStruct()
-        struct1.long_ = 1
-        struct2 = GIMarshallingTests.BoxedStruct()
-        struct2.long_ = 2
-
-        self.assertRaises(TypeError, GIMarshallingTests.array_struct_in,
-                          [struct1, struct2, 'not_a_struct'])
-
-    def test_array_boxed_struct_value_in(self):
-        struct1 = GIMarshallingTests.BoxedStruct()
-        struct1.long_ = 1
-        struct2 = GIMarshallingTests.BoxedStruct()
-        struct2.long_ = 2
-        struct3 = GIMarshallingTests.BoxedStruct()
-        struct3.long_ = 3
-
-        GIMarshallingTests.array_struct_value_in([struct1, struct2, struct3])
-
-    def test_array_boxed_struct_value_in_item_marshal_failure(self):
-        struct1 = GIMarshallingTests.BoxedStruct()
-        struct1.long_ = 1
-        struct2 = GIMarshallingTests.BoxedStruct()
-        struct2.long_ = 2
-
-        self.assertRaises(TypeError, GIMarshallingTests.array_struct_value_in,
-                          [struct1, struct2, 'not_a_struct'])
-
-    def test_array_boxed_struct_take_in(self):
-        struct1 = GIMarshallingTests.BoxedStruct()
-        struct1.long_ = 1
-        struct2 = GIMarshallingTests.BoxedStruct()
-        struct2.long_ = 2
-        struct3 = GIMarshallingTests.BoxedStruct()
-        struct3.long_ = 3
-
-        GIMarshallingTests.array_struct_take_in([struct1, struct2, struct3])
-
-        self.assertEqual(1, struct1.long_)
-
-    def test_array_boxed_struct_return(self):
-        (struct1, struct2, struct3) = GIMarshallingTests.array_zero_terminated_return_struct()
-        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct1))
-        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct2))
-        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct3))
-        self.assertEqual(42, struct1.long_)
-        self.assertEqual(43, struct2.long_)
-        self.assertEqual(44, struct3.long_)
-
     def test_array_simple_struct_in(self):
         struct1 = GIMarshallingTests.SimpleStruct()
         struct1.long_ = 1
@@ -1016,21 +740,12 @@ class TestArray(unittest.TestCase):
 
         GIMarshallingTests.array_simple_struct_in([struct1, struct2, struct3])
 
-    def test_array_simple_struct_in_item_marshal_failure(self):
-        struct1 = GIMarshallingTests.SimpleStruct()
-        struct1.long_ = 1
-        struct2 = GIMarshallingTests.SimpleStruct()
-        struct2.long_ = 2
-
-        self.assertRaises(TypeError, GIMarshallingTests.array_simple_struct_in,
-                          [struct1, struct2, 'not_a_struct'])
-
     def test_array_multi_array_key_value_in(self):
         GIMarshallingTests.multi_array_key_value_in(["one", "two", "three"],
                                                     [1, 2, 3])
 
     def test_array_in_nonzero_nonlen(self):
-        GIMarshallingTests.array_in_nonzero_nonlen(1, b'abcd')
+        GIMarshallingTests.array_in_nonzero_nonlen(1, 'abcd')
 
     def test_array_fixed_out_struct(self):
         struct1, struct2 = GIMarshallingTests.array_fixed_out_struct()
@@ -1055,12 +770,6 @@ class TestArray(unittest.TestCase):
     def test_array_zero_terminated_inout(self):
         self.assertEqual(['-1', '0', '1', '2'], GIMarshallingTests.array_zero_terminated_inout(['0', '1', '2']))
 
-    def test_init_function(self):
-        self.assertEqual((True, []), GIMarshallingTests.init_function([]))
-        self.assertEqual((True, []), GIMarshallingTests.init_function(['hello']))
-        self.assertEqual((True, ['hello']),
-                         GIMarshallingTests.init_function(['hello', 'world']))
-
 
 class TestGStrv(unittest.TestCase):
 
@@ -1086,12 +795,12 @@ class TestArrayGVariant(unittest.TestCase):
 
     def test_array_gvariant_container_in(self):
         v = [GLib.Variant("i", 27), GLib.Variant("s", "Hello")]
-        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_container_in(v)]
+        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_none_in(v)]
         self.assertEqual([27, "Hello"], returned)
 
     def test_array_gvariant_full_in(self):
         v = [GLib.Variant("i", 27), GLib.Variant("s", "Hello")]
-        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_full_in(v)]
+        returned = [GLib.Variant.unpack(r) for r in GIMarshallingTests.array_gvariant_none_in(v)]
         self.assertEqual([27, "Hello"], returned)
 
     def test_bytearray_gvariant(self):
@@ -1104,9 +813,6 @@ class TestGArray(unittest.TestCase):
     def test_garray_int_none_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.garray_int_none_return())
 
-    def test_garray_uint64_none_return(self):
-        self.assertEqual([0, GLib.MAXUINT64], GIMarshallingTests.garray_uint64_none_return())
-
     def test_garray_utf8_none_return(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_return())
 
@@ -1124,9 +830,6 @@ class TestGArray(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.garray_int_none_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.garray_int_none_in, None)
 
-    def test_garray_uint64_none_in(self):
-        GIMarshallingTests.garray_uint64_none_in(Sequence([0, GLib.MAXUINT64]))
-
     def test_garray_utf8_none_in(self):
         GIMarshallingTests.garray_utf8_none_in(Sequence(['0', '1', '2']))
 
@@ -1139,9 +842,6 @@ class TestGArray(unittest.TestCase):
     def test_garray_utf8_full_out(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out())
 
-    def test_garray_utf8_full_out_caller_allocated(self):
-        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out_caller_allocated())
-
     def test_garray_utf8_none_inout(self):
         self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_none_inout(Sequence(('0', '1', '2'))))
 
@@ -1185,75 +885,11 @@ class TestGPtrArray(unittest.TestCase):
         self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gptrarray_utf8_full_inout(['0', '1', '2']))
 
 
-class TestGBytes(unittest.TestCase):
-    def test_gbytes_create(self):
-        b = GLib.Bytes.new(b'\x00\x01\xFF')
-        self.assertEqual(3, b.get_size())
-        self.assertEqual(b'\x00\x01\xFF', b.get_data())
-
-    def test_gbytes_create_take(self):
-        b = GLib.Bytes.new_take(b'\x00\x01\xFF')
-        self.assertEqual(3, b.get_size())
-        self.assertEqual(b'\x00\x01\xFF', b.get_data())
-
-    def test_gbytes_full_return(self):
-        b = GIMarshallingTests.gbytes_full_return()
-        self.assertEqual(4, b.get_size())
-        self.assertEqual(b'\x00\x31\xFF\x33', b.get_data())
-
-    def test_gbytes_none_in(self):
-        b = GIMarshallingTests.gbytes_full_return()
-        GIMarshallingTests.gbytes_none_in(b)
-
-    def test_compare(self):
-        a1 = GLib.Bytes.new(b'\x00\x01\xFF')
-        a2 = GLib.Bytes.new(b'\x00\x01\xFF')
-        b = GLib.Bytes.new(b'\x00\x01\xFE')
-
-        self.assertTrue(a1.equal(a2))
-        self.assertTrue(a2.equal(a1))
-        self.assertFalse(a1.equal(b))
-        self.assertFalse(b.equal(a2))
-
-        self.assertEqual(0, a1.compare(a2))
-        self.assertLess(0, a1.compare(b))
-        self.assertGreater(0, b.compare(a1))
-
-
-class TestGByteArray(unittest.TestCase):
-    def test_new(self):
-        ba = GLib.ByteArray.new()
-        self.assertEqual(b'', ba)
-
-        ba = GLib.ByteArray.new_take(b'\x01\x02\xFF')
-        self.assertEqual(b'\x01\x02\xFF', ba)
-
-    def test_bytearray_full_return(self):
-        self.assertEqual(b'\x001\xFF3', GIMarshallingTests.bytearray_full_return())
-
-    def test_bytearray_none_in(self):
-        b = b'\x00\x31\xFF\x33'
-        ba = GLib.ByteArray.new_take(b)
-
-        # b should always have the same value even
-        # though the generated GByteArray is being modified
-        GIMarshallingTests.bytearray_none_in(b)
-        GIMarshallingTests.bytearray_none_in(b)
-
-        # The GByteArray is just a bytes
-        # thus it will not reflect any changes
-        GIMarshallingTests.bytearray_none_in(ba)
-        GIMarshallingTests.bytearray_none_in(ba)
-
-
 class TestGList(unittest.TestCase):
 
     def test_glist_int_none_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.glist_int_none_return())
 
-    def test_glist_uint32_none_return(self):
-        self.assertEqual([0, GLib.MAXUINT32], GIMarshallingTests.glist_uint32_none_return())
-
     def test_glist_utf8_none_return(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_return())
 
@@ -1271,17 +907,6 @@ class TestGList(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.glist_int_none_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.glist_int_none_in, None)
 
-    def test_glist_int_none_in_error_getitem(self):
-
-        class FailingSequence(Sequence):
-            def __getitem__(self, key):
-                raise Exception
-
-        self.assertRaises(Exception, GIMarshallingTests.glist_int_none_in, FailingSequence((-1, 0, 1, 2)))
-
-    def test_glist_uint32_none_in(self):
-        GIMarshallingTests.glist_uint32_none_in(Sequence((0, GLib.MAXUINT32)))
-
     def test_glist_utf8_none_in(self):
         GIMarshallingTests.glist_utf8_none_in(Sequence(('0', '1', '2')))
 
@@ -1326,14 +951,6 @@ class TestGSList(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.gslist_int_none_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.gslist_int_none_in, None)
 
-    def test_gslist_int_none_in_error_getitem(self):
-
-        class FailingSequence(Sequence):
-            def __getitem__(self, key):
-                raise Exception
-
-        self.assertRaises(Exception, GIMarshallingTests.gslist_int_none_in, FailingSequence((-1, 0, 1, 2)))
-
     def test_gslist_utf8_none_in(self):
         GIMarshallingTests.gslist_utf8_none_in(Sequence(('0', '1', '2')))
 
@@ -1392,30 +1009,16 @@ class TestGHashTable(unittest.TestCase):
         self.assertEqual({'-1': '1', '0': '0', '1': '-1', '2': '-2'}, GIMarshallingTests.ghashtable_utf8_full_out())
 
     def test_ghashtable_utf8_none_inout(self):
-        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
         self.assertEqual({'-1': '1', '0': '0', '1': '1'},
-                         GIMarshallingTests.ghashtable_utf8_none_inout(i))
+            GIMarshallingTests.ghashtable_utf8_none_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
 
     def test_ghashtable_utf8_container_inout(self):
-        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
         self.assertEqual({'-1': '1', '0': '0', '1': '1'},
-                         GIMarshallingTests.ghashtable_utf8_container_inout(i))
+            GIMarshallingTests.ghashtable_utf8_container_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
 
     def test_ghashtable_utf8_full_inout(self):
-        i = {'-1': '1', '0': '0', '1': '-1', '2': '-2'}
         self.assertEqual({'-1': '1', '0': '0', '1': '1'},
-                         GIMarshallingTests.ghashtable_utf8_full_inout(i))
-
-    def test_ghashtable_enum_none_in(self):
-        GIMarshallingTests.ghashtable_enum_none_in({1: GIMarshallingTests.ExtraEnum.VALUE1,
-                                                    2: GIMarshallingTests.ExtraEnum.VALUE2,
-                                                    3: GIMarshallingTests.ExtraEnum.VALUE3})
-
-    def test_ghashtable_enum_none_return(self):
-        self.assertEqual({1: GIMarshallingTests.ExtraEnum.VALUE1,
-                          2: GIMarshallingTests.ExtraEnum.VALUE2,
-                          3: GIMarshallingTests.ExtraEnum.VALUE3},
-                         GIMarshallingTests.ghashtable_enum_none_return())
+            GIMarshallingTests.ghashtable_utf8_full_inout({'-1': '1', '0': '0', '1': '-1', '2': '-2'}))
 
 
 class TestGValue(unittest.TestCase):
@@ -1425,193 +1028,43 @@ class TestGValue(unittest.TestCase):
 
     def test_gvalue_in(self):
         GIMarshallingTests.gvalue_in(42)
-        value = GObject.Value(GObject.TYPE_INT, 42)
+        value = GObject.Value()
+        value.init(GObject.TYPE_INT)
+        value.set_int(42)
         GIMarshallingTests.gvalue_in(value)
 
-    def test_gvalue_in_with_modification(self):
-        value = GObject.Value(GObject.TYPE_INT, 42)
-        GIMarshallingTests.gvalue_in_with_modification(value)
-        self.assertEqual(value.get_int(), 24)
-
-    def test_gvalue_int64_in(self):
-        value = GObject.Value(GObject.TYPE_INT64, GLib.MAXINT64)
-        GIMarshallingTests.gvalue_int64_in(value)
-
-    def test_gvalue_in_with_type(self):
-        value = GObject.Value(GObject.TYPE_STRING, 'foo')
-        GIMarshallingTests.gvalue_in_with_type(value, GObject.TYPE_STRING)
-
-        value = GObject.Value(GIMarshallingTests.Flags.__gtype__,
-                              GIMarshallingTests.Flags.VALUE1)
-        GIMarshallingTests.gvalue_in_with_type(value, GObject.TYPE_FLAGS)
-
-    def test_gvalue_in_enum(self):
-        value = GObject.Value(GIMarshallingTests.Enum.__gtype__,
-                              GIMarshallingTests.Enum.VALUE3)
-        GIMarshallingTests.gvalue_in_enum(value)
-
     def test_gvalue_out(self):
         self.assertEqual(42, GIMarshallingTests.gvalue_out())
 
-    def test_gvalue_int64_out(self):
-        self.assertEqual(GLib.MAXINT64, GIMarshallingTests.gvalue_int64_out())
-
-    def test_gvalue_out_caller_allocates(self):
-        self.assertEqual(42, GIMarshallingTests.gvalue_out_caller_allocates())
-
     def test_gvalue_inout(self):
         self.assertEqual('42', GIMarshallingTests.gvalue_inout(42))
-        value = GObject.Value(int, 42)
+        value = GObject.Value()
+        value.init(GObject.TYPE_INT)
+        value.set_int(42)
         self.assertEqual('42', GIMarshallingTests.gvalue_inout(value))
 
     def test_gvalue_flat_array_in(self):
         # the function already asserts the correct values
         GIMarshallingTests.gvalue_flat_array([42, "42", True])
 
-    def test_gvalue_flat_array_in_item_marshal_failure(self):
-        # Tests the failure to marshal 2^256 to a GValue mid-way through the array marshaling.
-        self.assertRaises(OverflowError, GIMarshallingTests.gvalue_flat_array,
-                          [42, 2 ** 256, True])
-
-        self.assertRaises(OverflowError, GIMarshallingTests.gvalue_flat_array,
-                          [GLib.MAXINT + 1, "42", True])
-        self.assertRaises(OverflowError, GIMarshallingTests.gvalue_flat_array,
-                          [GLib.MININT - 1, "42", True])
-
     def test_gvalue_flat_array_out(self):
         values = GIMarshallingTests.return_gvalue_flat_array()
         self.assertEqual(values, [42, '42', True])
 
-    def test_gvalue_gobject_ref_counts(self):
-        # Tests a GObject held by a GValue
-        obj = GObject.Object()
-        ref = weakref.ref(obj)
-        grefcount = obj.__grefcount__
-
-        value = GObject.Value()
-        value.init(GObject.TYPE_OBJECT)
-
-        # TYPE_OBJECT will inc ref count as it should
-        value.set_object(obj)
-        self.assertEqual(obj.__grefcount__, grefcount + 1)
-
-        # multiple set_object should not inc ref count
-        value.set_object(obj)
-        self.assertEqual(obj.__grefcount__, grefcount + 1)
-
-        # get_object will re-use the same wrapper as obj
-        res = value.get_object()
-        self.assertEqual(obj, res)
-        self.assertEqual(obj.__grefcount__, grefcount + 1)
-
-        # multiple get_object should not inc ref count
-        res = value.get_object()
-        self.assertEqual(obj.__grefcount__, grefcount + 1)
-
-        # deletion of the result and value holder should bring the
-        # refcount back to where we started
-        del res
-        del value
-        gc.collect()
-        self.assertEqual(obj.__grefcount__, grefcount)
-
-        del obj
-        gc.collect()
-        self.assertEqual(ref(), None)
-
-    def test_gvalue_boxed_ref_counts(self):
-        # Tests a boxed type wrapping a python object pointer (TYPE_PYOBJECT)
-        # held by a GValue
-        class Obj(object):
-            pass
-
-        obj = Obj()
-        ref = weakref.ref(obj)
-        refcount = sys.getrefcount(obj)
-
-        value = GObject.Value()
-        value.init(GObject.TYPE_PYOBJECT)
-
-        # boxed TYPE_PYOBJECT will inc ref count as it should
-        value.set_boxed(obj)
-        self.assertEqual(sys.getrefcount(obj), refcount + 1)
-
-        # multiple set_boxed should not inc ref count
-        value.set_boxed(obj)
-        self.assertEqual(sys.getrefcount(obj), refcount + 1)
-
-        res = value.get_boxed()
-        self.assertEqual(obj, res)
-        self.assertEqual(sys.getrefcount(obj), refcount + 2)
-
-        # multiple get_boxed should not inc ref count
-        res = value.get_boxed()
-        self.assertEqual(sys.getrefcount(obj), refcount + 2)
-
-        # deletion of the result and value holder should bring the
-        # refcount back to where we started
-        del res
-        del value
-        gc.collect()
-        self.assertEqual(sys.getrefcount(obj), refcount)
-
-        del obj
-        gc.collect()
-        self.assertEqual(ref(), None)
-
-    # FIXME: crashes
-    def disabled_test_gvalue_flat_array_round_trip(self):
-        self.assertEqual([42, '42', True],
-                         GIMarshallingTests.gvalue_flat_array_round_trip(42, '42', True))
-
 
 class TestGClosure(unittest.TestCase):
 
-    def test_in(self):
+    def test_gclosure_in(self):
         GIMarshallingTests.gclosure_in(lambda: 42)
 
-    def test_pass(self):
         # test passing a closure between two C calls
         closure = GIMarshallingTests.gclosure_return()
         GIMarshallingTests.gclosure_in(closure)
 
-    def test_type_error(self):
         self.assertRaises(TypeError, GIMarshallingTests.gclosure_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.gclosure_in, None)
 
 
-class TestCallbacks(unittest.TestCase):
-    def test_return_value_only(self):
-        def cb():
-            return 5
-        self.assertEqual(GIMarshallingTests.callback_return_value_only(cb), 5)
-
-    def test_one_out_arg(self):
-        def cb():
-            return 5.5
-        self.assertAlmostEqual(GIMarshallingTests.callback_one_out_parameter(cb), 5.5)
-
-    def test_multiple_out_args(self):
-        def cb():
-            return (5.5, 42.0)
-        res = GIMarshallingTests.callback_multiple_out_parameters(cb)
-        self.assertAlmostEqual(res[0], 5.5)
-        self.assertAlmostEqual(res[1], 42.0)
-
-    def test_return_and_one_out_arg(self):
-        def cb():
-            return (5, 42.0)
-        res = GIMarshallingTests.callback_return_value_and_one_out_parameter(cb)
-        self.assertEqual(res[0], 5)
-        self.assertAlmostEqual(res[1], 42.0)
-
-    def test_return_and_multiple_out_arg(self):
-        def cb():
-            return (5, 42, -1000)
-        self.assertEqual(GIMarshallingTests.callback_return_value_and_multiple_out_parameters(cb),
-                         (5, 42, -1000))
-
-
 class TestPointer(unittest.TestCase):
     def test_pointer_in_return(self):
         self.assertEqual(GIMarshallingTests.pointer_in_return(42), 42)
@@ -1628,19 +1081,15 @@ class TestEnum(unittest.TestCase):
 
         Run test under a locale which defines toupper('a') == 'a'
         '''
-        if sys.platform == "darwin" or os.name == "nt":
-            return
         cls.locale_dir = tempfile.mkdtemp()
-        src = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'te_ST@nouppera')
-        dest = os.path.join(cls.locale_dir, 'te_ST.UTF-8@nouppera')
-        subprocess.check_call(['localedef', '-i', src, '-c', '-f', 'UTF-8', dest])
+        subprocess.check_call(['localedef', '-i',
+            os.path.join(os.path.dirname(os.path.realpath(__file__)), 'te_ST@nouppera'),
+            '-c', '-f', 'UTF-8', os.path.join(cls.locale_dir, 'te_ST.UTF-8@nouppera')])
         os.environ['LOCPATH'] = cls.locale_dir
         locale.setlocale(locale.LC_ALL, 'te_ST.UTF-8@nouppera')
 
     @classmethod
     def tearDownClass(cls):
-        if sys.platform == "darwin" or os.name == "nt":
-            return
         locale.setlocale(locale.LC_ALL, 'C')
         shutil.rmtree(cls.locale_dir)
         try:
@@ -1671,11 +1120,6 @@ class TestEnum(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.enum_in, 43)
         self.assertRaises(TypeError, GIMarshallingTests.enum_in, 'GIMarshallingTests.Enum.VALUE3')
 
-    def test_enum_return(self):
-        enum = GIMarshallingTests.enum_returnv()
-        self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
-        self.assertEqual(enum, GIMarshallingTests.Enum.VALUE3)
-
     def test_enum_out(self):
         enum = GIMarshallingTests.enum_out()
         self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
@@ -1696,42 +1140,6 @@ class TestEnum(unittest.TestCase):
         self.assertTrue(hasattr(GIMarshallingTests.Enum, "VALUE1"))
         self.assertRaises(AttributeError, getattr, GIMarshallingTests.SecondEnum, "VALUE1")
 
-    def test_enum_gtype_name_is_namespaced(self):
-        self.assertEqual(GIMarshallingTests.Enum.__gtype__.name,
-                         'PyGIMarshallingTestsEnum')
-
-    def test_enum_add_type_error(self):
-        self.assertRaises(TypeError,
-                          gi._gi.enum_add,
-                          GIMarshallingTests.NoTypeFlags.__gtype__)
-
-    def test_type_module_name(self):
-        self.assertEqual(GIMarshallingTests.Enum.__name__, "Enum")
-        self.assertEqual(GIMarshallingTests.Enum.__module__,
-                         "gi.repository.GIMarshallingTests")
-
-    def test_repr(self):
-        self.assertEqual(repr(GIMarshallingTests.Enum.VALUE3),
-                         "<enum GI_MARSHALLING_TESTS_ENUM_VALUE3 of type "
-                         "GIMarshallingTests.Enum>")
-
-
-class TestEnumVFuncResults(unittest.TestCase):
-    class EnumTester(GIMarshallingTests.Object):
-        def do_vfunc_return_enum(self):
-            return GIMarshallingTests.Enum.VALUE2
-
-        def do_vfunc_out_enum(self):
-            return GIMarshallingTests.Enum.VALUE3
-
-    def test_vfunc_return_enum(self):
-        tester = self.EnumTester()
-        self.assertEqual(tester.vfunc_return_enum(), GIMarshallingTests.Enum.VALUE2)
-
-    def test_vfunc_out_enum(self):
-        tester = self.EnumTester()
-        self.assertEqual(tester.vfunc_out_enum(), GIMarshallingTests.Enum.VALUE3)
-
 
 class TestGEnum(unittest.TestCase):
 
@@ -1754,19 +1162,12 @@ class TestGEnum(unittest.TestCase):
     def test_genum_in(self):
         GIMarshallingTests.genum_in(GIMarshallingTests.GEnum.VALUE3)
         GIMarshallingTests.genum_in(42)
-        GIMarshallingTests.GEnum.in_(42)
 
         self.assertRaises(TypeError, GIMarshallingTests.genum_in, 43)
         self.assertRaises(TypeError, GIMarshallingTests.genum_in, 'GIMarshallingTests.GEnum.VALUE3')
 
-    def test_genum_return(self):
-        genum = GIMarshallingTests.genum_returnv()
-        self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
-        self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE3)
-
     def test_genum_out(self):
         genum = GIMarshallingTests.genum_out()
-        genum = GIMarshallingTests.GEnum.out()
         self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
         self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE3)
 
@@ -1775,16 +1176,6 @@ class TestGEnum(unittest.TestCase):
         self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
         self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE1)
 
-    def test_type_module_name(self):
-        self.assertEqual(GIMarshallingTests.GEnum.__name__, "GEnum")
-        self.assertEqual(GIMarshallingTests.GEnum.__module__,
-                         "gi.repository.GIMarshallingTests")
-
-    def test_repr(self):
-        self.assertEqual(repr(GIMarshallingTests.GEnum.VALUE3),
-                         "<enum GI_MARSHALLING_TESTS_GENUM_VALUE3 of type "
-                         "GIMarshallingTests.GEnum>")
-
 
 class TestGFlags(unittest.TestCase):
 
@@ -1809,25 +1200,13 @@ class TestGFlags(unittest.TestCase):
 
     def test_flags_in(self):
         GIMarshallingTests.flags_in(GIMarshallingTests.Flags.VALUE2)
-        GIMarshallingTests.Flags.in_(GIMarshallingTests.Flags.VALUE2)
         # result of __or__() operation should still be valid instance, not an int.
         GIMarshallingTests.flags_in(GIMarshallingTests.Flags.VALUE2 | GIMarshallingTests.Flags.VALUE2)
         GIMarshallingTests.flags_in_zero(Number(0))
-        GIMarshallingTests.Flags.in_zero(Number(0))
 
         self.assertRaises(TypeError, GIMarshallingTests.flags_in, 1 << 1)
         self.assertRaises(TypeError, GIMarshallingTests.flags_in, 'GIMarshallingTests.Flags.VALUE2')
 
-    def test_flags_return(self):
-        flags = GIMarshallingTests.flags_returnv()
-        self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
-        self.assertEqual(flags, GIMarshallingTests.Flags.VALUE2)
-
-    def test_flags_return_method(self):
-        flags = GIMarshallingTests.Flags.returnv()
-        self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
-        self.assertEqual(flags, GIMarshallingTests.Flags.VALUE2)
-
     def test_flags_out(self):
         flags = GIMarshallingTests.flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
@@ -1838,16 +1217,6 @@ class TestGFlags(unittest.TestCase):
         self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
         self.assertEqual(flags, GIMarshallingTests.Flags.VALUE1)
 
-    def test_type_module_name(self):
-        self.assertEqual(GIMarshallingTests.Flags.__name__, "Flags")
-        self.assertEqual(GIMarshallingTests.Flags.__module__,
-                         "gi.repository.GIMarshallingTests")
-
-    def test_repr(self):
-        self.assertEqual(repr(GIMarshallingTests.Flags.VALUE2),
-                         "<flags GI_MARSHALLING_TESTS_FLAGS_VALUE2 of type "
-                         "GIMarshallingTests.Flags>")
-
 
 class TestNoTypeFlags(unittest.TestCase):
 
@@ -1878,11 +1247,6 @@ class TestNoTypeFlags(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.no_type_flags_in, 1 << 1)
         self.assertRaises(TypeError, GIMarshallingTests.no_type_flags_in, 'GIMarshallingTests.NoTypeFlags.VALUE2')
 
-    def test_flags_return(self):
-        flags = GIMarshallingTests.no_type_flags_returnv()
-        self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
-        self.assertEqual(flags, GIMarshallingTests.NoTypeFlags.VALUE2)
-
     def test_flags_out(self):
         flags = GIMarshallingTests.no_type_flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
@@ -1893,21 +1257,6 @@ class TestNoTypeFlags(unittest.TestCase):
         self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
         self.assertEqual(flags, GIMarshallingTests.NoTypeFlags.VALUE1)
 
-    def test_flags_gtype_name_is_namespaced(self):
-        self.assertEqual(GIMarshallingTests.NoTypeFlags.__gtype__.name,
-                         'PyGIMarshallingTestsNoTypeFlags')
-
-    def test_type_module_name(self):
-        self.assertEqual(GIMarshallingTests.NoTypeFlags.__name__,
-                         "NoTypeFlags")
-        self.assertEqual(GIMarshallingTests.NoTypeFlags.__module__,
-                         "gi.repository.GIMarshallingTests")
-
-    def test_repr(self):
-        self.assertEqual(repr(GIMarshallingTests.NoTypeFlags.VALUE2),
-                         "<flags GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2 of "
-                         "type GIMarshallingTests.NoTypeFlags>")
-
 
 class TestStructure(unittest.TestCase):
 
@@ -2010,7 +1359,6 @@ class TestStructure(unittest.TestCase):
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
 
         self.assertEqual(0, struct.long_)
-        self.assertEqual(None, struct.string_)
         self.assertEqual([], struct.g_strv)
 
         del struct
@@ -2018,20 +1366,14 @@ class TestStructure(unittest.TestCase):
     def test_boxed_struct_new(self):
         struct = GIMarshallingTests.BoxedStruct.new()
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
-        self.assertEqual(struct.long_, 0)
-        self.assertEqual(struct.string_, None)
 
         del struct
 
     def test_boxed_struct_copy(self):
         struct = GIMarshallingTests.BoxedStruct()
-        struct.long_ = 42
-        struct.string_ = 'hello'
 
         new_struct = struct.copy()
         self.assertTrue(isinstance(new_struct, GIMarshallingTests.BoxedStruct))
-        self.assertEqual(new_struct.long_, 42)
-        self.assertEqual(new_struct.string_, 'hello')
 
         del new_struct
         del struct
@@ -2041,7 +1383,6 @@ class TestStructure(unittest.TestCase):
 
         self.assertTrue(isinstance(struct, GIMarshallingTests.BoxedStruct))
         self.assertEqual(42, struct.long_)
-        self.assertEqual('hello', struct.string_)
         self.assertEqual(['0', '1', '2'], struct.g_strv)
 
         del struct
@@ -2074,27 +1415,6 @@ class TestStructure(unittest.TestCase):
         del in_struct
         del out_struct
 
-    def test_struct_field_assignment(self):
-        struct = GIMarshallingTests.BoxedStruct()
-
-        struct.long_ = 42
-        struct.string_ = 'hello'
-        self.assertEqual(struct.long_, 42)
-        self.assertEqual(struct.string_, 'hello')
-
-    def test_union_init(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GIMarshallingTests.Union(42)
-
-        self.assertTrue(issubclass(warn[0].category, TypeError))
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GIMarshallingTests.Union(f=42)
-
-        self.assertTrue(issubclass(warn[0].category, TypeError))
-
     def test_union(self):
         union = GIMarshallingTests.Union()
 
@@ -2132,27 +1452,6 @@ class TestStructure(unittest.TestCase):
 
         self.assertRaises(TypeError, GIMarshallingTests.Union.method)
 
-    def test_repr(self):
-        self.assertRegexpMatches(
-            repr(GIMarshallingTests.PointerStruct()),
-            r"<GIMarshallingTests.PointerStruct object at 0x[^\s]+ "
-            r"\(void at 0x[^\s]+\)>")
-
-        self.assertRegexpMatches(
-            repr(GIMarshallingTests.SimpleStruct()),
-            r"<GIMarshallingTests.SimpleStruct object at 0x[^\s]+ "
-            r"\(void at 0x[^\s]+\)>")
-
-        self.assertRegexpMatches(
-            repr(GIMarshallingTests.Union()),
-            r"<GIMarshallingTests.Union object at 0x[^\s]+ "
-            r"\(GIMarshallingTestsUnion at 0x[^\s]+\)>")
-
-        self.assertRegexpMatches(
-            repr(GIMarshallingTests.BoxedStruct()),
-            r"<GIMarshallingTests.BoxedStruct object at 0x[^\s]+ "
-            r"\(GIMarshallingTestsBoxedStruct at 0x[^\s]+\)>")
-
 
 class TestGObject(unittest.TestCase):
 
@@ -2270,9 +1569,6 @@ class TestGObject(unittest.TestCase):
         GIMarshallingTests.Object.none_inout(GIMarshallingTests.SubObject(int=42))
 
     def test_object_full_inout(self):
-        # Using gimarshallingtests.c from GI versions > 1.38.0 will show this
-        # test as an "unexpected success" due to reference leak fixes in that file.
-        # TODO: remove the expectedFailure once PyGI relies on GI > 1.38.0.
         object_ = GIMarshallingTests.Object(int=42)
         new_object = GIMarshallingTests.Object.full_inout(object_)
 
@@ -2280,21 +1576,9 @@ class TestGObject(unittest.TestCase):
 
         self.assertFalse(object_ is new_object)
 
-        self.assertEqual(object_.__grefcount__, 1)
+        self.assertEqual(object_.__grefcount__, 2)
         self.assertEqual(new_object.__grefcount__, 1)
 
-    def test_repr(self):
-        self.assertRegexpMatches(
-            repr(GIMarshallingTests.Object(int=42)),
-            r"<GIMarshallingTests.Object object at 0x[^\s]+ "
-            r"\(GIMarshallingTestsObject at 0x[^\s]+\)>")
-
-    def test_nongir_repr(self):
-        self.assertRegexpMatches(
-            repr(Gio.File.new_for_path("")),
-            r"<__gi__.GLocalFile object at 0x[^\s]+ "
-            r"\(GLocalFile at 0x[^\s]+\)>")
-
 # FIXME: Doesn't actually return the same object.
 #    def test_object_inout_same(self):
 #        object_ = GIMarshallingTests.Object()
@@ -2306,8 +1590,6 @@ class TestGObject(unittest.TestCase):
 class TestPythonGObject(unittest.TestCase):
 
     class Object(GIMarshallingTests.Object):
-        return_for_caller_allocated_out_parameter = 'test caller alloc return'
-
         def __init__(self, int):
             GIMarshallingTests.Object.__init__(self)
             self.val = None
@@ -2322,37 +1604,10 @@ class TestPythonGObject(unittest.TestCase):
         def do_method_int8_out(self):
             return 42
 
-        def do_method_int8_arg_and_out_caller(self, arg):
-            return arg + 1
-
-        def do_method_int8_arg_and_out_callee(self, arg):
-            return arg + 1
-
-        def do_method_str_arg_out_ret(self, arg):
-            return (arg.upper(), len(arg))
-
         def do_method_with_default_implementation(self, int8):
             GIMarshallingTests.Object.do_method_with_default_implementation(self, int8)
             self.props.int += int8
 
-        def do_vfunc_return_value_only(self):
-            return 4242
-
-        def do_vfunc_one_out_parameter(self):
-            return 42.42
-
-        def do_vfunc_multiple_out_parameters(self):
-            return (42.42, 3.14)
-
-        def do_vfunc_return_value_and_one_out_parameter(self):
-            return (5, 42)
-
-        def do_vfunc_return_value_and_multiple_out_parameters(self):
-            return (5, 42, 99)
-
-        def do_vfunc_caller_allocated_out_parameter(self):
-            return self.return_for_caller_allocated_out_parameter
-
     class SubObject(GIMarshallingTests.SubObject):
         def __init__(self, int):
             GIMarshallingTests.SubObject.__init__(self)
@@ -2361,35 +1616,12 @@ class TestPythonGObject(unittest.TestCase):
         def do_method_with_default_implementation(self, int8):
             self.val = int8
 
-        def do_vfunc_return_value_only(self):
-            return 2121
-
-    class Interface3Impl(GObject.Object, GIMarshallingTests.Interface3):
-        def __init__(self):
-            GObject.Object.__init__(self)
-            self.variants = None
-            self.n_variants = None
-
-        def do_test_variant_array_in(self, variants, n_variants):
-            self.variants = variants
-            self.n_variants = n_variants
-
-    class ErrorObject(GIMarshallingTests.Object):
-        def do_vfunc_return_value_only(self):
-            raise ValueError('Return value should be 0')
-
     def test_object(self):
         self.assertTrue(issubclass(self.Object, GIMarshallingTests.Object))
 
         object_ = self.Object(int=42)
         self.assertTrue(isinstance(object_, self.Object))
 
-    @unittest.skipUnless(hasattr(GIMarshallingTests.Object, 'new_fail'),
-                         'Requires newer version of GI')
-    def test_object_fail(self):
-        with self.assertRaises(GLib.Error):
-            GIMarshallingTests.Object.new_fail(int_=42)
-
     def test_object_method(self):
         self.Object(int=0).method()
 
@@ -2399,28 +1631,9 @@ class TestPythonGObject(unittest.TestCase):
         self.assertEqual(object_.val, 84)
         self.assertEqual(object_.method_int8_out(), 42)
 
-        # can be dropped when bumping g-i dependencies to >= 1.35.2
-        if hasattr(object_, 'method_int8_arg_and_out_caller'):
-            self.assertEqual(object_.method_int8_arg_and_out_caller(42), 43)
-            self.assertEqual(object_.method_int8_arg_and_out_callee(42), 43)
-            self.assertEqual(object_.method_str_arg_out_ret('hello'), ('HELLO', 5))
-
         object_.method_with_default_implementation(42)
         self.assertEqual(object_.props.int, 84)
 
-        self.assertEqual(object_.vfunc_return_value_only(), 4242)
-        self.assertAlmostEqual(object_.vfunc_one_out_parameter(), 42.42, places=5)
-
-        (a, b) = object_.vfunc_multiple_out_parameters()
-        self.assertAlmostEqual(a, 42.42, places=5)
-        self.assertAlmostEqual(b, 3.14, places=5)
-
-        self.assertEqual(object_.vfunc_return_value_and_one_out_parameter(), (5, 42))
-        self.assertEqual(object_.vfunc_return_value_and_multiple_out_parameters(), (5, 42, 99))
-
-        self.assertEqual(object_.vfunc_caller_allocated_out_parameter(),
-                         object_.return_for_caller_allocated_out_parameter)
-
         class ObjectWithoutVFunc(GIMarshallingTests.Object):
             def __init__(self, int):
                 GIMarshallingTests.Object.__init__(self)
@@ -2429,30 +1642,22 @@ class TestPythonGObject(unittest.TestCase):
         object_.method_with_default_implementation(84)
         self.assertEqual(object_.props.int, 84)
 
-    def test_vfunc_return_ref_count(self):
-        obj = self.Object(int=42)
-        ref_count = sys.getrefcount(obj.return_for_caller_allocated_out_parameter)
-        ret = obj.vfunc_caller_allocated_out_parameter()
-        gc.collect()
-
-        # Make sure the return and what the vfunc returned
-        # are equal but not the same object.
-        self.assertEqual(ret, obj.return_for_caller_allocated_out_parameter)
-        self.assertFalse(ret is obj.return_for_caller_allocated_out_parameter)
-        self.assertEqual(sys.getrefcount(obj.return_for_caller_allocated_out_parameter),
-                         ref_count)
-
     def test_subobject_parent_vfunc(self):
         object_ = self.SubObject(int=81)
         object_.method_with_default_implementation(87)
         self.assertEqual(object_.val, 87)
 
-    def test_subobject_child_vfunc(self):
-        object_ = self.SubObject(int=1)
-        self.assertEqual(object_.vfunc_return_value_only(), 2121)
+    def test_dynamic_module(self):
+        from gi.module import DynamicGObjectModule
+        self.assertTrue(isinstance(GObject, DynamicGObjectModule))
+        # compare the same enum from both the pygobject attrs and gi GObject attrs
+        self.assertEqual(GObject.SIGNAL_ACTION, GObject.SignalFlags.ACTION)
+        # compare a static gobject attr with a dynamic GObject attr
+        import gi._gobject
+        self.assertEqual(GObject.GObject, gi._gobject.GObject)
 
     def test_subobject_non_vfunc_do_method(self):
-        class PythonObjectWithNonVFuncDoMethod(object):
+        class PythonObjectWithNonVFuncDoMethod:
             def do_not_a_vfunc(self):
                 return 5
 
@@ -2488,41 +1693,6 @@ class TestPythonGObject(unittest.TestCase):
         GIMarshallingTests.SubSubObject.do_method_deep_hierarchy(sub_sub_sub_object, 5)
         self.assertEqual(sub_sub_sub_object.props.int, 5)
 
-    def test_interface3impl(self):
-        iface3 = self.Interface3Impl()
-        variants = [GLib.Variant('i', 27), GLib.Variant('s', 'Hello')]
-        iface3.test_variant_array_in(variants)
-        self.assertEqual(iface3.n_variants, 2)
-        self.assertEqual(iface3.variants[0].unpack(), 27)
-        self.assertEqual(iface3.variants[1].unpack(), 'Hello')
-
-    def test_python_subsubobject_vfunc(self):
-        class PySubObject(GIMarshallingTests.Object):
-            def __init__(self):
-                GIMarshallingTests.Object.__init__(self)
-                self.sub_method_int8_called = 0
-
-            def do_method_int8_in(self, int8):
-                self.sub_method_int8_called += 1
-
-        class PySubSubObject(PySubObject):
-            def __init__(self):
-                PySubObject.__init__(self)
-                self.subsub_method_int8_called = 0
-
-            def do_method_int8_in(self, int8):
-                self.subsub_method_int8_called += 1
-
-        so = PySubObject()
-        so.method_int8_in(1)
-        self.assertEqual(so.sub_method_int8_called, 1)
-
-        # it should call the method on the SubSub object only
-        sso = PySubSubObject()
-        sso.method_int8_in(1)
-        self.assertEqual(sso.subsub_method_int8_called, 1)
-        self.assertEqual(sso.sub_method_int8_called, 0)
-
     def test_callback_in_vfunc(self):
         class SubObject(GIMarshallingTests.Object):
             def __init__(self):
@@ -2534,30 +1704,10 @@ class TestPythonGObject(unittest.TestCase):
 
         _object = SubObject()
         _object.call_vfunc_with_callback()
-        self.assertTrue(_object.worked)
+        self.assertTrue(_object.worked == True)
         _object.worked = False
         _object.call_vfunc_with_callback()
-        self.assertTrue(_object.worked)
-
-    def test_exception_in_vfunc_return_value(self):
-        obj = self.ErrorObject()
-        with capture_exceptions() as exc:
-            self.assertEqual(obj.vfunc_return_value_only(), 0)
-        self.assertEqual(len(exc), 1)
-        self.assertEqual(exc[0].type, ValueError)
-
-    @unittest.skipUnless(hasattr(GIMarshallingTests, 'callback_owned_boxed'),
-                         'requires newer version of GI')
-    def test_callback_owned_box(self):
-        def callback(box, data):
-            self.box = box
-
-        def nop_callback(box, data):
-            pass
-
-        GIMarshallingTests.callback_owned_boxed(callback, None)
-        GIMarshallingTests.callback_owned_boxed(nop_callback, None)
-        self.assertEqual(self.box.long_, 1)
+        self.assertTrue(_object.worked == True)
 
 
 class TestMultiOutputArgs(unittest.TestCase):
@@ -2569,8 +1719,21 @@ class TestMultiOutputArgs(unittest.TestCase):
         self.assertEqual((6, 7), GIMarshallingTests.int_return_out())
 
 
+class TestGErrorException(unittest.TestCase):
+    def test_gerror_exception(self):
+        self.assertRaises(GObject.GError, GIMarshallingTests.gerror)
+        try:
+            GIMarshallingTests.gerror()
+        except Exception:
+            etype, e = sys.exc_info()[:2]
+            self.assertEqual(e.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+            self.assertEqual(e.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+            self.assertEqual(e.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+
+
 # Interface
 
+
 class TestInterfaces(unittest.TestCase):
 
     class TestInterfaceImpl(GObject.GObject, GIMarshallingTests.Interface):
@@ -2608,102 +1771,7 @@ class TestInterfaces(unittest.TestCase):
         GIMarshallingTests.test_interface_test_int8_in(instance, 42)
         self.assertEqual(instance.val, 42)
 
-    def test_subclass_override(self):
-        class TestInterfaceImplD(TestInterfaces.TestInterfaceImpl):
-            val2 = None
-
-            def do_test_int8_in(self, int8):
-                self.val2 = int8
-
-        instance = TestInterfaceImplD()
-        self.assertEqual(instance.val, None)
-        self.assertEqual(instance.val2, None)
-
-        GIMarshallingTests.test_interface_test_int8_in(instance, 42)
-        self.assertEqual(instance.val, None)
-        self.assertEqual(instance.val2, 42)
-
-    def test_type_mismatch(self):
-        obj = GIMarshallingTests.Object()
-
-        # wrong type for first argument: interface
-        enum = Gio.File.new_for_path('.').enumerate_children(
-            '', Gio.FileQueryInfoFlags.NONE, None)
-        try:
-            enum.next_file(obj)
-            self.fail('call with wrong type argument unexpectedly succeeded')
-        except TypeError as e:
-            # should have argument name
-            self.assertTrue('cancellable' in str(e), e)
-            # should have expected type
-            self.assertTrue('xpected Gio.Cancellable' in str(e), e)
-            # should have actual type
-            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
-
-        # wrong type for self argument: interface
-        try:
-            Gio.FileEnumerator.next_file(obj, None)
-            self.fail('call with wrong type argument unexpectedly succeeded')
-        except TypeError as e:
-            # should have argument name
-            self.assertTrue('self' in str(e), e)
-            # should have expected type
-            self.assertTrue('xpected Gio.FileEnumerator' in str(e), e)
-            # should have actual type
-            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
-
-        # wrong type for first argument: GObject
-        var = GLib.Variant('s', 'mystring')
-        action = Gio.SimpleAction.new('foo', var.get_type())
-        try:
-            action.activate(obj)
-            self.fail('call with wrong type argument unexpectedly succeeded')
-        except TypeError as e:
-            # should have argument name
-            self.assertTrue('parameter' in str(e), e)
-            # should have expected type
-            self.assertTrue('xpected GLib.Variant' in str(e), e)
-            # should have actual type
-            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
-
-        # wrong type for self argument: GObject
-        try:
-            Gio.SimpleAction.activate(obj, obj)
-            self.fail('call with wrong type argument unexpectedly succeeded')
-        except TypeError as e:
-            # should have argument name
-            self.assertTrue('self' in str(e), e)
-            # should have expected type
-            self.assertTrue('xpected Gio.Action' in str(e), e)
-            # should have actual type
-            self.assertTrue('GIMarshallingTests.Object' in str(e), e)
-
-
-class TestMRO(unittest.TestCase):
     def test_mro(self):
-        # check that our own MRO calculation matches what we would expect
-        # from Python's own C3 calculations
-        class A(object):
-            pass
-
-        class B(A):
-            pass
-
-        class C(A):
-            pass
-
-        class D(B, C):
-            pass
-
-        class E(D, GIMarshallingTests.Object):
-            pass
-
-        expected = (E, D, B, C, A, GIMarshallingTests.Object,
-                    GObject.Object, GObject.Object.__base__, gi._gi.GObject,
-                    object)
-        self.assertEqual(expected, E.__mro__)
-
-    def test_interface_collision(self):
         # there was a problem with Python bailing out because of
         # http://en.wikipedia.org/wiki/Diamond_problem with interfaces,
         # which shouldn't really be a problem.
@@ -2715,27 +1783,10 @@ class TestMRO(unittest.TestCase):
                                  TestInterfaceImpl):
             pass
 
-        class TestInterfaceImpl3(TestInterfaceImpl,
+        class TestInterfaceImpl3(self.TestInterfaceImpl,
                                  GIMarshallingTests.Interface2):
             pass
 
-    def test_old_style_mixin(self):
-        # Note: Old style classes don't exist in Python 3
-        class Mixin:
-            pass
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-
-            # Dynamically create a new gi based class with an old
-            # style mixin.
-            type('GIWithOldStyleMixin', (GIMarshallingTests.Object, Mixin), {})
-
-            if sys.version_info < (3, 0):
-                self.assertTrue(issubclass(warn[0].category, RuntimeWarning))
-            else:
-                self.assertEqual(len(warn), 0)
-
 
 class TestInterfaceClash(unittest.TestCase):
 
@@ -2792,13 +1843,7 @@ class TestOverrides(unittest.TestCase):
         self.assertTrue(isinstance(object_, GIMarshallingTests.OverridesObject))
 
     def test_module_name(self):
-        # overridden types
         self.assertEqual(GIMarshallingTests.OverridesStruct.__module__, 'gi.overrides.GIMarshallingTests')
-        self.assertEqual(GIMarshallingTests.OverridesObject.__module__, 'gi.overrides.GIMarshallingTests')
-        self.assertEqual(GObject.Object.__module__, 'gi.overrides.GObject')
-
-        # not overridden
-        self.assertEqual(GIMarshallingTests.SubObject.__module__, 'gi.repository.GIMarshallingTests')
         self.assertEqual(GObject.InitiallyUnowned.__module__, 'gi.repository.GObject')
 
 
@@ -2827,25 +1872,49 @@ class TestDir(unittest.TestCase):
         # self.assertTrue('DoNotImportDummyTests' in list)
 
 
-class TestParamSpec(unittest.TestCase):
-    # https://bugzilla.gnome.org/show_bug.cgi?id=682355
-    @unittest.expectedFailure
-    def test_param_spec_in_bool(self):
-        ps = GObject.param_spec_boolean('mybool', 'test-bool', 'boolblurb',
-                                        True, GObject.ParamFlags.READABLE)
-        GIMarshallingTests.param_spec_in_bool(ps)
+class TestGErrorArrayInCrash(unittest.TestCase):
+    # Previously there was a bug in invoke, in which C arrays were unwrapped
+    # from inside GArrays to be passed to the C function. But when a GError was
+    # set, invoke would attempt to free the C array as if it were a GArray.
+    # This crash is only for C arrays. It does not happen for C functions which
+    # take in GArrays. See https://bugzilla.gnome.org/show_bug.cgi?id=642708
+    def test_gerror_array_in_crash(self):
+        self.assertRaises(GObject.GError, GIMarshallingTests.gerror_array_in, [1, 2, 3])
+
 
-    def test_param_spec_return(self):
-        obj = GIMarshallingTests.param_spec_return()
-        self.assertEqual(obj.name, 'test-param')
-        self.assertEqual(obj.nick, 'test')
-        self.assertEqual(obj.value_type, GObject.TYPE_STRING)
+class TestGErrorOut(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_gerror_out(self):
+        error, debug = GIMarshallingTests.gerror_out()
 
-    def test_param_spec_out(self):
-        obj = GIMarshallingTests.param_spec_out()
-        self.assertEqual(obj.name, 'test-param')
-        self.assertEqual(obj.nick, 'test')
-        self.assertEqual(obj.value_type, GObject.TYPE_STRING)
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+        self.assertEqual(debug, GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE)
+
+
+class TestGErrorOutTransferNone(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_gerror_out_transfer_none(self):
+        error, debug = GIMarshallingTests.gerror_out_transfer_none()
+
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
+        self.assertEqual(GIMarshallingTests.CONSTANT_GERROR_DEBUG_MESSAGE, debug)
+
+
+class TestGErrorReturn(unittest.TestCase):
+    # See https://bugzilla.gnome.org/show_bug.cgi?id=666098
+    def test_return_gerror(self):
+        error = GIMarshallingTests.gerror_return()
+
+        self.assertIsInstance(error, GObject.GError)
+        self.assertEqual(error.domain, GIMarshallingTests.CONSTANT_GERROR_DOMAIN)
+        self.assertEqual(error.code, GIMarshallingTests.CONSTANT_GERROR_CODE)
+        self.assertEqual(error.message, GIMarshallingTests.CONSTANT_GERROR_MESSAGE)
 
 
 class TestKeywordArgs(unittest.TestCase):
@@ -2876,29 +1945,29 @@ class TestKeywordArgs(unittest.TestCase):
 
     def test_type_errors(self):
         # test too few args
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 arguments (0 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
                                  GIMarshallingTests.int_three_in_three_out)
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 arguments (1 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (1 given)",
                                  GIMarshallingTests.int_three_in_three_out, 1)
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 arguments (0 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
                                  GIMarshallingTests.int_three_in_three_out, *())
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 arguments (0 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (0 given)",
                                  GIMarshallingTests.int_three_in_three_out, *(), **{})
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 non-keyword arguments (0 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 non-keyword arguments (0 given)",
                                  GIMarshallingTests.int_three_in_three_out, *(), **{'c': 4})
 
         # test too many args
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 arguments (4 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 arguments (4 given)",
                                  GIMarshallingTests.int_three_in_three_out, *(1, 2, 3, 4))
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() takes exactly 3 non-keyword arguments (4 given)",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() takes exactly 3 non-keyword arguments (4 given)",
                                  GIMarshallingTests.int_three_in_three_out, *(1, 2, 3, 4), c=6)
 
         # test too many keyword args
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() got multiple values for keyword argument 'a'",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got multiple values for keyword argument 'a'",
                                  GIMarshallingTests.int_three_in_three_out, 1, 2, 3, **{'a': 4, 'b': 5})
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() got an unexpected keyword argument 'd'",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got an unexpected keyword argument 'd'",
                                  GIMarshallingTests.int_three_in_three_out, d=4)
-        self.assertRaisesMessage(TypeError, "GIMarshallingTests.int_three_in_three_out() got an unexpected keyword argument 'e'",
+        self.assertRaisesMessage(TypeError, "int_three_in_three_out() got an unexpected keyword argument 'e'",
                                  GIMarshallingTests.int_three_in_three_out, **{'e': 2})
 
     def test_kwargs_are_not_modified(self):
@@ -2907,283 +1976,70 @@ class TestKeywordArgs(unittest.TestCase):
         GIMarshallingTests.int_three_in_three_out(1, c=4, **d)
         self.assertEqual(d, d2)
 
-    @unittest.skipUnless(hasattr(GIMarshallingTests, 'int_one_in_utf8_two_in_one_allows_none'),
-                         'Requires newer GIMarshallingTests')
-    def test_allow_none_as_default(self):
-        GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none(1, 2, '3', '4')
-        GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none(1, 2, '3')
-        GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none(1, 2)
-        GIMarshallingTests.int_two_in_utf8_two_in_with_allow_none(1, 2, d='4')
-
-        GIMarshallingTests.array_in_utf8_two_in_out_of_order('1', [-1, 0, 1, 2])
-        GIMarshallingTests.array_in_utf8_two_in_out_of_order('1', [-1, 0, 1, 2], '2')
-        self.assertRaises(TypeError,
-                          GIMarshallingTests.array_in_utf8_two_in_out_of_order,
-                          [-1, 0, 1, 2], a='1')
-        self.assertRaises(TypeError,
-                          GIMarshallingTests.array_in_utf8_two_in_out_of_order,
-                          [-1, 0, 1, 2])
-
-        GIMarshallingTests.array_in_utf8_two_in([-1, 0, 1, 2], '1', '2')
-        GIMarshallingTests.array_in_utf8_two_in([-1, 0, 1, 2], '1')
-        GIMarshallingTests.array_in_utf8_two_in([-1, 0, 1, 2])
-        GIMarshallingTests.array_in_utf8_two_in([-1, 0, 1, 2], b='2')
-
-        GIMarshallingTests.int_one_in_utf8_two_in_one_allows_none(1, '2', '3')
-        self.assertRaises(TypeError,
-                          GIMarshallingTests.int_one_in_utf8_two_in_one_allows_none,
-                          1, '3')
-        self.assertRaises(TypeError,
-                          GIMarshallingTests.int_one_in_utf8_two_in_one_allows_none,
-                          1, c='3')
-
-
-class TestKeywords(unittest.TestCase):
-    def test_method(self):
-        # g_variant_print()
-        v = GLib.Variant('i', 1)
-        self.assertEqual(v.print_(False), '1')
-
-    def test_function(self):
-        # g_thread_yield()
-        self.assertEqual(GLib.Thread.yield_(), None)
-
-    def test_struct_method(self):
-        # g_timer_continue()
-        # we cannot currently instantiate GLib.Timer objects, so just ensure
-        # the method exists
-        self.assertTrue(callable(GLib.Timer.continue_))
-
-    def test_uppercase(self):
-        self.assertEqual(GLib.IOCondition.IN.value_nicks, ['in'])
-
-
-class TestModule(unittest.TestCase):
-    def test_path(self):
-        self.assertTrue(GIMarshallingTests.__path__.endswith('GIMarshallingTests-1.0.typelib'),
-                        GIMarshallingTests.__path__)
-
-    def test_str(self):
-        self.assertTrue("'GIMarshallingTests' from '" in str(GIMarshallingTests),
-                        str(GIMarshallingTests))
-
-    def test_dir(self):
-        _dir = dir(GIMarshallingTests)
-        self.assertGreater(len(_dir), 10)
-
-        self.assertTrue('SimpleStruct' in _dir)
-        self.assertTrue('Interface2' in _dir)
-        self.assertTrue('CONSTANT_GERROR_CODE' in _dir)
-        self.assertTrue('array_zero_terminated_inout' in _dir)
-
-        # assert that dir() does not contain garbage
-        for item_name in _dir:
-            item = getattr(GIMarshallingTests, item_name)
-            self.assertTrue(hasattr(item, '__class__'))
-
-    def test_help(self):
-        orig_stdout = sys.stdout
-        try:
-            if sys.version_info < (3, 0):
-                sys.stdout = BytesIO()
-            else:
-                sys.stdout = StringIO()
-            help(GIMarshallingTests)
-            output = sys.stdout.getvalue()
-        finally:
-            sys.stdout = orig_stdout
-
-        self.assertTrue('SimpleStruct' in output, output)
-        self.assertTrue('Interface2' in output, output)
-        self.assertTrue('method_array_inout' in output, output)
-
-
-class TestProjectVersion(unittest.TestCase):
-    def test_version_str(self):
-        self.assertGreater(gi.__version__, "3.")
-
-    def test_version_info(self):
-        self.assertEqual(len(gi.version_info), 3)
-        self.assertGreaterEqual(gi.version_info, (3, 3, 5))
-
-    def test_check_version(self):
-        self.assertRaises(ValueError, gi.check_version, (99, 0, 0))
-        self.assertRaises(ValueError, gi.check_version, "99.0.0")
-        gi.check_version((3, 3, 5))
-        gi.check_version("3.3.5")
-
-
-class TestGIWarning(unittest.TestCase):
-
-    def test_warning(self):
-        ignored_by_default = (DeprecationWarning, PendingDeprecationWarning,
-                              ImportWarning)
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            warnings.warn("test", PyGIWarning)
-            self.assertTrue(issubclass(warn[0].category, Warning))
-            # We don't want PyGIWarning get ignored by default
-            self.assertFalse(issubclass(warn[0].category, ignored_by_default))
-
-
-class TestDeprecation(unittest.TestCase):
-    def test_method(self):
-        d = GLib.Date.new()
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            d.set_time(1)
-            self.assertTrue(issubclass(warn[0].category, DeprecationWarning))
-            self.assertEqual(str(warn[0].message), "GLib.Date.set_time is deprecated")
-
-    def test_function(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GLib.strcasecmp("foo", "bar")
-            self.assertTrue(issubclass(warn[0].category, DeprecationWarning))
-            self.assertEqual(str(warn[0].message), "GLib.strcasecmp is deprecated")
-
-    def test_deprecated_attribute_compat(self):
-        # test if the deprecation descriptor behaves like an instance attribute
-
-        # save the descriptor
-        desc = type(GLib).__dict__["IO_STATUS_ERROR"]
-
-        # the descriptor raises AttributeError for itself
-        self.assertFalse(hasattr(type(GLib), "IO_STATUS_ERROR"))
-
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-            self.assertTrue(hasattr(GLib, "IO_STATUS_ERROR"))
 
-        try:
-            # check if replacing works
-            GLib.IO_STATUS_ERROR = "foo"
-            self.assertEqual(GLib.IO_STATUS_ERROR, "foo")
-        finally:
-            # restore descriptor
-            try:
-                del GLib.IO_STATUS_ERROR
-            except AttributeError:
-                pass
-            setattr(type(GLib), "IO_STATUS_ERROR", desc)
+class TestPropertiesObject(unittest.TestCase):
 
-        try:
-            # check if deleting works
-            del GLib.IO_STATUS_ERROR
-            self.assertFalse(hasattr(GLib, "IO_STATUS_ERROR"))
-        finally:
-            # restore descriptor
-            try:
-                del GLib.IO_STATUS_ERROR
-            except AttributeError:
-                pass
-            setattr(type(GLib), "IO_STATUS_ERROR", desc)
-
-    def test_deprecated_attribute_warning(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            self.assertEqual(GLib.IO_STATUS_ERROR, GLib.IOStatus.ERROR)
-            GLib.IO_STATUS_ERROR
-            GLib.IO_STATUS_ERROR
-            self.assertEqual(len(warn), 3)
-            self.assertTrue(
-                issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(
-                str(warn[0].message),
-                ".*GLib.IO_STATUS_ERROR.*GLib.IOStatus.ERROR.*")
-
-    def test_deprecated_attribute_warning_coverage(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GObject.markup_escape_text
-            GObject.PRIORITY_DEFAULT
-            GObject.GError
-            GObject.PARAM_CONSTRUCT
-            GObject.SIGNAL_ACTION
-            GObject.property
-            GObject.IO_STATUS_ERROR
-            GObject.G_MAXUINT64
-            GLib.IO_STATUS_ERROR
-            GLib.SPAWN_SEARCH_PATH
-            GLib.OPTION_FLAG_HIDDEN
-            GLib.IO_FLAG_IS_WRITEABLE
-            GLib.IO_FLAG_NONBLOCK
-            GLib.USER_DIRECTORY_DESKTOP
-            GLib.OPTION_ERROR_BAD_VALUE
-            GLib.glib_version
-            GLib.pyglib_version
-            self.assertEqual(len(warn), 17)
-
-    def test_deprecated_init_no_keywords(self):
-        def init(self, **kwargs):
-            self.assertDictEqual(kwargs, {'a': 1, 'b': 2, 'c': 3})
-
-        fn = gi.overrides.deprecated_init(init, arg_names=('a', 'b', 'c'))
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            fn(self, 1, 2, 3)
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*keyword.*a, b, c.*')
-
-    def test_deprecated_init_no_keywords_out_of_order(self):
-        def init(self, **kwargs):
-            self.assertDictEqual(kwargs, {'a': 1, 'b': 2, 'c': 3})
-
-        fn = gi.overrides.deprecated_init(init, arg_names=('b', 'a', 'c'))
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            fn(self, 2, 1, 3)
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*keyword.*b, a, c.*')
-
-    def test_deprecated_init_ignored_keyword(self):
-        def init(self, **kwargs):
-            self.assertDictEqual(kwargs, {'a': 1, 'c': 3})
-
-        fn = gi.overrides.deprecated_init(init,
-                                          arg_names=('a', 'b', 'c'),
-                                          ignore=('b',))
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            fn(self, 1, 2, 3)
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*keyword.*a, b, c.*')
-
-    def test_deprecated_init_with_aliases(self):
-        def init(self, **kwargs):
-            self.assertDictEqual(kwargs, {'a': 1, 'b': 2, 'c': 3})
-
-        fn = gi.overrides.deprecated_init(init,
-                                          arg_names=('a', 'b', 'c'),
-                                          deprecated_aliases={'b': 'bb', 'c': 'cc'})
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-
-            fn(self, a=1, bb=2, cc=3)
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*keyword.*"bb, cc".*deprecated.*"b, c" respectively')
-
-    def test_deprecated_init_with_defaults(self):
-        def init(self, **kwargs):
-            self.assertDictEqual(kwargs, {'a': 1, 'b': 2, 'c': 3})
-
-        fn = gi.overrides.deprecated_init(init,
-                                          arg_names=('a', 'b', 'c'),
-                                          deprecated_defaults={'b': 2, 'c': 3})
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            fn(self, a=1)
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*relying on deprecated non-standard defaults.*'
-                                     'explicitly use: b=2, c=3')
+    def setUp(self):
+        self.obj = GIMarshallingTests.PropertiesObject()
+
+    def test_boolean(self):
+        self.assertEqual(self.obj.props.some_boolean, False)
+        self.obj.props.some_boolean = True
+        self.assertEqual(self.obj.props.some_boolean, True)
+
+    @unittest.expectedFailure
+    def test_char(self):
+        # gobject-introspection thinks it has a guint8 type tag, which is
+        # wrong; this will raise an assertion critical which we need to ignore
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_WARNING | GLib.LogLevelFlags.LEVEL_ERROR)
+        self.assertEqual(self.obj.props.some_char, 0)
+        self.obj.props.some_char = GObject.G_MAXINT8
+        self.assertEqual(self.obj.props.some_char, GObject.G_MAXINT8)
+
+        GLib.log_set_always_fatal(old_mask)
+
+    def test_uchar(self):
+        self.assertEqual(self.obj.props.some_uchar, 0)
+        self.obj.props.some_uchar = GObject.G_MAXUINT8
+        self.assertEqual(self.obj.props.some_uchar, GObject.G_MAXUINT8)
+
+    def test_int(self):
+        self.assertEqual(self.obj.props.some_int, 0)
+        self.obj.props.some_int = GObject.G_MAXINT
+        self.assertEqual(self.obj.props.some_int, GObject.G_MAXINT)
+
+    def test_uint(self):
+        self.assertEqual(self.obj.props.some_uint, 0)
+        self.obj.props.some_uint = GObject.G_MAXUINT
+        self.assertEqual(self.obj.props.some_uint, GObject.G_MAXUINT)
+
+    def test_long(self):
+        self.assertEqual(self.obj.props.some_long, 0)
+        self.obj.props.some_long = GObject.G_MAXLONG
+        self.assertEqual(self.obj.props.some_long, GObject.G_MAXLONG)
+
+    def test_ulong(self):
+        self.assertEqual(self.obj.props.some_ulong, 0)
+        self.obj.props.some_ulong = GObject.G_MAXULONG
+        self.assertEqual(self.obj.props.some_ulong, GObject.G_MAXULONG)
+
+    def test_int64(self):
+        self.assertEqual(self.obj.props.some_int64, 0)
+        self.obj.props.some_int64 = GObject.G_MAXINT64
+        self.assertEqual(self.obj.props.some_int64, GObject.G_MAXINT64)
+
+    def test_uint64(self):
+        self.assertEqual(self.obj.props.some_uint64, 0)
+        self.obj.props.some_uint64 = GObject.G_MAXUINT64
+        self.assertEqual(self.obj.props.some_uint64, GObject.G_MAXUINT64)
+
+    def test_float(self):
+        self.assertEqual(self.obj.props.some_float, 0)
+        self.obj.props.some_float = GObject.G_MAXFLOAT
+        self.assertEqual(self.obj.props.some_float, GObject.G_MAXFLOAT)
+
+    def test_double(self):
+        self.assertEqual(self.obj.props.some_double, 0)
+        self.obj.props.some_double = GObject.G_MAXDOUBLE
+        self.assertEqual(self.obj.props.some_double, GObject.G_MAXDOUBLE)
diff --git a/tests/test_gio.py b/tests/test_gio.py
deleted file mode 100644 (file)
index c7239ce..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import os
-import unittest
-import warnings
-
-import gi.overrides
-from gi import PyGIWarning
-from gi.repository import GLib, Gio
-
-from helper import ignore_gi_deprecation_warnings
-
-
-class TestGio(unittest.TestCase):
-    def test_file_enumerator(self):
-        self.assertEqual(Gio.FileEnumerator, gi.overrides.Gio.FileEnumerator)
-        f = Gio.file_new_for_path("./")
-
-        iter_info = []
-        for info in f.enumerate_children("standard::*", 0, None):
-            iter_info.append(info.get_name())
-
-        next_info = []
-        enumerator = f.enumerate_children("standard::*", 0, None)
-        while True:
-            info = enumerator.next_file(None)
-            if info is None:
-                break
-            next_info.append(info.get_name())
-
-        self.assertEqual(iter_info, next_info)
-
-    def test_menu_item(self):
-        menu = Gio.Menu()
-        item = Gio.MenuItem()
-        item.set_attribute([("label", "s", "Test"),
-                            ("action", "s", "app.test")])
-        menu.append_item(item)
-        value = menu.get_item_attribute_value(0, "label", GLib.VariantType.new("s"))
-        self.assertEqual("Test", value.unpack())
-        value = menu.get_item_attribute_value(0, "action", GLib.VariantType.new("s"))
-        self.assertEqual("app.test", value.unpack())
-
-    def test_volume_monitor_warning(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            Gio.VolumeMonitor()
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*Gio\\.VolumeMonitor\\.get\\(\\).*')
-
-
-class TestGSettings(unittest.TestCase):
-    def setUp(self):
-        self.settings = Gio.Settings.new('org.gnome.test')
-        # we change the values in the tests, so set them to predictable start
-        # value
-        self.settings.reset('test-string')
-        self.settings.reset('test-array')
-        self.settings.reset('test-boolean')
-        self.settings.reset('test-enum')
-
-    def test_native(self):
-        self.assertTrue('test-array' in self.settings.list_keys())
-
-        # get various types
-        v = self.settings.get_value('test-boolean')
-        self.assertEqual(v.get_boolean(), True)
-        self.assertEqual(self.settings.get_boolean('test-boolean'), True)
-
-        v = self.settings.get_value('test-string')
-        self.assertEqual(v.get_string(), 'Hello')
-        self.assertEqual(self.settings.get_string('test-string'), 'Hello')
-
-        v = self.settings.get_value('test-array')
-        self.assertEqual(v.unpack(), [1, 2])
-
-        v = self.settings.get_value('test-tuple')
-        self.assertEqual(v.unpack(), (1, 2))
-
-        # set a value
-        self.settings.set_string('test-string', 'World')
-        self.assertEqual(self.settings.get_string('test-string'), 'World')
-
-        self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
-        self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
-
-    def test_constructor(self):
-        # default constructor uses path from schema
-        self.assertEqual(self.settings.get_property('path'), '/tests/')
-
-        # optional constructor arguments
-        with_path = Gio.Settings.new_with_path('org.gnome.nopathtest', '/mypath/')
-        self.assertEqual(with_path.get_property('path'), '/mypath/')
-        self.assertEqual(with_path['np-int'], 42)
-
-    def test_dictionary_api(self):
-        self.assertEqual(len(self.settings), 5)
-        self.assertTrue('test-array' in self.settings)
-        self.assertTrue('test-array' in self.settings.keys())
-        self.assertFalse('nonexisting' in self.settings)
-        self.assertFalse(4 in self.settings)
-        self.assertEqual(bool(self.settings), True)
-
-    def test_get(self):
-        self.assertEqual(self.settings['test-boolean'], True)
-        self.assertEqual(self.settings['test-string'], 'Hello')
-        self.assertEqual(self.settings['test-enum'], 'banana')
-        self.assertEqual(self.settings['test-array'], [1, 2])
-        self.assertEqual(self.settings['test-tuple'], (1, 2))
-
-        self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
-        self.assertRaises(KeyError, self.settings.__getitem__, 2)
-
-    def test_set(self):
-        self.settings['test-boolean'] = False
-        self.assertEqual(self.settings['test-boolean'], False)
-        self.settings['test-string'] = 'Goodbye'
-        self.assertEqual(self.settings['test-string'], 'Goodbye')
-        self.settings['test-array'] = [3, 4, 5]
-        self.assertEqual(self.settings['test-array'], [3, 4, 5])
-        self.settings['test-enum'] = 'pear'
-        self.assertEqual(self.settings['test-enum'], 'pear')
-
-        self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
-        self.assertRaises(ValueError, self.settings.__setitem__, 'test-enum', 'plum')
-        self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
-
-    def test_empty(self):
-        empty = Gio.Settings.new_with_path('org.gnome.empty', '/tests/')
-        self.assertEqual(len(empty), 0)
-        self.assertEqual(bool(empty), True)
-        self.assertEqual(empty.keys(), [])
-
-    @ignore_gi_deprecation_warnings
-    def test_change_event(self):
-        changed_log = []
-        change_event_log = []
-
-        def on_changed(settings, key):
-            changed_log.append((settings, key))
-
-        def on_change_event(settings, keys, n_keys):
-            change_event_log.append((settings, keys, n_keys))
-
-        self.settings.connect('changed', on_changed)
-        self.settings.connect('change-event', on_change_event)
-        self.settings['test-string'] = 'Moo'
-        self.assertEqual(changed_log, [(self.settings, 'test-string')])
-        self.assertEqual(change_event_log, [(self.settings,
-                                             [GLib.quark_from_static_string('test-string')],
-                                             1)])
-
-
-@unittest.skipIf(os.name == "nt", "FIXME")
-class TestGFile(unittest.TestCase):
-    def setUp(self):
-        self.file, self.io_stream = Gio.File.new_tmp('TestGFile.XXXXXX')
-
-    def tearDown(self):
-        try:
-            self.file.delete(None)
-            # test_delete and test_delete_async already remove it
-        except GLib.GError:
-            pass
-
-    def test_replace_contents(self):
-        content = b'hello\0world\x7F!'
-        succ, etag = self.file.replace_contents(content, None, False,
-                                                Gio.FileCreateFlags.NONE, None)
-        new_succ, new_content, new_etag = self.file.load_contents(None)
-
-        self.assertTrue(succ)
-        self.assertTrue(new_succ)
-        self.assertEqual(etag, new_etag)
-        self.assertEqual(content, new_content)
-
-    # https://bugzilla.gnome.org/show_bug.cgi?id=690525
-    def disabled_test_replace_contents_async(self):
-        content = b''.join(bytes(chr(i), 'utf-8') for i in range(128))
-
-        def callback(f, result, d):
-            # Quit so in case of failed assertations loop doesn't keep running.
-            main_loop.quit()
-            succ, etag = self.file.replace_contents_finish(result)
-            new_succ, new_content, new_etag = self.file.load_contents(None)
-            d['succ'], d['etag'] = self.file.replace_contents_finish(result)
-            load = self.file.load_contents(None)
-            d['new_succ'], d['new_content'], d['new_etag'] = load
-
-        data = {}
-        self.file.replace_contents_async(content, None, False,
-                                         Gio.FileCreateFlags.NONE, None,
-                                         callback, data)
-        main_loop = GLib.MainLoop()
-        main_loop.run()
-        self.assertTrue(data['succ'])
-        self.assertTrue(data['new_succ'])
-        self.assertEqual(data['etag'], data['new_etag'])
-        self.assertEqual(content, data['new_content'])
-
-    def test_tmp_exists(self):
-        # A simple test to check if Gio.File.new_tmp is working correctly.
-        self.assertTrue(self.file.query_exists(None))
-
-    def test_delete(self):
-        self.file.delete(None)
-        self.assertFalse(self.file.query_exists(None))
-
-    def test_delete_async(self):
-        def callback(f, result, data):
-            main_loop.quit()
-
-        self.file.delete_async(0, None, callback, None)
-        main_loop = GLib.MainLoop()
-        main_loop.run()
-        self.assertFalse(self.file.query_exists(None))
-
-
-@unittest.skipIf(os.name == "nt", "crashes on Windows")
-class TestGApplication(unittest.TestCase):
-    def test_command_line(self):
-        class App(Gio.Application):
-            args = None
-
-            def __init__(self):
-                super(App, self).__init__(flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE)
-
-            def do_command_line(self, cmdline):
-                self.args = cmdline.get_arguments()
-                return 42
-
-        app = App()
-        res = app.run(['spam', 'eggs'])
-
-        self.assertEqual(res, 42)
-        self.assertSequenceEqual(app.args, ['spam', 'eggs'])
-
-    def test_local_command_line(self):
-        class App(Gio.Application):
-            local_args = None
-
-            def __init__(self):
-                super(App, self).__init__(flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE)
-
-            def do_local_command_line(self, args):
-                self.local_args = args[:]  # copy
-                args.remove('eggs')
-
-                # True skips do_command_line being called.
-                return True, args, 42
-
-        app = App()
-        res = app.run(['spam', 'eggs'])
-
-        self.assertEqual(res, 42)
-        self.assertSequenceEqual(app.local_args, ['spam', 'eggs'])
-
-    def test_local_and_remote_command_line(self):
-        class App(Gio.Application):
-            args = None
-            local_args = None
-
-            def __init__(self):
-                super(App, self).__init__(flags=Gio.ApplicationFlags.HANDLES_COMMAND_LINE)
-
-            def do_command_line(self, cmdline):
-                self.args = cmdline.get_arguments()
-                return 42
-
-            def do_local_command_line(self, args):
-                self.local_args = args[:]  # copy
-                args.remove('eggs')
-
-                # False causes do_command_line to be called with args.
-                return False, args, 0
-
-        app = App()
-        res = app.run(['spam', 'eggs'])
-
-        self.assertEqual(res, 42)
-        self.assertSequenceEqual(app.args, ['spam'])
-        self.assertSequenceEqual(app.local_args, ['spam', 'eggs'])
-
-    @unittest.skipUnless(hasattr(Gio.Application, 'add_main_option'),
-                         'Requires newer version of GLib')
-    def test_add_main_option(self):
-        stored_options = []
-
-        def on_handle_local_options(app, options):
-            stored_options.append(options)
-            return 0  # Return 0 if options have been handled
-
-        def on_activate(app):
-            pass
-
-        app = Gio.Application()
-        app.add_main_option(long_name='string',
-                            short_name=b's',
-                            flags=0,
-                            arg=GLib.OptionArg.STRING,
-                            description='some string')
-
-        app.connect('activate', on_activate)
-        app.connect('handle-local-options', on_handle_local_options)
-        app.run(['app', '-s', 'test string'])
-
-        self.assertEqual(len(stored_options), 1)
-        options = stored_options[0]
-        self.assertTrue(options.contains('string'))
-        self.assertEqual(options.lookup_value('string').unpack(),
-                         'test string')
diff --git a/tests/test_glib.py b/tests/test_glib.py
deleted file mode 100644 (file)
index 78366a9..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-# -*- Mode: Python -*-
-# encoding: UTF-8
-
-import os
-import sys
-import unittest
-import os.path
-import warnings
-import subprocess
-
-from gi.repository import GLib
-from gi import PyGIDeprecationWarning
-
-
-class TestGLib(unittest.TestCase):
-
-    @unittest.skipIf(os.name == "nt", "no bash on Windows")
-    def test_find_program_in_path(self):
-        bash_path = GLib.find_program_in_path('bash')
-        self.assertTrue(bash_path.endswith(os.path.sep + 'bash'))
-        self.assertTrue(os.path.exists(bash_path))
-
-        self.assertEqual(GLib.find_program_in_path('non existing'), None)
-
-    def test_markup_escape_text(self):
-        self.assertEqual(GLib.markup_escape_text(u'a&bä'), 'a&amp;bä')
-        self.assertEqual(GLib.markup_escape_text(b'a&b\x05'), 'a&amp;b&#x5;')
-
-        # with explicit length argument
-        self.assertEqual(GLib.markup_escape_text(b'a\x05\x01\x02', 2), 'a&#x5;')
-
-    def test_progname(self):
-        GLib.set_prgname('moo')
-        self.assertEqual(GLib.get_prgname(), 'moo')
-
-    def test_appname(self):
-        GLib.set_application_name('moo')
-        self.assertEqual(GLib.get_application_name(), 'moo')
-
-    def test_xdg_dirs(self):
-        d = GLib.get_user_data_dir()
-        self.assertTrue(os.path.sep in d, d)
-        d = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP)
-        self.assertTrue(os.path.sep in d, d)
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            # also works with backwards compatible enum names
-            self.assertEqual(GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC),
-                             GLib.get_user_special_dir(GLib.USER_DIRECTORY_MUSIC))
-
-        for d in GLib.get_system_config_dirs():
-            self.assertTrue(os.path.sep in d, d)
-        for d in GLib.get_system_data_dirs():
-            self.assertTrue(isinstance(d, str), d)
-
-    def test_main_depth(self):
-        self.assertEqual(GLib.main_depth(), 0)
-
-    def test_filenames(self):
-        self.assertEqual(GLib.filename_display_name('foo'), 'foo')
-        self.assertEqual(GLib.filename_display_basename('bar/foo'), 'foo')
-
-        # this is locale dependent, so we cannot completely verify the result
-        res = GLib.filename_from_utf8(u'aäb')
-        self.assertTrue(isinstance(res, bytes))
-        self.assertGreaterEqual(len(res), 3)
-
-        # with explicit length argument
-        self.assertEqual(GLib.filename_from_utf8(u'aäb', 1), b'a')
-
-    def test_uri_extract(self):
-        res = GLib.uri_list_extract_uris('''# some comment
-http://example.com
-https://my.org/q?x=1&y=2
-            http://gnome.org/new''')
-        self.assertEqual(res, ['http://example.com',
-                               'https://my.org/q?x=1&y=2',
-                               'http://gnome.org/new'])
-
-    def test_current_time(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            tm = GLib.get_current_time()
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        self.assertTrue(isinstance(tm, float))
-        self.assertGreater(tm, 1350000000.0)
-
-    @unittest.skipIf(sys.platform == "darwin", "fails on OSX")
-    def test_main_loop(self):
-        # note we do not test run() here, as we use this in countless other
-        # tests
-        ml = GLib.MainLoop()
-        self.assertFalse(ml.is_running())
-
-        context = ml.get_context()
-        self.assertEqual(context, GLib.MainContext.default())
-        self.assertTrue(context.is_owner() in [True, False])
-        self.assertTrue(context.pending() in [True, False])
-        self.assertFalse(context.iteration(False))
-
-    def test_main_loop_with_context(self):
-        context = GLib.MainContext()
-        ml = GLib.MainLoop(context)
-        self.assertFalse(ml.is_running())
-        self.assertEqual(ml.get_context(), context)
-
-    def test_main_context(self):
-        # constructor
-        context = GLib.MainContext()
-        self.assertTrue(context.is_owner() in [True, False])
-        self.assertFalse(context.pending())
-        self.assertFalse(context.iteration(False))
-
-        # GLib API
-        context = GLib.MainContext.default()
-        self.assertTrue(context.is_owner() in [True, False])
-        self.assertTrue(context.pending() in [True, False])
-        self.assertTrue(context.iteration(False) in [True, False])
-
-        # backwards compatible API
-        context = GLib.main_context_default()
-        self.assertTrue(context.is_owner() in [True, False])
-        self.assertTrue(context.pending() in [True, False])
-        self.assertTrue(context.iteration(False) in [True, False])
-
-    @unittest.skipIf(os.name == "nt", "hangs")
-    def test_io_add_watch_no_data(self):
-        (r, w) = os.pipe()
-        call_data = []
-
-        def cb(fd, condition):
-            call_data.append((fd, condition, os.read(fd, 1)))
-            if len(call_data) == 2:
-                ml.quit()
-            return True
-
-        # io_add_watch() takes an IOChannel, calling with an fd is deprecated
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GLib.io_add_watch(r, GLib.IOCondition.IN, cb,
-                              priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        ml = GLib.MainLoop()
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(call_data, [(r, GLib.IOCondition.IN, b'a'),
-                                     (r, GLib.IOCondition.IN, b'b')])
-
-    @unittest.skipIf(os.name == "nt", "hangs")
-    def test_io_add_watch_with_data(self):
-        (r, w) = os.pipe()
-        call_data = []
-
-        def cb(fd, condition, data):
-            call_data.append((fd, condition, os.read(fd, 1), data))
-            if len(call_data) == 2:
-                ml.quit()
-            return True
-
-        # io_add_watch() takes an IOChannel, calling with an fd is deprecated
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GLib.io_add_watch(r, GLib.IOCondition.IN, cb, 'moo',
-                              priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        ml = GLib.MainLoop()
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(call_data, [(r, GLib.IOCondition.IN, b'a', 'moo'),
-                                     (r, GLib.IOCondition.IN, b'b', 'moo')])
-
-    @unittest.skipIf(os.name == "nt", "hangs")
-    def test_io_add_watch_with_multiple_data(self):
-        (r, w) = os.pipe()
-        call_data = []
-
-        def cb(fd, condition, *user_data):
-            call_data.append((fd, condition, os.read(fd, 1), user_data))
-            ml.quit()
-            return True
-
-        # io_add_watch() takes an IOChannel, calling with an fd is deprecated
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GLib.io_add_watch(r, GLib.IOCondition.IN, cb, 'moo', 'foo')
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        ml = GLib.MainLoop()
-        GLib.idle_add(lambda: os.write(w, b'a') and False)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(call_data, [(r, GLib.IOCondition.IN, b'a', ('moo', 'foo'))])
-
-    @unittest.skipIf(os.name == "nt", "no shell on Windows")
-    def test_io_add_watch_pyfile(self):
-        call_data = []
-
-        cmd = subprocess.Popen('echo hello; echo world',
-                               shell=True, bufsize=0, stdout=subprocess.PIPE)
-
-        def cb(file, condition):
-            call_data.append((file, condition, file.readline()))
-            if len(call_data) == 2:
-                # avoid having to wait for the full timeout
-                ml.quit()
-            return True
-
-        # io_add_watch() takes an IOChannel, calling with a Python file is deprecated
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            GLib.io_add_watch(cmd.stdout, GLib.IOCondition.IN, cb)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        ml = GLib.MainLoop()
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        cmd.wait()
-
-        self.assertEqual(call_data, [(cmd.stdout, GLib.IOCondition.IN, b'hello\n'),
-                                     (cmd.stdout, GLib.IOCondition.IN, b'world\n')])
-
-    def test_glib_version(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            (major, minor, micro) = GLib.glib_version
-            self.assertGreaterEqual(major, 2)
-            self.assertGreaterEqual(minor, 0)
-            self.assertGreaterEqual(micro, 0)
-
-    def test_pyglib_version(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            (major, minor, micro) = GLib.pyglib_version
-            self.assertGreaterEqual(major, 3)
-            self.assertGreaterEqual(minor, 0)
-            self.assertGreaterEqual(micro, 0)
-
-    def test_timezone_constructor(self):
-        timezone = GLib.TimeZone("+05:21")
-        self.assertEqual(timezone.get_offset(0), ((5 * 60) + 21) * 60)
-
-    def test_source_attach_implicit_context(self):
-        context = GLib.MainContext.default()
-        source = GLib.Idle()
-        source_id = source.attach()
-        self.assertEqual(context, source.get_context())
-        self.assertTrue(GLib.Source.remove(source_id))
index c380d72..5a4284e 100644 (file)
 # -*- Mode: Python -*-
 
-import sys
-import gc
 import unittest
-import warnings
-
-from gi.repository import GObject, GLib
-from gi import PyGIDeprecationWarning
-from gi.module import get_introspection_module
-from gi import _gi
 
+from gi.repository import GObject
+import sys
 import testhelper
 
 
 class TestGObjectAPI(unittest.TestCase):
+    def testGObjectModule(self):
+        obj = GObject.GObject()
 
-    def test_call_method_uninitialized_instance(self):
-        obj = GObject.Object.__new__(GObject.Object)
-        with self.assertRaisesRegex(RuntimeError, '.*is not initialized'):
-            obj.notify("foo")
-
-    def test_gobject_inheritance(self):
-        # GObject.Object is a class hierarchy as follows:
-        # overrides.Object -> introspection.Object -> static.GObject
-        GIObjectModule = get_introspection_module('GObject')
-        self.assertTrue(issubclass(GObject.Object, GIObjectModule.Object))
-        self.assertTrue(issubclass(GIObjectModule.Object, _gi.GObject))
-
-        self.assertEqual(_gi.GObject.__gtype__, GObject.TYPE_OBJECT)
-        self.assertEqual(GIObjectModule.Object.__gtype__, GObject.TYPE_OBJECT)
-        self.assertEqual(GObject.Object.__gtype__, GObject.TYPE_OBJECT)
-
-        # The pytype wrapper should hold the outer most Object class from overrides.
-        self.assertEqual(GObject.TYPE_OBJECT.pytype, GObject.Object)
-
-    def test_gobject_unsupported_overrides(self):
-        obj = GObject.Object()
-
-        with self.assertRaisesRegex(RuntimeError, 'Data access methods are unsupported.*'):
-            obj.get_data()
-
-        with self.assertRaisesRegex(RuntimeError, 'This method is currently unsupported.*'):
-            obj.force_floating()
-
-    def test_compat_api(self):
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter('always')
-            # GObject formerly exposed a lot of GLib's functions
-            self.assertEqual(GObject.markup_escape_text('foo'), 'foo')
-
-            ml = GObject.MainLoop()
-            self.assertFalse(ml.is_running())
-
-            context = GObject.main_context_default()
-            self.assertTrue(context.pending() in [False, True])
-
-            context = GObject.MainContext()
-            self.assertFalse(context.pending())
-
-            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
-            self.assertTrue('GLib.markup_escape_text' in str(w[0]), str(w[0]))
-
-            self.assertLess(GObject.PRIORITY_HIGH, GObject.PRIORITY_DEFAULT)
-
-    def test_min_max_int(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            self.assertEqual(GObject.G_MAXINT16, 2 ** 15 - 1)
-            self.assertEqual(GObject.G_MININT16, -2 ** 15)
-            self.assertEqual(GObject.G_MAXUINT16, 2 ** 16 - 1)
-
-            self.assertEqual(GObject.G_MAXINT32, 2 ** 31 - 1)
-            self.assertEqual(GObject.G_MININT32, -2 ** 31)
-            self.assertEqual(GObject.G_MAXUINT32, 2 ** 32 - 1)
-
-            self.assertEqual(GObject.G_MAXINT64, 2 ** 63 - 1)
-            self.assertEqual(GObject.G_MININT64, -2 ** 63)
-            self.assertEqual(GObject.G_MAXUINT64, 2 ** 64 - 1)
+        self.assertEqual(obj.__module__,
+                          'gi._gobject._gobject')
 
 
 class TestReferenceCounting(unittest.TestCase):
-    def test_regular_object(self):
+    def testRegularObject(self):
         obj = GObject.GObject()
         self.assertEqual(obj.__grefcount__, 1)
 
         obj = GObject.new(GObject.GObject)
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_floating(self):
+    def testFloating(self):
         obj = testhelper.Floating()
         self.assertEqual(obj.__grefcount__, 1)
 
         obj = GObject.new(testhelper.Floating)
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_owned_by_library(self):
+    def testOwnedByLibrary(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
@@ -108,7 +43,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_owned_by_library_out_of_scope(self):
+    def testOwnedByLibraryOutOfScope(self):
         obj = testhelper.OwnedByLibrary()
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -126,7 +61,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_owned_by_library_using_gobject_new(self):
+    def testOwnedByLibraryUsingGObjectNew(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
@@ -139,7 +74,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_owned_by_library_out_of_scope_using_gobject_new(self):
+    def testOwnedByLibraryOutOfScopeUsingGobjectNew(self):
         obj = GObject.new(testhelper.OwnedByLibrary)
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -157,7 +92,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_floating_and_sunk(self):
+    def testFloatingAndSunk(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
@@ -170,7 +105,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_floating_and_sunk_out_of_scope(self):
+    def testFloatingAndSunkOutOfScope(self):
         obj = testhelper.FloatingAndSunk()
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -188,7 +123,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_floating_and_sunk_using_gobject_new(self):
+    def testFloatingAndSunkUsingGObjectNew(self):
         # Upon creation, the refcount of the object should be 2:
         # - someone already has a reference on the new object.
         # - the python wrapper should hold its own reference.
@@ -201,7 +136,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_floating_and_sunk_out_of_scope_using_gobject_new(self):
+    def testFloatingAndSunkOutOfScopeUsingGObjectNew(self):
         obj = GObject.new(testhelper.FloatingAndSunk)
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -219,7 +154,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def test_uninitialized_object(self):
+    def testUninitializedObject(self):
         class Obj(GObject.GObject):
             def __init__(self):
                 x = self.__grefcount__
@@ -240,19 +175,19 @@ class TestPythonReferenceCounting(unittest.TestCase):
     # Newly created instances should alwayshave two references: one for
     # the GC, and one for the bound variable in the local scope.
 
-    def test_new_instance_has_two_refs(self):
+    def testNewInstanceHasTwoRefs(self):
         obj = GObject.GObject()
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def test_new_instance_has_two_refs_using_gobject_new(self):
+    def testNewInstanceHasTwoRefsUsingGObjectNew(self):
         obj = GObject.new(GObject.GObject)
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def test_new_subclass_instance_has_two_refs(self):
+    def testNewSubclassInstanceHasTwoRefs(self):
         obj = A()
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def test_new_subclass_instance_has_two_refs_using_gobject_new(self):
+    def testNewSubclassInstanceHasTwoRefsUsingGObjectNew(self):
         obj = GObject.new(A)
         self.assertEqual(sys.getrefcount(obj), 2)
 
@@ -270,7 +205,7 @@ class TestContextManagers(unittest.TestCase):
         self.obj = self.ContextTestObject()
         self.handler = self.obj.connect('notify::prop', self.on_prop_set)
 
-    def test_freeze_notify_context(self):
+    def testFreezeNotifyContext(self):
         # Verify prop tracking list
         self.assertEqual(self.tracking, [])
         self.obj.props.prop = 1
@@ -279,28 +214,22 @@ class TestContextManagers(unittest.TestCase):
         self.assertEqual(self.tracking, [1, 2])
         self.assertEqual(self.obj.__grefcount__, 1)
 
-        pyref_count = sys.getrefcount(self.obj)
-
-        # Using the context manager the tracking list should not be affected.
-        # The GObject reference count should stay the same and the python
-        # object ref-count should go up.
+        # Using the context manager the tracking list should not be affected
+        # and the GObject reference count should go up.
         with self.obj.freeze_notify():
-            self.assertEqual(self.obj.__grefcount__, 1)
-            self.assertEqual(sys.getrefcount(self.obj), pyref_count + 1)
+            self.assertEqual(self.obj.__grefcount__, 2)
             self.obj.props.prop = 3
             self.assertEqual(self.obj.props.prop, 3)
             self.assertEqual(self.tracking, [1, 2])
 
         # After the context manager, the prop should have been modified,
-        # the tracking list will be modified, and the python object ref
+        # the tracking list will be modified, and the GObject ref
         # count goes back down.
-        gc.collect()
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [1, 2, 3])
         self.assertEqual(self.obj.__grefcount__, 1)
-        self.assertEqual(sys.getrefcount(self.obj), pyref_count)
 
-    def test_handler_block_context(self):
+    def testHandlerBlockContext(self):
         # Verify prop tracking list
         self.assertEqual(self.tracking, [])
         self.obj.props.prop = 1
@@ -309,14 +238,10 @@ class TestContextManagers(unittest.TestCase):
         self.assertEqual(self.tracking, [1, 2])
         self.assertEqual(self.obj.__grefcount__, 1)
 
-        pyref_count = sys.getrefcount(self.obj)
-
-        # Using the context manager the tracking list should not be affected.
-        # The GObject reference count should stay the same and the python
-        # object ref-count should go up.
+        # Using the context manager the tracking list should not be affected
+        # and the GObject reference count should go up.
         with self.obj.handler_block(self.handler):
-            self.assertEqual(self.obj.__grefcount__, 1)
-            self.assertEqual(sys.getrefcount(self.obj), pyref_count + 1)
+            self.assertEqual(self.obj.__grefcount__, 2)
             self.obj.props.prop = 3
             self.assertEqual(self.obj.props.prop, 3)
             self.assertEqual(self.tracking, [1, 2])
@@ -324,13 +249,11 @@ class TestContextManagers(unittest.TestCase):
         # After the context manager, the prop should have been modified
         # the tracking list should have stayed the same and the GObject ref
         # count goes back down.
-        gc.collect()
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [1, 2])
         self.assertEqual(self.obj.__grefcount__, 1)
-        self.assertEqual(sys.getrefcount(self.obj), pyref_count)
 
-    def test_freeze_notify_context_nested(self):
+    def testFreezeNotifyContextNested(self):
         self.assertEqual(self.tracking, [])
         with self.obj.freeze_notify():
             self.obj.props.prop = 1
@@ -350,7 +273,7 @@ class TestContextManagers(unittest.TestCase):
         # and the last one sent.
         self.assertEqual(self.tracking, [3])
 
-    def test_handler_block_context_nested(self):
+    def testHandlerBlockContextNested(self):
         self.assertEqual(self.tracking, [])
         with self.obj.handler_block(self.handler):
             self.obj.props.prop = 1
@@ -371,7 +294,7 @@ class TestContextManagers(unittest.TestCase):
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [])
 
-    def test_freeze_notify_normal_usage_ref_counts(self):
+    def testFreezeNotifyNormalUsageRefCounts(self):
         # Ensure ref counts without using methods as context managers
         # maintain the same count.
         self.assertEqual(self.obj.__grefcount__, 1)
@@ -380,14 +303,14 @@ class TestContextManagers(unittest.TestCase):
         self.obj.thaw_notify()
         self.assertEqual(self.obj.__grefcount__, 1)
 
-    def test_handler_block_normal_usage_ref_counts(self):
+    def testHandlerBlockNormalUsageRefCounts(self):
         self.assertEqual(self.obj.__grefcount__, 1)
         self.obj.handler_block(self.handler)
         self.assertEqual(self.obj.__grefcount__, 1)
         self.obj.handler_unblock(self.handler)
         self.assertEqual(self.obj.__grefcount__, 1)
 
-    def test_freeze_notify_context_error(self):
+    def testFreezeNotifyContextError(self):
         # Test an exception occurring within a freeze context exits the context
         try:
             with self.obj.freeze_notify():
@@ -405,7 +328,7 @@ class TestContextManagers(unittest.TestCase):
         self.obj.props.prop = 2
         self.assertEqual(self.tracking, [1, 2])
 
-    def test_handler_block_context_error(self):
+    def testHandlerBlockContextError(self):
         # Test an exception occurring within a handler block exits the context
         try:
             with self.obj.handler_block(self.handler):
@@ -423,278 +346,5 @@ class TestContextManagers(unittest.TestCase):
         self.obj.props.prop = 2
         self.assertEqual(self.tracking, [2])
 
-
-@unittest.skipUnless(hasattr(GObject.Binding, 'unbind'),
-                     'Requires newer GLib which has g_binding_unbind')
-class TestPropertyBindings(unittest.TestCase):
-    class TestObject(GObject.GObject):
-        int_prop = GObject.Property(default=0, type=int)
-
-    def setUp(self):
-        self.source = self.TestObject()
-        self.target = self.TestObject()
-
-    def test_default_binding(self):
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
-                                            GObject.BindingFlags.DEFAULT)
-        binding = binding  # PyFlakes
-
-        # Test setting value on source gets pushed to target
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 1)
-
-        # Test setting value on target does not change source
-        self.target.props.int_prop = 2
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 2)
-
-    def test_bidirectional_binding(self):
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
-                                            GObject.BindingFlags.BIDIRECTIONAL)
-        binding = binding  # PyFlakes
-
-        # Test setting value on source gets pushed to target
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 1)
-
-        # Test setting value on target also changes source
-        self.target.props.int_prop = 2
-        self.assertEqual(self.source.int_prop, 2)
-        self.assertEqual(self.target.int_prop, 2)
-
-    def test_transform_to_only(self):
-        def transform_to(binding, value, user_data=None):
-            self.assertEqual(user_data, 'test-data')
-            return value * 2
-
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
-                                            GObject.BindingFlags.DEFAULT,
-                                            transform_to, None, 'test-data')
-        binding = binding  # PyFlakes
-
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 2)
-
-        self.target.props.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 1)
-
-    def test_transform_from_only(self):
-        def transform_from(binding, value, user_data=None):
-            self.assertEqual(user_data, None)
-            return value * 2
-
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
-                                            GObject.BindingFlags.BIDIRECTIONAL,
-                                            None, transform_from)
-        binding = binding  # PyFlakes
-
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 1)
-
-        self.target.props.int_prop = 1
-        self.assertEqual(self.source.int_prop, 2)
-        self.assertEqual(self.target.int_prop, 1)
-
-    def test_transform_bidirectional(self):
-        test_data = object()
-
-        def transform_to(binding, value, user_data=None):
-            self.assertEqual(user_data, test_data)
-            return value * 2
-
-        def transform_from(binding, value, user_data=None):
-            self.assertEqual(user_data, test_data)
-            return value // 2
-
-        test_data_ref_count = sys.getrefcount(test_data)
-        transform_to_ref_count = sys.getrefcount(transform_to)
-        transform_from_ref_count = sys.getrefcount(transform_from)
-
-        # bidirectional bindings
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop',
-                                            GObject.BindingFlags.BIDIRECTIONAL,
-                                            transform_to, transform_from, test_data)
-        binding = binding  # PyFlakes
-        binding_ref_count = sys.getrefcount(binding)
-        binding_gref_count = binding.__grefcount__
-
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 2)
-
-        self.target.props.int_prop = 4
-        self.assertEqual(self.source.int_prop, 2)
-        self.assertEqual(self.target.int_prop, 4)
-
-        self.assertEqual(sys.getrefcount(binding), binding_ref_count)
-        self.assertEqual(binding.__grefcount__, binding_gref_count)
-
-        # test_data ref count increases by 2, once for each callback.
-        self.assertEqual(sys.getrefcount(test_data), test_data_ref_count + 2)
-        self.assertEqual(sys.getrefcount(transform_to), transform_to_ref_count + 1)
-        self.assertEqual(sys.getrefcount(transform_from), transform_from_ref_count + 1)
-
-        # Unbind should clear out the binding and its transforms
-        binding.unbind()
-
-        # Setting source or target should not change the other.
-        self.target.int_prop = 3
-        self.source.int_prop = 5
-        self.assertEqual(self.target.int_prop, 3)
-        self.assertEqual(self.source.int_prop, 5)
-
-        self.assertEqual(sys.getrefcount(test_data), test_data_ref_count)
-        self.assertEqual(sys.getrefcount(transform_to), transform_to_ref_count)
-        self.assertEqual(sys.getrefcount(transform_from), transform_from_ref_count)
-
-    def test_explicit_unbind_clears_connection(self):
-        self.assertEqual(self.source.int_prop, 0)
-        self.assertEqual(self.target.int_prop, 0)
-
-        # Test deleting binding reference removes binding.
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop')
-        self.source.int_prop = 1
-        self.assertEqual(self.source.int_prop, 1)
-        self.assertEqual(self.target.int_prop, 1)
-
-        # unbind should clear out the bindings self reference
-        binding.unbind()
-        self.assertEqual(binding.__grefcount__, 1)
-
-        self.source.int_prop = 10
-        self.assertEqual(self.source.int_prop, 10)
-        self.assertEqual(self.target.int_prop, 1)
-
-        # An already unbound BindingWeakRef will raise if unbind is attempted a second time.
-        self.assertRaises(ValueError, binding.unbind)
-
-    def test_reference_counts(self):
-        self.assertEqual(self.source.__grefcount__, 1)
-        self.assertEqual(self.target.__grefcount__, 1)
-
-        # Binding ref count will be 2 do to the initial ref implicitly held by
-        # the act of binding and the ref incurred by using __call__ to generate
-        # a wrapper from the weak binding ref within python.
-        binding = self.source.bind_property('int_prop', self.target, 'int_prop')
-        self.assertEqual(binding.__grefcount__, 2)
-
-        # Creating a binding does not inc refs on source and target (they are weak
-        # on the binding object itself)
-        self.assertEqual(self.source.__grefcount__, 1)
-        self.assertEqual(self.target.__grefcount__, 1)
-
-        # Use GObject.get_property because the "props" accessor leaks.
-        # Note property names are canonicalized.
-        self.assertEqual(binding.get_property('source'), self.source)
-        self.assertEqual(binding.get_property('source_property'), 'int-prop')
-        self.assertEqual(binding.get_property('target'), self.target)
-        self.assertEqual(binding.get_property('target_property'), 'int-prop')
-        self.assertEqual(binding.get_property('flags'), GObject.BindingFlags.DEFAULT)
-
-        # Delete reference to source or target and the binding will remove its own
-        # "self reference".
-        ref = self.source.weak_ref()
-        del self.source
-        gc.collect()
-        self.assertEqual(ref(), None)
-        self.assertEqual(binding.__grefcount__, 1)
-
-        # Finally clear out the last ref held by the python wrapper
-        ref = binding.weak_ref()
-        del binding
-        gc.collect()
-        self.assertEqual(ref(), None)
-
-
-class TestGValue(unittest.TestCase):
-    def test_type_constant(self):
-        self.assertEqual(GObject.TYPE_VALUE, GObject.Value.__gtype__)
-        self.assertEqual(GObject.type_name(GObject.TYPE_VALUE), 'GValue')
-
-    def test_no_type(self):
-        value = GObject.Value()
-        self.assertEqual(value.g_type, GObject.TYPE_INVALID)
-        self.assertRaises(TypeError, value.set_value, 23)
-        self.assertEqual(value.get_value(), None)
-
-    def test_int(self):
-        value = GObject.Value(GObject.TYPE_UINT)
-        self.assertEqual(value.g_type, GObject.TYPE_UINT)
-        value.set_value(23)
-        self.assertEqual(value.get_value(), 23)
-        value.set_value(42.0)
-        self.assertEqual(value.get_value(), 42)
-
-    def test_string(self):
-        value = GObject.Value(str, 'foo_bar')
-        self.assertEqual(value.g_type, GObject.TYPE_STRING)
-        self.assertEqual(value.get_value(), 'foo_bar')
-
-    def test_float(self):
-        # python float is G_TYPE_DOUBLE
-        value = GObject.Value(float, 23.4)
-        self.assertEqual(value.g_type, GObject.TYPE_DOUBLE)
-        value.set_value(1e50)
-        self.assertAlmostEqual(value.get_value(), 1e50)
-
-        value = GObject.Value(GObject.TYPE_FLOAT, 23.4)
-        self.assertEqual(value.g_type, GObject.TYPE_FLOAT)
-        self.assertRaises(TypeError, value.set_value, 'string')
-        self.assertRaises(OverflowError, value.set_value, 1e50)
-
-    def test_float_inf_nan(self):
-        nan = float('nan')
-        for type_ in [GObject.TYPE_FLOAT, GObject.TYPE_DOUBLE]:
-            for x in [float('inf'), float('-inf'), nan]:
-                value = GObject.Value(type_, x)
-                # assertEqual() is False for (nan, nan)
-                if x is nan:
-                    self.assertEqual(str(value.get_value()), 'nan')
-                else:
-                    self.assertEqual(value.get_value(), x)
-
-    def test_enum(self):
-        value = GObject.Value(GLib.FileError, GLib.FileError.FAILED)
-        self.assertEqual(value.get_value(), GLib.FileError.FAILED)
-
-    def test_flags(self):
-        value = GObject.Value(GLib.IOFlags, GLib.IOFlags.IS_READABLE)
-        self.assertEqual(value.get_value(), GLib.IOFlags.IS_READABLE)
-
-    def test_object(self):
-        class TestObject(GObject.Object):
-            pass
-        obj = TestObject()
-        value = GObject.Value(GObject.TYPE_OBJECT, obj)
-        self.assertEqual(value.get_value(), obj)
-
-    def test_value_array(self):
-        value = GObject.Value(GObject.ValueArray)
-        self.assertEqual(value.g_type, GObject.type_from_name('GValueArray'))
-        value.set_value([32, 'foo_bar', 0.3])
-        self.assertEqual(value.get_value(), [32, 'foo_bar', 0.3])
-
-    def test_gerror_boxing(self):
-        error = GLib.Error('test message', domain='mydomain', code=42)
-        value = GObject.Value(GLib.Error, error)
-        self.assertEqual(value.g_type, GObject.type_from_name('GError'))
-
-        unboxed = value.get_value()
-        self.assertEqual(unboxed.message, error.message)
-        self.assertEqual(unboxed.domain, error.domain)
-        self.assertEqual(unboxed.code, error.code)
-
-    def test_gerror_novalue(self):
-        GLib.Error('test message', domain='mydomain', code=42)
-        value = GObject.Value(GLib.Error)
-        self.assertEqual(value.g_type, GObject.type_from_name('GError'))
-        self.assertEqual(value.get_value(), None)
-
-
 if __name__ == '__main__':
     unittest.main()
diff --git a/tests/test_gtype.py b/tests/test_gtype.py
deleted file mode 100644 (file)
index 8099101..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-import unittest
-
-from gi.repository import GObject
-from gi.repository import GIMarshallingTests
-
-
-class CustomBase(GObject.GObject):
-    pass
-
-
-class CustomChild(CustomBase, GIMarshallingTests.Interface):
-    pass
-
-
-class TestTypeModuleLevelFunctions(unittest.TestCase):
-    def test_type_name(self):
-        self.assertEqual(GObject.type_name(GObject.TYPE_NONE), 'void')
-        self.assertEqual(GObject.type_name(GObject.TYPE_OBJECT), 'GObject')
-        self.assertEqual(GObject.type_name(GObject.TYPE_PYOBJECT), 'PyObject')
-
-    def test_type_from_name(self):
-        # A complete test is not needed here since the TYPE_* defines are created
-        # using this method.
-        self.assertRaises(RuntimeError, GObject.type_from_name, '!NOT_A_REAL_TYPE!')
-        self.assertEqual(GObject.type_from_name('GObject'), GObject.TYPE_OBJECT)
-        self.assertEqual(GObject.type_from_name('GObject'), GObject.GObject.__gtype__)
-
-    def test_type_is_a(self):
-        self.assertTrue(GObject.type_is_a(CustomBase, GObject.TYPE_OBJECT))
-        self.assertTrue(GObject.type_is_a(CustomChild, CustomBase))
-        self.assertTrue(GObject.type_is_a(CustomBase, GObject.GObject))
-        self.assertTrue(GObject.type_is_a(CustomBase.__gtype__, GObject.TYPE_OBJECT))
-        self.assertFalse(GObject.type_is_a(GObject.TYPE_OBJECT, CustomBase))
-        self.assertFalse(GObject.type_is_a(CustomBase, int))  # invalid type
-        self.assertRaises(TypeError, GObject.type_is_a, CustomBase, 1)
-        self.assertRaises(TypeError, GObject.type_is_a, 2, GObject.TYPE_OBJECT)
-        self.assertRaises(TypeError, GObject.type_is_a, 1, 2)
-
-    def test_type_children(self):
-        self.assertEqual(GObject.type_children(CustomBase), [CustomChild.__gtype__])
-        self.assertEqual(len(GObject.type_children(CustomChild)), 0)
-
-    def test_type_interfaces(self):
-        self.assertEqual(len(GObject.type_interfaces(CustomBase)), 0)
-        self.assertEqual(len(GObject.type_interfaces(CustomChild)), 1)
-        self.assertEqual(GObject.type_interfaces(CustomChild), [GIMarshallingTests.Interface.__gtype__])
-
-    def test_type_parent(self):
-        self.assertEqual(GObject.type_parent(CustomChild), CustomBase.__gtype__)
-        self.assertEqual(GObject.type_parent(CustomBase), GObject.TYPE_OBJECT)
-        self.assertRaises(RuntimeError, GObject.type_parent, GObject.GObject)
diff --git a/tests/test_import_machinery.py b/tests/test_import_machinery.py
deleted file mode 100644 (file)
index 044117d..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import sys
-import unittest
-
-import gi.overrides
-import gi.module
-import gi.importer
-
-from gi.repository import Regress
-
-
-class TestOverrides(unittest.TestCase):
-
-    def test_non_gi(self):
-        class MyClass:
-            pass
-
-        try:
-            gi.overrides.override(MyClass)
-            self.fail('unexpected success of overriding non-GI class')
-        except TypeError as e:
-            self.assertTrue('Can not override a type MyClass' in str(e))
-
-    def test_separate_path(self):
-        # Regress override is in tests/gi/overrides, separate from gi/overrides
-        # https://bugzilla.gnome.org/show_bug.cgi?id=680913
-        self.assertEqual(Regress.REGRESS_OVERRIDE, 42)
-
-    def test_load_overrides(self):
-        mod = gi.module.get_introspection_module('GIMarshallingTests')
-        mod_override = gi.overrides.load_overrides(mod)
-        self.assertTrue(mod_override is not mod)
-        self.assertTrue(mod_override._introspection_module is mod)
-        self.assertEqual(mod_override.OVERRIDES_CONSTANT, 7)
-        self.assertEqual(mod.OVERRIDES_CONSTANT, 42)
-
-    def test_load_no_overrides(self):
-        mod_key = "gi.overrides.GIMarshallingTests"
-        had_mod = mod_key in sys.modules
-        old_mod = sys.modules.get(mod_key)
-        try:
-            # this makes override import fail
-            sys.modules[mod_key] = None
-            mod = gi.module.get_introspection_module('GIMarshallingTests')
-            mod_override = gi.overrides.load_overrides(mod)
-            self.assertTrue(mod_override is mod)
-        finally:
-            del sys.modules[mod_key]
-            if had_mod:
-                sys.modules[mod_key] = old_mod
-
-
-class TestModule(unittest.TestCase):
-    # Tests for gi.module
-
-    def test_get_introspection_module_caching(self):
-        # This test attempts to minimize side effects by
-        # using a DynamicModule directly instead of going though:
-        # from gi.repository import Foo
-
-        # Clear out introspection module cache before running this test.
-        old_modules = gi.module._introspection_modules
-        gi.module._introspection_modules = {}
-
-        mod_name = 'GIMarshallingTests'
-        mod1 = gi.module.get_introspection_module(mod_name)
-        mod2 = gi.module.get_introspection_module(mod_name)
-        self.assertTrue(mod1 is mod2)
-
-        # Restore the previous cache
-        gi.module._introspection_modules = old_modules
-
-    def test_module_dependency_loading(self):
-        # Difficult to because this generally need to run in isolation to make
-        # sure GIMarshallingTests has not yet been loaded. But we can do this with:
-        #  make check TEST_NAMES=test_import_machinery.TestModule.test_module_dependency_loading
-        if 'gi.repository.Gio' in sys.modules:
-            return
-
-        from gi.repository import GIMarshallingTests
-        GIMarshallingTests  # PyFlakes
-
-        self.assertIn('gi.repository.Gio', sys.modules)
-        self.assertIn('gi.repository.GIMarshallingTests', sys.modules)
-
-    def test_static_binding_protection(self):
-        # Importing old static bindings once gi has been imported should not
-        # crash but instead give back a dummy module which produces RuntimeErrors
-        # on access.
-        with self.assertRaises(AttributeError):
-            import gobject
-            gobject.anything
-
-        with self.assertRaises(AttributeError):
-            import glib
-            glib.anything
-
-        with self.assertRaises(AttributeError):
-            import gio
-            gio.anything
-
-        with self.assertRaises(AttributeError):
-            import gtk
-            gtk.anything
-
-        with self.assertRaises(AttributeError):
-            import gtk.gdk
-            gtk.gdk.anything
-
-
-class TestImporter(unittest.TestCase):
-    def test_invalid_repository_module_name(self):
-        with self.assertRaises(ImportError) as context:
-            from gi.repository import InvalidGObjectRepositoryModuleName
-            InvalidGObjectRepositoryModuleName  # pyflakes
-
-        exception_string = str(context.exception)
-
-        self.assertTrue('InvalidGObjectRepositoryModuleName' in exception_string)
-
-        # The message of the custom exception in gi/importer.py is eaten in Python <3.3
-        if sys.version_info < (3, 3):
-            self.assertTrue('introspection typelib' not in exception_string)
-        else:
-            self.assertTrue('introspection typelib' in exception_string)
-
-    def test_require_version_warning(self):
-        check = gi.importer._check_require_version
-
-        # make sure it doesn't fail at least
-        with check("GLib", 1):
-            from gi.repository import GLib
-            GLib
-
-        # make sure the exception propagates
-        with self.assertRaises(ImportError):
-            with check("InvalidGObjectRepositoryModuleName", 1):
-                from gi.repository import InvalidGObjectRepositoryModuleName
-                InvalidGObjectRepositoryModuleName
-
-    def test_require_versions(self):
-        import gi
-        gi.require_versions({'GLib': '2.0', 'Gio': '2.0', 'GObject': '2.0'})
-        from gi.repository import GLib
-        GLib
-
-    def test_get_import_stacklevel(self):
-        gi.importer.get_import_stacklevel(import_hook=True)
-        gi.importer.get_import_stacklevel(import_hook=False)
index ba20cb4..2df61b1 100644 (file)
@@ -20,8 +20,6 @@ class MyUnknown(Unknown, testhelper.Interface):
     def do_iface_method(self):
         self.called = True
         Unknown.do_iface_method(self)
-
-
 GObject.type_register(MyUnknown)
 
 
@@ -34,19 +32,17 @@ class MyObject(GObject.GObject, testhelper.Interface):
 
     def do_iface_method(self):
         self.called = True
-
-
 GObject.type_register(MyObject)
 
 
 class TestIfaceImpl(unittest.TestCase):
 
-    def test_reimplement_interface(self):
+    def testReImplementInterface(self):
         m = MyUnknown()
         m.iface_method()
         self.assertEqual(m.called, True)
 
-    def test_implement_interface(self):
+    def testImplementInterface(self):
         m = MyObject()
         m.iface_method()
         self.assertEqual(m.called, True)
diff --git a/tests/test_internal_api.py b/tests/test_internal_api.py
deleted file mode 100644 (file)
index eb66fdd..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# -*- Mode: Python -*-
-
-import unittest
-
-from gi.repository import GLib, GObject
-
-import testhelper
-import testmodule
-
-
-class TestObject(unittest.TestCase):
-    def test_create_ctor(self):
-        o = testmodule.PyGObject()
-        self.assertTrue(isinstance(o, GObject.Object))
-        self.assertTrue(isinstance(o, testmodule.PyGObject))
-
-        # has expected property
-        self.assertEqual(o.props.label, 'hello')
-        o.props.label = 'goodbye'
-        self.assertEqual(o.props.label, 'goodbye')
-        self.assertRaises(AttributeError, getattr, o.props, 'nosuchprop')
-
-    def test_pyobject_new_test_type(self):
-        o = testhelper.create_test_type()
-        self.assertTrue(isinstance(o, testmodule.PyGObject))
-
-        # has expected property
-        self.assertEqual(o.props.label, 'hello')
-        o.props.label = 'goodbye'
-        self.assertEqual(o.props.label, 'goodbye')
-        self.assertRaises(AttributeError, getattr, o.props, 'nosuchprop')
-
-    def test_new_refcount(self):
-        # TODO: justify why this should be 2
-        self.assertEqual(testhelper.test_g_object_new(), 2)
-
-
-class TestGValueConversion(unittest.TestCase):
-    def test_int(self):
-        self.assertEqual(testhelper.test_value(0), 0)
-        self.assertEqual(testhelper.test_value(5), 5)
-        self.assertEqual(testhelper.test_value(-5), -5)
-        self.assertEqual(testhelper.test_value(GLib.MAXINT32), GLib.MAXINT32)
-        self.assertEqual(testhelper.test_value(GLib.MININT32), GLib.MININT32)
-
-    def test_str(self):
-        self.assertEqual(testhelper.test_value('hello'), 'hello')
-
-    def test_int_array(self):
-        self.assertEqual(testhelper.test_value_array([]), [])
-        self.assertEqual(testhelper.test_value_array([0]), [0])
-        ar = list(range(100))
-        self.assertEqual(testhelper.test_value_array(ar), ar)
-
-    def test_str_array(self):
-        self.assertEqual(testhelper.test_value_array([]), [])
-        self.assertEqual(testhelper.test_value_array(['a']), ['a'])
-        ar = ('aa ' * 1000).split()
-        self.assertEqual(testhelper.test_value_array(ar), ar)
-
-
-class TestErrors(unittest.TestCase):
-    def test_gerror(self):
-        callable_ = lambda: GLib.file_get_contents('/nonexisting ')
-        self.assertRaises(GLib.GError, testhelper.test_gerror_exception, callable_)
-
-    def test_no_gerror(self):
-        callable_ = lambda: GLib.file_get_contents(__file__)
-        self.assertEqual(testhelper.test_gerror_exception(callable_), None)
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_iochannel.py b/tests/test_iochannel.py
deleted file mode 100644 (file)
index 95b8d1f..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-# -*- Mode: Python -*-
-# encoding: UTF-8
-
-import os
-import unittest
-import tempfile
-import os.path
-import shutil
-import warnings
-
-try:
-    import fcntl
-except ImportError:
-    fcntl = None
-
-from gi.repository import GLib
-from gi import PyGIDeprecationWarning
-
-
-class IOChannel(unittest.TestCase):
-    def setUp(self):
-        self.workdir = tempfile.mkdtemp()
-
-        self.testutf8 = os.path.join(self.workdir, 'testutf8.txt')
-        with open(self.testutf8, 'wb') as f:
-            f.write(u'''hello â™¥ world
-second line
-
-À demain!'''.encode('UTF-8'))
-
-        self.testlatin1 = os.path.join(self.workdir, 'testlatin1.txt')
-        with open(self.testlatin1, 'wb') as f:
-            f.write(b'''hell\xf8 world
-second line
-
-\xc0 demain!''')
-
-        self.testout = os.path.join(self.workdir, 'testout.txt')
-
-    def tearDown(self):
-        shutil.rmtree(self.workdir)
-
-    def test_file_readline_utf8(self):
-        ch = GLib.IOChannel(filename=self.testutf8)
-        self.assertEqual(ch.get_encoding(), 'UTF-8')
-        self.assertTrue(ch.get_close_on_unref())
-        self.assertEqual(ch.readline(), 'hello â™¥ world\n')
-        self.assertEqual(ch.get_buffer_condition(), GLib.IOCondition.IN)
-        self.assertEqual(ch.readline(), 'second line\n')
-        self.assertEqual(ch.readline(), '\n')
-        self.assertEqual(ch.readline(), 'À demain!')
-        self.assertEqual(ch.get_buffer_condition(), 0)
-        self.assertEqual(ch.readline(), '')
-        ch.shutdown(True)
-
-    def test_file_readline_latin1(self):
-        ch = GLib.IOChannel(filename=self.testlatin1, mode='r')
-        ch.set_encoding('latin1')
-        self.assertEqual(ch.get_encoding(), 'latin1')
-        self.assertEqual(ch.readline(), 'hellø world\n')
-        self.assertEqual(ch.readline(), 'second line\n')
-        self.assertEqual(ch.readline(), '\n')
-        self.assertEqual(ch.readline(), 'À demain!')
-        ch.shutdown(True)
-
-    def test_file_iter(self):
-        items = []
-        ch = GLib.IOChannel(filename=self.testutf8)
-        for item in ch:
-            items.append(item)
-        self.assertEqual(len(items), 4)
-        self.assertEqual(items[0], 'hello â™¥ world\n')
-        ch.shutdown(True)
-
-    def test_file_readlines(self):
-        ch = GLib.IOChannel(filename=self.testutf8)
-        lines = ch.readlines()
-        # Note, this really ought to be 4, but the static bindings add an extra
-        # empty one
-        self.assertGreaterEqual(len(lines), 4)
-        self.assertLessEqual(len(lines), 5)
-        self.assertEqual(lines[0], 'hello â™¥ world\n')
-        self.assertEqual(lines[3], 'À demain!')
-        if len(lines) == 4:
-            self.assertEqual(lines[4], '')
-
-    def test_file_read(self):
-        ch = GLib.IOChannel(filename=self.testutf8)
-        with open(self.testutf8, 'rb') as f:
-            self.assertEqual(ch.read(), f.read())
-
-        ch = GLib.IOChannel(filename=self.testutf8)
-        with open(self.testutf8, 'rb') as f:
-            self.assertEqual(ch.read(10), f.read(10))
-
-        ch = GLib.IOChannel(filename=self.testutf8)
-        with open(self.testutf8, 'rb') as f:
-            self.assertEqual(ch.read(max_count=15), f.read(15))
-
-    def test_seek(self):
-        ch = GLib.IOChannel(filename=self.testutf8)
-        ch.seek(2)
-        self.assertEqual(ch.read(3), b'llo')
-
-        ch.seek(2, 0)  # SEEK_SET
-        self.assertEqual(ch.read(3), b'llo')
-
-        ch.seek(1, 1)  # SEEK_CUR, skip the space
-        self.assertEqual(ch.read(3), b'\xe2\x99\xa5')
-
-        ch.seek(2, 2)  # SEEK_END
-        # FIXME: does not work currently
-        # self.assertEqual(ch.read(2), b'n!')
-
-        # invalid whence value
-        self.assertRaises(ValueError, ch.seek, 0, 3)
-        ch.shutdown(True)
-
-    def test_file_write(self):
-        ch = GLib.IOChannel(filename=self.testout, mode='w')
-        ch.set_encoding('latin1')
-        ch.write('hellø world\n')
-        ch.shutdown(True)
-        ch = GLib.IOChannel(filename=self.testout, mode='a')
-        ch.set_encoding('latin1')
-        ch.write('À demain!')
-        ch.shutdown(True)
-
-        with open(self.testout, 'rb') as f:
-            self.assertEqual(f.read().decode('latin1'), u'hellø world\nÀ demain!')
-
-    def test_file_writelines(self):
-        ch = GLib.IOChannel(filename=self.testout, mode='w')
-        ch.writelines(['foo', 'bar\n', 'baz\n', 'end'])
-        ch.shutdown(True)
-
-        with open(self.testout, 'r') as f:
-            self.assertEqual(f.read(), 'foobar\nbaz\nend')
-
-    def test_buffering(self):
-        writer = GLib.IOChannel(filename=self.testout, mode='w')
-        writer.set_encoding(None)
-        self.assertTrue(writer.get_buffered())
-        self.assertGreater(writer.get_buffer_size(), 10)
-
-        reader = GLib.IOChannel(filename=self.testout, mode='r')
-
-        # does not get written immediately on buffering
-        writer.write('abc')
-        self.assertEqual(reader.read(), b'')
-        writer.flush()
-        self.assertEqual(reader.read(), b'abc')
-
-        # does get written immediately without buffering
-        writer.set_buffered(False)
-        writer.write('def')
-        self.assertEqual(reader.read(), b'def')
-
-        # writes after buffer overflow
-        writer.set_buffer_size(10)
-        writer.write('0123456789012')
-        self.assertTrue(reader.read().startswith(b'012'))
-        writer.flush()
-        reader.read()  # ignore bits written after flushing
-
-        # closing flushes
-        writer.set_buffered(True)
-        writer.write('ghi')
-        writer.shutdown(True)
-        self.assertEqual(reader.read(), b'ghi')
-        reader.shutdown(True)
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_fd_read(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-        self.assertNotEqual(ch.get_flags() | GLib.IOFlags.NONBLOCK, 0)
-        self.assertEqual(ch.read(), b'')
-        os.write(w, b'\x01\x02')
-        self.assertEqual(ch.read(), b'\x01\x02')
-
-        # now test blocking case, after closing the write end
-        ch.set_flags(GLib.IOFlags(ch.get_flags() & ~GLib.IOFlags.NONBLOCK))
-        os.write(w, b'\x03\x04')
-        os.close(w)
-        self.assertEqual(ch.read(), b'\x03\x04')
-
-        ch.shutdown(True)
-
-    @unittest.skipUnless(fcntl, "no fcntl")
-    def test_fd_write(self):
-        (r, w) = os.pipe()
-        fcntl.fcntl(r, fcntl.F_SETFL, fcntl.fcntl(r, fcntl.F_GETFL) | os.O_NONBLOCK)
-
-        ch = GLib.IOChannel(filedes=w, mode='w')
-        ch.set_encoding(None)
-        ch.set_buffered(False)
-        ch.write(b'\x01\x02')
-        self.assertEqual(os.read(r, 10), b'\x01\x02')
-
-        # now test blocking case, after closing the write end
-        fcntl.fcntl(r, fcntl.F_SETFL, fcntl.fcntl(r, fcntl.F_GETFL) & ~os.O_NONBLOCK)
-        ch.write(b'\x03\x04')
-        ch.shutdown(True)
-        self.assertEqual(os.read(r, 10), b'\x03\x04')
-        os.close(r)
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_deprecated_method_add_watch_no_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        # io_add_watch() method is deprecated, use GLib.io_add_watch
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            ch.add_watch(GLib.IOCondition.IN, cb, priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        ml = GLib.MainLoop()
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_deprecated_method_add_watch_data_priority(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition, data):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            self.assertEqual(data, 'hello')
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        ml = GLib.MainLoop()
-        # io_add_watch() method is deprecated, use GLib.io_add_watch
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            id = ch.add_watch(GLib.IOCondition.IN, cb, 'hello', priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_add_watch_no_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb)
-
-        ml = GLib.MainLoop()
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_add_watch_with_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition, data):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            self.assertEqual(data, 'hello')
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb, 'hello')
-
-        ml = GLib.MainLoop()
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_add_watch_with_multi_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition, data1, data2, data3):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            self.assertEqual(data1, 'a')
-            self.assertEqual(data2, 'b')
-            self.assertEqual(data3, 'c')
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb,
-                               'a', 'b', 'c')
-
-        ml = GLib.MainLoop()
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_deprecated_add_watch_no_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            id = GLib.io_add_watch(ch, GLib.IOCondition.IN, cb, priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        ml = GLib.MainLoop()
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    @unittest.skipIf(os.name == "nt", "NONBLOCK not implemented on Windows")
-    def test_deprecated_add_watch_with_data(self):
-        (r, w) = os.pipe()
-
-        ch = GLib.IOChannel(filedes=r)
-        ch.set_encoding(None)
-        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
-
-        cb_reads = []
-
-        def cb(channel, condition, data):
-            self.assertEqual(channel, ch)
-            self.assertEqual(condition, GLib.IOCondition.IN)
-            self.assertEqual(data, 'hello')
-            cb_reads.append(channel.read())
-            if len(cb_reads) == 2:
-                ml.quit()
-            return True
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            id = GLib.io_add_watch(ch, GLib.IOCondition.IN, cb, 'hello',
-                                   priority=GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-
-        ml = GLib.MainLoop()
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-
-        def write():
-            os.write(w, b'a')
-            GLib.idle_add(lambda: os.write(w, b'b') and False)
-
-        GLib.idle_add(write)
-
-        GLib.timeout_add(2000, ml.quit)
-        ml.run()
-
-        self.assertEqual(cb_reads, [b'a', b'b'])
-
-    def test_backwards_compat_flags(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            self.assertEqual(GLib.IOCondition.IN, GLib.IO_IN)
-            self.assertEqual(GLib.IOFlags.NONBLOCK, GLib.IO_FLAG_NONBLOCK)
-            self.assertEqual(GLib.IOFlags.IS_SEEKABLE, GLib.IO_FLAG_IS_SEEKABLE)
-            self.assertEqual(GLib.IOStatus.NORMAL, GLib.IO_STATUS_NORMAL)
-
-
-if __name__ == '__main__':
-    unittest.main()
index fda6787..4c7794a 100644 (file)
@@ -4,14 +4,21 @@ import os
 import sys
 import select
 import signal
+import time
 import unittest
 
+try:
+    from _thread import start_new_thread
+    start_new_thread  # pyflakes
+except ImportError:
+    # Python 2
+    from thread import start_new_thread
 from gi.repository import GLib
 
+from compathelper import _bytes
 
-class TestMainLoop(unittest.TestCase):
 
-    @unittest.skipUnless(hasattr(os, "fork"), "no os.fork available")
+class TestMainLoop(unittest.TestCase):
     def test_exception_handling(self):
         pipe_r, pipe_w = os.pipe()
 
@@ -27,55 +34,47 @@ class TestMainLoop(unittest.TestCase):
             raise Exception("deadbabe")
 
         loop = GLib.MainLoop()
-        GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, child_died, loop)
+        GLib.child_watch_add(pid, child_died, loop)
 
         os.close(pipe_r)
-        os.write(pipe_w, b"Y")
+        os.write(pipe_w, _bytes("Y"))
         os.close(pipe_w)
 
         def excepthook(type, value, traceback):
-            self.assertTrue(type is Exception)
-            self.assertEqual(value.args[0], "deadbabe")
+            assert type is Exception
+            assert value.args[0] == "deadbabe"
         sys.excepthook = excepthook
+
+        got_exception = False
         try:
-            got_exception = False
-            try:
-                loop.run()
-            except:
-                got_exception = True
-        finally:
-            sys.excepthook = sys.__excepthook__
+            loop.run()
+        except:
+            got_exception = True
 
         #
         # The exception should be handled (by printing it)
         # immediately on return from child_died() rather
         # than here. See bug #303573
         #
-        self.assertFalse(got_exception)
-
-    @unittest.skipUnless(hasattr(os, "fork"), "no os.fork available")
-    def test_sigint(self):
-        r, w = os.pipe()
-        pid = os.fork()
-        if pid == 0:
-            # wait for the parent process loop to start
-            os.read(r, 1)
-            os.close(r)
+        sys.excepthook = sys.__excepthook__
+        assert not got_exception
 
-            os.kill(os.getppid(), signal.SIGINT)
-            os._exit(0)
-
-        def notify_child():
-            # tell the child that it can kill the parent
-            os.write(w, b"X")
-            os.close(w)
+    def test_concurrency(self):
+        def on_usr1(signum, frame):
+            pass
 
-        GLib.idle_add(notify_child)
-        loop = GLib.MainLoop()
         try:
-            loop.run()
-            self.fail('expected KeyboardInterrupt exception')
-        except KeyboardInterrupt:
-            pass
-        self.assertFalse(loop.is_running())
-        os.waitpid(pid, 0)
+            # create a thread which will terminate upon SIGUSR1 by way of
+            # interrupting sleep()
+            orig_handler = signal.signal(signal.SIGUSR1, on_usr1)
+            start_new_thread(time.sleep, (10,))
+
+            # now create two main loops
+            loop1 = GLib.MainLoop()
+            loop2 = GLib.MainLoop()
+            GLib.timeout_add(100, lambda: os.kill(os.getpid(), signal.SIGUSR1))
+            GLib.timeout_add(500, loop1.quit)
+            loop1.run()
+            loop2.quit()
+        finally:
+            signal.signal(signal.SIGUSR1, orig_handler)
diff --git a/tests/test_object_marshaling.py b/tests/test_object_marshaling.py
deleted file mode 100644 (file)
index c881a9a..0000000
+++ /dev/null
@@ -1,570 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import unittest
-import weakref
-import gc
-import sys
-import warnings
-
-from gi.repository import GObject
-from gi.repository import GIMarshallingTests
-
-try:
-    from gi.repository import Regress
-except ImportError:
-    Regress = None
-
-
-class StrongRef(object):
-    # A class that behaves like weakref.ref but holds a strong reference.
-    # This allows re-use of the VFuncsBase by swapping out the ObjectRef
-    # class var with either weakref.ref or StrongRef.
-
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __call__(self):
-        return self.obj
-
-
-class VFuncsBase(GIMarshallingTests.Object):
-    # Class which generically implements the vfuncs used for reference counting tests
-    # in a way that can be easily sub-classed and modified.
-
-    #: Object type used by this class for testing
-    #: This can be GObject.Object or GObject.InitiallyUnowned
-    Object = GObject.Object
-
-    #: Reference type used by this class for holding refs to in/out objects.
-    #: This can be set to weakref.ref or StrongRef
-    ObjectRef = weakref.ref
-
-    def __init__(self):
-        super(VFuncsBase, self).__init__()
-
-        #: Hold ref of input or output python wrappers
-        self.object_ref = None
-
-        #: store grefcount of input object
-        self.in_object_grefcount = None
-        self.in_object_is_floating = None
-
-    def do_vfunc_return_object_transfer_none(self):
-        # Return an object but keep a python reference to it.
-        obj = self.Object()
-        self.object_ref = self.ObjectRef(obj)
-        return obj
-
-    def do_vfunc_return_object_transfer_full(self):
-        # Return an object and hand off the reference to the caller.
-        obj = self.Object()
-        self.object_ref = self.ObjectRef(obj)
-        return obj
-
-    def do_vfunc_out_object_transfer_none(self):
-        # Same as do_vfunc_return_object_transfer_none but the pygi
-        # internals convert the return here into an out arg.
-        obj = self.Object()
-        self.object_ref = self.ObjectRef(obj)
-        return obj
-
-    def do_vfunc_out_object_transfer_full(self):
-        # Same as do_vfunc_return_object_transfer_full but the pygi
-        # internals convert the return here into an out arg.
-        obj = self.Object()
-        self.object_ref = self.ObjectRef(obj)
-        return obj
-
-    def do_vfunc_in_object_transfer_none(self, obj):
-        # 'obj' will have a python wrapper as well as still held
-        # by the caller.
-        self.object_ref = self.ObjectRef(obj)
-        self.in_object_grefcount = obj.__grefcount__
-        self.in_object_is_floating = obj.is_floating()
-
-    def do_vfunc_in_object_transfer_full(self, obj):
-        # 'obj' will now be owned by the Python GObject wrapper.
-        # When obj goes out of scope and is collected, the GObject
-        # should also be fully released.
-        self.object_ref = self.ObjectRef(obj)
-        self.in_object_grefcount = obj.__grefcount__
-        self.in_object_is_floating = obj.is_floating()
-
-
-class TestVFuncsWithObjectArg(unittest.TestCase):
-    # Basic set of tests which work on non-floating objects which python does
-    # not keep an additional reference of.
-
-    class VFuncs(VFuncsBase):
-        # Object for testing non-floating objects without holding any refs.
-        Object = GObject.Object
-        ObjectRef = weakref.ref
-
-    def test_vfunc_self_arg_ref_count(self):
-        # Check to make sure vfunc "self" arguments don't leak.
-        vfuncs = self.VFuncs()
-        vfuncs_ref = weakref.ref(vfuncs)
-        vfuncs.get_ref_info_for_vfunc_return_object_transfer_full()  # Use any vfunc to test this.
-
-        gc.collect()
-        self.assertEqual(sys.getrefcount(vfuncs), 2)
-        self.assertEqual(vfuncs.__grefcount__, 1)
-
-        del vfuncs
-        gc.collect()
-        self.assertTrue(vfuncs_ref() is None)
-
-    def test_vfunc_return_object_transfer_none(self):
-        # This tests a problem case where the vfunc returns a GObject owned solely by Python
-        # but the argument is marked as transfer-none.
-        # In this case pygobject marshaling adds an additional ref and gives a warning
-        # of a potential leak. If this occures it is really a bug in the underlying library
-        # but pygobject tries to react to this in a reasonable way.
-        vfuncs = self.VFuncs()
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_none()
-            self.assertTrue(issubclass(warn[0].category, RuntimeWarning))
-
-        # The ref count of the GObject returned to the caller (get_ref_info_for_vfunc_return_object_transfer_none)
-        # should be a single floating ref
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_out_object_transfer_none(self):
-        # Same as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_none()
-            self.assertTrue(issubclass(warn[0].category, RuntimeWarning))
-
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_return_object_transfer_full(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_full()
-
-        # The vfunc caller receives full ownership of a single ref which should not
-        # be floating.
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_out_object_transfer_full(self):
-        # Same as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_full()
-
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_in_object_transfer_none(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_none(self.VFuncs.Object)
-
-        gc.collect()
-        self.assertEqual(vfuncs.in_object_grefcount, 2)  # initial + python wrapper
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        self.assertEqual(ref_count, 1)  # ensure python wrapper released
-        self.assertFalse(is_floating)
-
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_in_object_transfer_full(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_full(self.VFuncs.Object)
-
-        gc.collect()
-
-        # python wrapper should take sole ownership of the gobject
-        self.assertEqual(vfuncs.in_object_grefcount, 1)
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        # ensure python wrapper took ownership and released, after vfunc was complete
-        self.assertEqual(ref_count, 0)
-        self.assertFalse(is_floating)
-
-        self.assertTrue(vfuncs.object_ref() is None)
-
-
-class TestVFuncsWithFloatingArg(unittest.TestCase):
-    # All tests here work with a floating object by using InitiallyUnowned as the argument
-
-    class VFuncs(VFuncsBase):
-        # Object for testing non-floating objects without holding any refs.
-        Object = GObject.InitiallyUnowned
-        ObjectRef = weakref.ref
-
-    def test_vfunc_return_object_transfer_none_with_floating(self):
-        # Python is expected to return a single floating reference without warning.
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_none()
-
-        # The ref count of the GObject returned to the caller (get_ref_info_for_vfunc_return_object_transfer_none)
-        # should be a single floating ref
-        self.assertEqual(ref_count, 1)
-        self.assertTrue(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_out_object_transfer_none_with_floating(self):
-        # Same as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_none()
-
-        self.assertEqual(ref_count, 1)
-        self.assertTrue(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_return_object_transfer_full_with_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_full()
-
-        # The vfunc caller receives full ownership of a single ref.
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_out_object_transfer_full_with_floating(self):
-        # Same as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_full()
-
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        gc.collect()
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_in_object_transfer_none_with_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_none(self.VFuncs.Object)
-
-        gc.collect()
-
-        # python wrapper should maintain the object as floating and add an additional ref
-        self.assertEqual(vfuncs.in_object_grefcount, 2)
-        self.assertTrue(vfuncs.in_object_is_floating)
-
-        # vfunc caller should only have a single floating ref after the vfunc finishes
-        self.assertEqual(ref_count, 1)
-        self.assertTrue(is_floating)
-
-        self.assertTrue(vfuncs.object_ref() is None)
-
-    def test_vfunc_in_object_transfer_full_with_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_full(self.VFuncs.Object)
-
-        gc.collect()
-
-        # python wrapper sinks and owns the gobject
-        self.assertEqual(vfuncs.in_object_grefcount, 1)
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        # ensure python wrapper took ownership and released
-        self.assertEqual(ref_count, 0)
-        self.assertFalse(is_floating)
-
-        self.assertTrue(vfuncs.object_ref() is None)
-
-
-class TestVFuncsWithHeldObjectArg(unittest.TestCase):
-    # Same tests as TestVFuncsWithObjectArg except we hold
-    # onto the python object reference in all cases.
-
-    class VFuncs(VFuncsBase):
-        # Object for testing non-floating objects with a held ref.
-        Object = GObject.Object
-        ObjectRef = StrongRef
-
-    def test_vfunc_return_object_transfer_none_with_held_object(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_none()
-
-        # Python holds the single gobject ref in 'vfuncs.object_ref'
-        # Because of this, we do not expect a floating ref or a ref increase.
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        # The actual grefcount should stay at 1 even after the vfunc return.
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_out_object_transfer_none_with_held_object(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_none()
-
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_return_object_transfer_full_with_held_object(self):
-        # The vfunc caller receives full ownership which should not
-        # be floating. However, the held python wrapper also has a ref.
-
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_full()
-
-        # Ref count from the perspective of C after the vfunc is called
-        # The vfunc caller receives a new reference which should not
-        # be floating. However, the held python wrapper also has a ref.
-        self.assertEqual(ref_count, 2)
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        # The vfunc caller should have decremented its reference.
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_out_object_transfer_full_with_held_object(self):
-        # Same test as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_full()
-
-        # Ref count from the perspective of C after the vfunc is called
-        # The vfunc caller receives a new reference which should not
-        # be floating. However, the held python wrapper also has a ref.
-        self.assertEqual(ref_count, 2)
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        # The vfunc caller should have decremented its reference.
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_in_object_transfer_none_with_held_object(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_none(self.VFuncs.Object)
-
-        gc.collect()
-
-        # Ref count inside vfunc from the perspective of Python
-        self.assertEqual(vfuncs.in_object_grefcount, 2)  # initial + python wrapper
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(ref_count, 2)  # kept after vfunc + held python wrapper
-        self.assertFalse(is_floating)
-
-        # Current ref count after C cleans up its reference
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_in_object_transfer_full_with_held_object(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_full(self.VFuncs.Object)
-
-        gc.collect()
-
-        # Ref count inside vfunc from the perspective of Python
-        self.assertEqual(vfuncs.in_object_grefcount, 1)  # python wrapper takes ownership of the gobject
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-
-class TestVFuncsWithHeldFloatingArg(unittest.TestCase):
-    # Tests for a floating object which we hold a reference to the python wrapper
-    # on the VFuncs test class.
-
-    class VFuncs(VFuncsBase):
-        # Object for testing floating objects with a held ref.
-        Object = GObject.InitiallyUnowned
-        ObjectRef = StrongRef
-
-    def test_vfunc_return_object_transfer_none_with_held_floating(self):
-        # Python holds onto the wrapper which basically means the floating ref
-        # should also be owned by python.
-
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_none()
-
-        # This is a borrowed ref from what is held in python.
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        # The actual grefcount should stay at 1 even after the vfunc return.
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_out_object_transfer_none_with_held_floating(self):
-        # Same as above
-
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_none()
-
-        self.assertEqual(ref_count, 1)
-        self.assertFalse(is_floating)
-
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_return_object_transfer_full_with_held_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_return_object_transfer_full()
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(ref_count, 2)
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        # vfunc wrapper destroyes ref it was given
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref)
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_out_object_transfer_full_with_held_floating(self):
-        # Same test as above except uses out arg instead of return
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_out_object_transfer_full()
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(ref_count, 2)
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        # vfunc wrapper destroyes ref it was given
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_in_floating_transfer_none_with_held_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_none(self.VFuncs.Object)
-        gc.collect()
-
-        # Ref count inside vfunc from the perspective of Python
-        self.assertTrue(vfuncs.in_object_is_floating)
-        self.assertEqual(vfuncs.in_object_grefcount, 2)  # python wrapper sinks and owns the gobject
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertTrue(is_floating)
-        self.assertEqual(ref_count, 2)  # floating + held by wrapper
-
-        # Current ref count after C cleans up its reference
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-    def test_vfunc_in_floating_transfer_full_with_held_floating(self):
-        vfuncs = self.VFuncs()
-        ref_count, is_floating = vfuncs.get_ref_info_for_vfunc_in_object_transfer_full(self.VFuncs.Object)
-        gc.collect()
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(vfuncs.in_object_grefcount, 1)  # python wrapper sinks and owns the gobject
-        self.assertFalse(vfuncs.in_object_is_floating)
-
-        # Ref count from the perspective of C after the vfunc is called
-        self.assertEqual(ref_count, 1)  # held by wrapper
-        self.assertFalse(is_floating)
-
-        # Current ref count
-        self.assertEqual(vfuncs.object_ref().__grefcount__, 1)
-
-        held_object_ref = weakref.ref(vfuncs.object_ref())
-        del vfuncs.object_ref
-        gc.collect()
-        self.assertTrue(held_object_ref() is None)
-
-
-@unittest.skipIf(Regress is None, 'Regress is required')
-class TestArgumentTypeErrors(unittest.TestCase):
-    def test_object_argument_type_error(self):
-        # ensure TypeError is raised for things which are not GObjects
-        obj = Regress.TestObj()
-        obj.set_bare(GObject.Object())
-        obj.set_bare(None)
-
-        self.assertRaises(TypeError, obj.set_bare, object())
-        self.assertRaises(TypeError, obj.set_bare, 42)
-        self.assertRaises(TypeError, obj.set_bare, 'not an object')
-
-    def test_instance_argument_error(self):
-        # ensure TypeError is raised for non Regress.TestObj instances.
-        obj = Regress.TestObj()
-        self.assertEqual(Regress.TestObj.instance_method(obj), -1)
-        self.assertRaises(TypeError, Regress.TestObj.instance_method, object())
-        self.assertRaises(TypeError, Regress.TestObj.instance_method, GObject.Object())
-        self.assertRaises(TypeError, Regress.TestObj.instance_method, 42)
-        self.assertRaises(TypeError, Regress.TestObj.instance_method, 'not an object')
-
-    def test_instance_argument_base_type_error(self):
-        # ensure TypeError is raised when a base type is passed to something
-        # expecting a derived type
-        obj = Regress.TestSubObj()
-        self.assertEqual(Regress.TestSubObj.instance_method(obj), 0)
-        self.assertRaises(TypeError, Regress.TestSubObj.instance_method, GObject.Object())
-        self.assertRaises(TypeError, Regress.TestSubObj.instance_method, Regress.TestObj())
index fe25746..7f63173 100644 (file)
@@ -10,17 +10,19 @@ try:
 except ImportError:
     from io import StringIO
 
-from gi.repository import GLib
+# FIXME: we need a way to import the options module from a public module
+from gi._glib.option import OptionParser, OptionGroup, OptionValueError, \
+     make_option, BadOptionError
 
 
 class TestOption(unittest.TestCase):
     EXCEPTION_MESSAGE = "This callback fails"
 
     def setUp(self):
-        self.parser = GLib.option.OptionParser("NAMES...",
-                                               description="Option unit test")
+        self.parser = OptionParser("NAMES...",
+                                     description="Option unit test")
         self.parser.add_option("-t", "--test", help="Unit test option",
-                               action="store_false", dest="test", default=True)
+                          action="store_false", dest="test", default=True)
         self.parser.add_option("--g-fatal-warnings",
                                action="store_true",
                                dest="fatal_warnings",
@@ -30,22 +32,22 @@ class TestOption(unittest.TestCase):
         def option_callback(option, opt, value, parser):
             raise Exception(self.EXCEPTION_MESSAGE)
 
-        group = GLib.option.OptionGroup(
+        group = OptionGroup(
             "unittest", "Unit test options", "Show all unittest options",
             option_list=[
-                GLib.option.make_option("-f", "-u", "--file", "--unit-file",
-                                        type="filename",
-                                        dest="unit_file",
-                                        help="Unit test option"),
-                GLib.option.make_option("--test-integer",
-                                        type="int",
-                                        dest="test_integer",
-                                        help="Unit integer option"),
-                GLib.option.make_option("--callback-failure-test",
-                                        action="callback",
-                                        callback=option_callback,
-                                        dest="test_integer",
-                                        help="Unit integer option"),
+                make_option("-f", "-u", "--file", "--unit-file",
+                                   type="filename",
+                                   dest="unit_file",
+                                   help="Unit test option"),
+                make_option("--test-integer",
+                                   type="int",
+                                   dest="test_integer",
+                                   help="Unit integer option"),
+                make_option("--callback-failure-test",
+                                   action="callback",
+                                   callback=option_callback,
+                                   dest="test_integer",
+                                   help="Unit integer option"),
             ])
         group.add_option("-t", "--test",
                          action="store_false",
@@ -55,7 +57,7 @@ class TestOption(unittest.TestCase):
         self.parser.add_option_group(group)
         return group
 
-    def test_parse_args(self):
+    def testParseArgs(self):
         options, args = self.parser.parse_args(
             ["test_option.py"])
         self.assertFalse(args)
@@ -68,12 +70,12 @@ class TestOption(unittest.TestCase):
             ["test_option.py", "foo", "bar"])
         self.assertEqual(args, [])
 
-    def test_parse_args_double_dash(self):
+    def testParseArgsDoubleDash(self):
         options, args = self.parser.parse_args(
             ["test_option.py", "--", "-xxx"])
-        # self.assertEqual(args, ["-xxx"])
+        #self.assertEqual(args, ["-xxx"])
 
-    def test_parse_args_group(self):
+    def testParseArgsGroup(self):
         group = self._create_group()
 
         options, args = self.parser.parse_args(
@@ -87,20 +89,20 @@ class TestOption(unittest.TestCase):
         self.assertEqual(group.values.unit_file, "test")
         self.assertFalse(args)
 
-    def test_option_value_error(self):
+    def testOptionValueError(self):
         self._create_group()
-        self.assertRaises(GLib.option.OptionValueError, self.parser.parse_args,
+        self.assertRaises(OptionValueError, self.parser.parse_args,
                           ["test_option.py", "--test-integer=text"])
 
-    def test_bad_option_error(self):
-        self.assertRaises(GLib.option.BadOptionError,
+    def testBadOptionError(self):
+        self.assertRaises(BadOptionError,
                           self.parser.parse_args,
                           ["test_option.py", "--unknwon-option"])
 
-    def test_option_group_constructor(self):
-        self.assertRaises(TypeError, GLib.option.OptionGroup)
+    def testOptionGroupConstructor(self):
+        self.assertRaises(TypeError, OptionGroup)
 
-    def test_standard_error(self):
+    def testStandardError(self):
         self._create_group()
         sio = StringIO()
         old_stderr = sys.stderr
similarity index 53%
rename from tests/test_overrides_gtk.py
rename to tests/test_overrides.py
index 61b7dc0..aef20e8 100644 (file)
 # -*- Mode: Python; py-indent-offset: 4 -*-
-# coding: UTF-8
 # vim: tabstop=4 shiftwidth=4 expandtab
 
-import contextlib
 import unittest
-import time
-import sys
-import warnings
-
-from helper import ignore_gi_deprecation_warnings, capture_glib_warnings
 
-import gi.overrides
+import sys
+sys.path.insert(0, "../")
+
+from compathelper import _long, _unicode, _bytes
+
+from gi.repository import GLib
+from gi.repository import GObject
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Gio
+from gi.repository import Pango
+from gi.repository import GdkPixbuf
+import gi.overrides as overrides
 import gi.types
-from gi.repository import GLib, GObject
-
-try:
-    from gi.repository import Gtk, GdkPixbuf, Gdk
-    PyGTKDeprecationWarning = Gtk.PyGTKDeprecationWarning
-except ImportError:
-    Gtk = None
-    PyGTKDeprecationWarning = None
-    GdkPixbuf = None
-    Gdk = None
-
-
-@contextlib.contextmanager
-def realized(widget):
-    """Makes sure the widget is realized.
 
-    view = Gtk.TreeView()
-    with realized(view):
-        do_something(view)
-    """
 
-    if isinstance(widget, Gtk.Window):
-        toplevel = widget
-    else:
-        toplevel = widget.get_parent_window()
+class TestRegistry(unittest.TestCase):
 
-    if toplevel is None:
-        window = Gtk.Window()
-        window.add(widget)
-
-    widget.realize()
-    while Gtk.events_pending():
-        Gtk.main_iteration()
-    assert widget.get_realized()
-    yield widget
+    def test_non_gi(self):
+        class MyClass:
+            pass
 
-    if toplevel is None:
-        window.remove(widget)
-        window.destroy()
+        try:
+            overrides.override(MyClass)
+            self.fail('unexpected success of overriding non-GI class')
+        except TypeError as e:
+            self.assertTrue('Can not override a type MyClass' in str(e))
+
+
+class TestGLib(unittest.TestCase):
+
+    def test_gvariant_create(self):
+        # simple values
+
+        variant = GLib.Variant('i', 42)
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_int32(), 42)
+
+        variant = GLib.Variant('s', '')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_string(), '')
+
+        variant = GLib.Variant('s', 'hello')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_string(), 'hello')
+
+        # boxed variant
+        variant = GLib.Variant('v', GLib.Variant('i', 42))
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_type_string(), 'i')
+        self.assertEqual(variant.get_variant().get_int32(), 42)
+
+        variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
+        self.assertEqual(variant.get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_type_string(), 'v')
+        self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
+        self.assertEqual(variant.get_variant().get_variant().get_int32(), 42)
+
+        # tuples
+
+        variant = GLib.Variant('()', ())
+        self.assertEqual(variant.get_type_string(), '()')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('(i)', (3,))
+        self.assertEqual(variant.get_type_string(), '(i)')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.n_children(), 1)
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_int32(), 3)
+
+        variant = GLib.Variant('(ss)', ('mec', 'mac'))
+        self.assertEqual(variant.get_type_string(), '(ss)')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), 'mec')
+        self.assertEqual(variant.get_child_value(1).get_string(), 'mac')
+
+        # nested tuples
+        variant = GLib.Variant('((si)(ub))', (('hello', -1), (42, True)))
+        self.assertEqual(variant.get_type_string(), '((si)(ub))')
+        self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
+
+        # dictionaries
+
+        variant = GLib.Variant('a{si}', {})
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'a{si}')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('a{si}', {'': 1, 'key1': 2, 'key2': 3})
+        self.assertEqual(variant.get_type_string(), 'a{si}')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(2), GLib.Variant))
+        self.assertEqual(variant.unpack(), {'': 1, 'key1': 2, 'key2': 3})
+
+        # nested dictionaries
+        variant = GLib.Variant('a{sa{si}}', {})
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
+        self.assertEqual(variant.n_children(), 0)
+
+        d = {'': {'': 1, 'keyn1': 2},
+             'key1': {'key11': 11, 'key12': 12}}
+        variant = GLib.Variant('a{sa{si}}', d)
+        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertEqual(variant.unpack(), d)
+
+        # arrays
+
+        variant = GLib.Variant('ai', [])
+        self.assertEqual(variant.get_type_string(), 'ai')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('ai', [1, 2])
+        self.assertEqual(variant.get_type_string(), 'ai')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_int32(), 1)
+        self.assertEqual(variant.get_child_value(1).get_int32(), 2)
+
+        variant = GLib.Variant('as', [])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('as', [''])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), '')
+
+        variant = GLib.Variant('as', ['hello', 'world'])
+        self.assertEqual(variant.get_type_string(), 'as')
+        self.assertTrue(isinstance(variant, GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
+        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
+        self.assertEqual(variant.get_child_value(0).get_string(), 'hello')
+        self.assertEqual(variant.get_child_value(1).get_string(), 'world')
+
+        # nested arrays
+        variant = GLib.Variant('aai', [])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('aai', [[]])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 0)
+
+        variant = GLib.Variant('aai', [[1, 2], [3, 4, 5]])
+        self.assertEqual(variant.get_type_string(), 'aai')
+        self.assertEqual(variant.unpack(), [[1, 2], [3, 4, 5]])
+
+        #
+        # complex types
+        #
+
+        variant = GLib.Variant('(as)', ([],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 0)
+
+        variant = GLib.Variant('(as)', ([''],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), '')
+
+        variant = GLib.Variant('(as)', (['hello'],))
+        self.assertEqual(variant.get_type_string(), '(as)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
+
+        obj = {'a1': (1, True), 'a2': (2, False)}
+        variant = GLib.Variant('a{s(ib)}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
+        self.assertEqual(variant.unpack(), obj)
+
+        obj = {'a1': (1, GLib.Variant('b', True)), 'a2': (2, GLib.Variant('y', 255))}
+        variant = GLib.Variant('a{s(iv)}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{s(iv)}')
+        self.assertEqual(variant.unpack(), {'a1': (1, True), 'a2': (2, 255)})
+
+        obj = (1, {'a': {'a1': True, 'a2': False},
+                   'b': {'b1': False},
+                   'c': {}
+                  },
+               'foo')
+        variant = GLib.Variant('(ia{sa{sb}}s)', obj)
+        self.assertEqual(variant.get_type_string(), '(ia{sa{sb}}s)')
+        self.assertEqual(variant.unpack(), obj)
+
+        obj = {"frequency": GLib.Variant('t', 738000000),
+            "hierarchy": GLib.Variant('i', 0),
+            "bandwidth": GLib.Variant('x', 8),
+            "code-rate-hp": GLib.Variant('d', 2.0 / 3.0),
+            "constellation": GLib.Variant('s', "QAM16"),
+            "guard-interval": GLib.Variant('u', 4)}
+        variant = GLib.Variant('a{sv}', obj)
+        self.assertEqual(variant.get_type_string(), 'a{sv}')
+        self.assertEqual(variant.unpack(), {"frequency": 738000000,
+            "hierarchy": 0,
+            "bandwidth": 8,
+            "code-rate-hp": 2.0 / 3.0,
+            "constellation": "QAM16",
+            "guard-interval": 4})
+
+    def test_gvariant_create_errors(self):
+        # excess arguments
+        self.assertRaises(TypeError, GLib.Variant, 'i', 42, 3)
+        self.assertRaises(TypeError, GLib.Variant, '(i)', (42, 3))
+
+        # not enough arguments
+        self.assertRaises(TypeError, GLib.Variant, '(ii)', (42,))
+
+        # data type mismatch
+        self.assertRaises(TypeError, GLib.Variant, 'i', 'hello')
+        self.assertRaises(TypeError, GLib.Variant, 's', 42)
+        self.assertRaises(TypeError, GLib.Variant, '(ss)', 'mec', 'mac')
+
+        # unimplemented data type
+        self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
+
+    def test_gvariant_unpack(self):
+        # simple values
+        res = GLib.Variant.new_int32(-42).unpack()
+        self.assertEqual(res, -42)
+
+        res = GLib.Variant.new_uint64(34359738368).unpack()
+        self.assertEqual(res, 34359738368)
+
+        res = GLib.Variant.new_boolean(True).unpack()
+        self.assertEqual(res, True)
+
+        res = GLib.Variant.new_object_path('/foo/Bar').unpack()
+        self.assertEqual(res, '/foo/Bar')
+
+        # variant
+        res = GLib.Variant('v', GLib.Variant.new_int32(-42)).unpack()
+        self.assertEqual(res, -42)
+
+        GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
+        self.assertEqual(res, -42)
+
+        # tuple
+        res = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
+                GLib.Variant.new_string('hello')).unpack()
+        self.assertEqual(res, (-1, 'hello'))
+
+        # array
+        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
+        vb.add_value(GLib.Variant.new_int32(-1))
+        vb.add_value(GLib.Variant.new_int32(3))
+        res = vb.end().unpack()
+        self.assertEqual(res, [-1, 3])
+
+        # dictionary
+        res = GLib.Variant('a{si}', {'key1': 1, 'key2': 2}).unpack()
+        self.assertEqual(res, {'key1': 1, 'key2': 2})
+
+    def test_gvariant_iteration(self):
+        # array index access
+        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
+        vb.add_value(GLib.Variant.new_int32(-1))
+        vb.add_value(GLib.Variant.new_int32(3))
+        v = vb.end()
+
+        self.assertEqual(len(v), 2)
+        self.assertEqual(v[0], -1)
+        self.assertEqual(v[1], 3)
+        self.assertEqual(v[-1], 3)
+        self.assertEqual(v[-2], -1)
+        self.assertRaises(IndexError, v.__getitem__, 2)
+        self.assertRaises(IndexError, v.__getitem__, -3)
+        self.assertRaises(ValueError, v.__getitem__, 'a')
+
+        # array iteration
+        self.assertEqual([x for x in v], [-1, 3])
+        self.assertEqual(list(v), [-1, 3])
+
+        # tuple index access
+        v = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
+                GLib.Variant.new_string('hello'))
+        self.assertEqual(len(v), 2)
+        self.assertEqual(v[0], -1)
+        self.assertEqual(v[1], 'hello')
+        self.assertEqual(v[-1], 'hello')
+        self.assertEqual(v[-2], -1)
+        self.assertRaises(IndexError, v.__getitem__, 2)
+        self.assertRaises(IndexError, v.__getitem__, -3)
+        self.assertRaises(ValueError, v.__getitem__, 'a')
+
+        # tuple iteration
+        self.assertEqual([x for x in v], [-1, 'hello'])
+        self.assertEqual(tuple(v), (-1, 'hello'))
+
+        # dictionary index access
+        vsi = GLib.Variant('a{si}', {'key1': 1, 'key2': 2})
+        vis = GLib.Variant('a{is}', {1: 'val1', 5: 'val2'})
+
+        self.assertEqual(len(vsi), 2)
+        self.assertEqual(vsi['key1'], 1)
+        self.assertEqual(vsi['key2'], 2)
+        self.assertRaises(KeyError, vsi.__getitem__, 'unknown')
+
+        self.assertEqual(len(vis), 2)
+        self.assertEqual(vis[1], 'val1')
+        self.assertEqual(vis[5], 'val2')
+        self.assertRaises(KeyError, vsi.__getitem__, 3)
+
+        # dictionary iteration
+        self.assertEqual(set(vsi.keys()), set(['key1', 'key2']))
+        self.assertEqual(set(vis.keys()), set([1, 5]))
+
+        # string index access
+        v = GLib.Variant('s', 'hello')
+        self.assertEqual(len(v), 5)
+        self.assertEqual(v[0], 'h')
+        self.assertEqual(v[4], 'o')
+        self.assertEqual(v[-1], 'o')
+        self.assertEqual(v[-5], 'h')
+        self.assertRaises(IndexError, v.__getitem__, 5)
+        self.assertRaises(IndexError, v.__getitem__, -6)
+
+        # string iteration
+        self.assertEqual([x for x in v], ['h', 'e', 'l', 'l', 'o'])
+
+    def test_variant_split_signature(self):
+        self.assertEqual(GLib.Variant.split_signature('()'), [])
+
+        self.assertEqual(GLib.Variant.split_signature('s'), ['s'])
+
+        self.assertEqual(GLib.Variant.split_signature('as'), ['as'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s)'), ['s'])
+
+        self.assertEqual(GLib.Variant.split_signature('(iso)'), ['i', 's', 'o'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s(ss)i(ii))'),
+                ['s', '(ss)', 'i', '(ii)'])
+
+        self.assertEqual(GLib.Variant.split_signature('(as)'), ['as'])
+
+        self.assertEqual(GLib.Variant.split_signature('(s(ss)iaiaasa(ii))'),
+                ['s', '(ss)', 'i', 'ai', 'aas', 'a(ii)'])
+
+        self.assertEqual(GLib.Variant.split_signature('(a{iv}(ii)((ss)a{s(ss)}))'),
+                ['a{iv}', '(ii)', '((ss)a{s(ss)})'])
+
+    def test_variant_hash(self):
+        v1 = GLib.Variant('s', 'somestring')
+        v2 = GLib.Variant('s', 'somestring')
+        v3 = GLib.Variant('s', 'somestring2')
+
+        self.assertTrue(v2 in set([v1, v3]))
+        self.assertTrue(v2 in frozenset([v1, v3]))
+        self.assertTrue(v2 in {v1: '1', v3: '2'})
+
+    def test_variant_compare(self):
+        # Check if identical GVariant are equal
+
+        def assert_equal(vtype, value):
+            self.assertEqual(GLib.Variant(vtype, value), GLib.Variant(vtype, value))
+
+        def assert_not_equal(vtype1, value1, vtype2, value2):
+            self.assertNotEqual(GLib.Variant(vtype1, value1), GLib.Variant(vtype2, value2))
+
+        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
+        for num in numbers:
+            assert_equal(num, 42)
+            assert_not_equal(num, 42, num, 41)
+            assert_not_equal(num, 42, 's', '42')
+
+        assert_equal('s', 'something')
+        assert_not_equal('s', 'something', 's', 'somethingelse')
+        assert_not_equal('s', 'something', 'i', 1234)
+
+        assert_equal('g', 'dustybinqhogx')
+        assert_not_equal('g', 'dustybinqhogx', 'g', 'dustybin')
+        assert_not_equal('g', 'dustybinqhogx', 'i', 1234)
+
+        assert_equal('o', '/dev/null')
+        assert_not_equal('o', '/dev/null', 'o', '/dev/zero')
+        assert_not_equal('o', '/dev/null', 'i', 1234)
+
+        assert_equal('(s)', ('strtuple',))
+        assert_not_equal('(s)', ('strtuple',), '(s)', ('strtuple2',))
+
+        assert_equal('a{si}', {'str': 42})
+        assert_not_equal('a{si}', {'str': 42}, 'a{si}', {'str': 43})
+
+        assert_equal('v', GLib.Variant('i', 42))
+        assert_not_equal('v', GLib.Variant('i', 42), 'v', GLib.Variant('i', 43))
+
+    def test_variant_bool(self):
+        # Check if the GVariant bool matches the unpacked Pythonic bool
+
+        def assert_equals_bool(vtype, value):
+            self.assertEqual(bool(GLib.Variant(vtype, value)), bool(value))
+
+        # simple values
+        assert_equals_bool('b', True)
+        assert_equals_bool('b', False)
+
+        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
+        for number in numbers:
+            assert_equals_bool(number, 0)
+            assert_equals_bool(number, 1)
+
+        assert_equals_bool('s', '')
+        assert_equals_bool('g', '')
+        assert_equals_bool('s', 'something')
+        assert_equals_bool('o', '/dev/null')
+        assert_equals_bool('g', 'dustybinqhogx')
+
+        # arrays
+        assert_equals_bool('ab', [True])
+        assert_equals_bool('ab', [False])
+        for number in numbers:
+            assert_equals_bool('a' + number, [])
+            assert_equals_bool('a' + number, [0])
+        assert_equals_bool('as', [])
+        assert_equals_bool('as', [''])
+        assert_equals_bool('ao', [])
+        assert_equals_bool('ao', ['/'])
+        assert_equals_bool('ag', [])
+        assert_equals_bool('ag', [''])
+        assert_equals_bool('aai', [[]])
+
+        # tuples
+        assert_equals_bool('()', ())
+        for number in numbers:
+            assert_equals_bool('(' + number + ')', (0,))
+        assert_equals_bool('(s)', ('',))
+        assert_equals_bool('(o)', ('/',))
+        assert_equals_bool('(g)', ('',))
+        assert_equals_bool('(())', ((),))
+
+        # dictionaries
+        assert_equals_bool('a{si}', {})
+        assert_equals_bool('a{si}', {'': 0})
+
+        # complex types, always True
+        assert_equals_bool('(as)', ([],))
+        assert_equals_bool('a{s(i)}', {'': (0,)})
+
+        # variant types, recursive unpacking
+        assert_equals_bool('v', GLib.Variant('i', 0))
+        assert_equals_bool('v', GLib.Variant('i', 1))
+
+
+class TestPango(unittest.TestCase):
+
+    def test_default_font_description(self):
+        desc = Pango.FontDescription()
+        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
+
+    def test_font_description(self):
+        desc = Pango.FontDescription('monospace')
+        self.assertEqual(desc.get_family(), 'monospace')
+        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
+
+    def test_layout(self):
+        self.assertRaises(TypeError, Pango.Layout)
+        context = Pango.Context()
+        layout = Pango.Layout(context)
+        self.assertEqual(layout.get_context(), context)
+
+        layout.set_markup("Foobar")
+        self.assertEqual(layout.get_text(), "Foobar")
+
+
+class TestGdk(unittest.TestCase):
+
+    def test_constructor(self):
+        attribute = Gdk.WindowAttr()
+        attribute.window_type = Gdk.WindowType.CHILD
+        attributes_mask = Gdk.WindowAttributesType.X | \
+            Gdk.WindowAttributesType.Y
+        window = Gdk.Window(None, attribute, attributes_mask)
+        self.assertEqual(window.get_window_type(), Gdk.WindowType.CHILD)
+
+    def test_color(self):
+        color = Gdk.Color(100, 200, 300)
+        self.assertEqual(color.red, 100)
+        self.assertEqual(color.green, 200)
+        self.assertEqual(color.blue, 300)
+        self.assertEqual(color, Gdk.Color(100, 200, 300))
+        self.assertNotEquals(color, Gdk.Color(1, 2, 3))
+
+    def test_rgba(self):
+        self.assertEqual(Gdk.RGBA, overrides.Gdk.RGBA)
+        rgba = Gdk.RGBA(0.1, 0.2, 0.3, 0.4)
+        self.assertEqual(rgba, Gdk.RGBA(0.1, 0.2, 0.3, 0.4))
+        self.assertNotEquals(rgba, Gdk.RGBA(0.0, 0.2, 0.3, 0.4))
+        self.assertEqual(rgba.red, 0.1)
+        self.assertEqual(rgba.green, 0.2)
+        self.assertEqual(rgba.blue, 0.3)
+        self.assertEqual(rgba.alpha, 0.4)
+        rgba.green = 0.9
+        self.assertEqual(rgba.green, 0.9)
+
+    def test_event(self):
+        event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
+        self.assertEqual(event.type, Gdk.EventType.CONFIGURE)
+        self.assertEqual(event.send_event, 0)
+
+        event = Gdk.Event.new(Gdk.EventType.DRAG_MOTION)
+        event.x_root, event.y_root = 0, 5
+        self.assertEqual(event.x_root, 0)
+        self.assertEqual(event.y_root, 5)
+
+        event = Gdk.Event()
+        event.type = Gdk.EventType.SCROLL
+        self.assertRaises(AttributeError, lambda: getattr(event, 'foo_bar'))
+
+    def test_event_structures(self):
+        def button_press_cb(button, event):
+            self.assertTrue(isinstance(event, Gdk.EventButton))
+            self.assertTrue(event.type == Gdk.EventType.BUTTON_PRESS)
+            self.assertEqual(event.send_event, 0)
+            self.assertEqual(event.get_state(), Gdk.ModifierType.CONTROL_MASK)
+            self.assertEqual(event.get_root_coords(), (2, 5))
+
+            event.time = 12345
+            self.assertEqual(event.get_time(), 12345)
 
-    while Gtk.events_pending():
-        Gtk.main_iteration()
+        w = Gtk.Window()
+        b = Gtk.Button()
+        b.connect('button-press-event', button_press_cb)
+        w.add(b)
+        w.show_all()
+        Gdk.test_simulate_button(b.get_window(),
+                                 2, 5,
+                                 0,
+                                 Gdk.ModifierType.CONTROL_MASK,
+                                 Gdk.EventType.BUTTON_PRESS)
+
+    def test_cursor(self):
+        self.assertEqual(Gdk.Cursor, overrides.Gdk.Cursor)
+        c = Gdk.Cursor(Gdk.CursorType.WATCH)
+        self.assertNotEqual(c, None)
+        c = Gdk.Cursor(cursor_type=Gdk.CursorType.WATCH)
+        self.assertNotEqual(c, None)
+
+        display_manager = Gdk.DisplayManager.get()
+        display = display_manager.get_default_display()
+
+        test_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,
+                                           False,
+                                           8,
+                                           5,
+                                           10)
+
+        c = Gdk.Cursor(display,
+                       test_pixbuf,
+                       y=0, x=0)
+
+        self.assertNotEqual(c, None)
+        self.assertRaises(ValueError, Gdk.Cursor, 1, 2, 3)
 
 
-@unittest.skipUnless(Gtk, 'Gtk not available')
-@ignore_gi_deprecation_warnings
 class TestGtk(unittest.TestCase):
+
     def test_container(self):
         box = Gtk.Box()
         self.assertTrue(isinstance(box, Gtk.Box))
@@ -73,29 +589,30 @@ class TestGtk(unittest.TestCase):
         self.assertTrue(label2 in box)
         self.assertEqual(len(box), 2)
         self.assertTrue(box)
-        labels = [x for x in box]
-        self.assertEqual(labels, [label, label2])
+        l = [x for x in box]
+        self.assertEqual(l, [label, label2])
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
     def test_actions(self):
-        self.assertEqual(Gtk.Action, gi.overrides.Gtk.Action)
-        action = Gtk.Action(name="test", label="Test", tooltip="Test Action", stock_id=Gtk.STOCK_COPY)
+        self.assertEqual(Gtk.Action, overrides.Gtk.Action)
+        self.assertRaises(TypeError, Gtk.Action)
+        action = Gtk.Action("test", "Test", "Test Action", Gtk.STOCK_COPY)
         self.assertEqual(action.get_name(), "test")
         self.assertEqual(action.get_label(), "Test")
         self.assertEqual(action.get_tooltip(), "Test Action")
         self.assertEqual(action.get_stock_id(), Gtk.STOCK_COPY)
 
-        self.assertEqual(Gtk.RadioAction, gi.overrides.Gtk.RadioAction)
-        action = Gtk.RadioAction(name="test", label="Test", tooltip="Test Action", stock_id=Gtk.STOCK_COPY, value=1)
+        self.assertEqual(Gtk.RadioAction, overrides.Gtk.RadioAction)
+        self.assertRaises(TypeError, Gtk.RadioAction)
+        action = Gtk.RadioAction("test", "Test", "Test Action", Gtk.STOCK_COPY, 1)
         self.assertEqual(action.get_name(), "test")
         self.assertEqual(action.get_label(), "Test")
         self.assertEqual(action.get_tooltip(), "Test Action")
         self.assertEqual(action.get_stock_id(), Gtk.STOCK_COPY)
         self.assertEqual(action.get_current_value(), 1)
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
     def test_actiongroup(self):
-        self.assertEqual(Gtk.ActionGroup, gi.overrides.Gtk.ActionGroup)
+        self.assertEqual(Gtk.ActionGroup, overrides.Gtk.ActionGroup)
+        self.assertRaises(TypeError, Gtk.ActionGroup)
 
         action_group = Gtk.ActionGroup(name='TestActionGroup')
         callback_data = "callback data"
@@ -110,12 +627,12 @@ class TestGtk(unittest.TestCase):
             ('test-action1', None, 'Test Action 1',
              None, None, test_action_callback_data),
             ('test-action2', Gtk.STOCK_COPY, 'Test Action 2',
-             None, None, test_action_callback_data)], callback_data)
+              None, None, test_action_callback_data)], callback_data)
         action_group.add_toggle_actions([
             ('test-toggle-action1', None, 'Test Toggle Action 1',
              None, None, test_action_callback_data, False),
             ('test-toggle-action2', Gtk.STOCK_COPY, 'Test Toggle Action 2',
-             None, None, test_action_callback_data, True)], callback_data)
+              None, None, test_action_callback_data, True)], callback_data)
         action_group.add_radio_actions([
             ('test-radio-action1', None, 'Test Radio Action 1'),
             ('test-radio-action2', Gtk.STOCK_COPY, 'Test Radio Action 2')], 1,
@@ -135,11 +652,12 @@ class TestGtk(unittest.TestCase):
             expected_results.remove(a)
             action.activate()
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
     def test_uimanager(self):
-        self.assertEqual(Gtk.UIManager, gi.overrides.Gtk.UIManager)
+        self.assertEqual(Gtk.UIManager, overrides.Gtk.UIManager)
         ui = Gtk.UIManager()
-        ui.add_ui_from_string("""<ui>
+        ui.add_ui_from_string(
+"""
+<ui>
     <menubar name="menubar1"></menubar>
 </ui>
 """
@@ -155,141 +673,114 @@ class TestGtk(unittest.TestCase):
         self.assertEqual(ag, groups[-2])
         self.assertEqual(ag2, groups[-1])
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_uimanager_nonascii(self):
-        ui = Gtk.UIManager()
-        ui.add_ui_from_string(b'<ui><menubar name="menub\xc3\xa6r1" /></ui>'.decode('UTF-8'))
-        mi = ui.get_widget("/menubær1")
-        self.assertEqual(type(mi), Gtk.MenuBar)
+    def test_builder(self):
+        self.assertEqual(Gtk.Builder, overrides.Gtk.Builder)
 
-    def test_window(self):
-        # standard Window
-        w = Gtk.Window()
-        self.assertEqual(w.get_property('type'), Gtk.WindowType.TOPLEVEL)
+        class SignalTest(GObject.GObject):
+            __gtype_name__ = "GIOverrideSignalTest"
+            __gsignals__ = {
+                "test-signal": (GObject.SignalFlags.RUN_FIRST,
+                                None,
+                                []),
+            }
 
-        # type works as keyword argument
-        w = Gtk.Window(type=Gtk.WindowType.POPUP)
-        self.assertEqual(w.get_property('type'), Gtk.WindowType.POPUP)
+        class SignalCheck:
+            def __init__(self):
+                self.sentinel = 0
+                self.after_sentinel = 0
 
-        class TestWindow(Gtk.Window):
-            __gtype_name__ = "TestWindow"
+            def on_signal_1(self, *args):
+                self.sentinel += 1
+                self.after_sentinel += 1
 
-        # works from builder
+            def on_signal_3(self, *args):
+                self.sentinel += 3
+
+            def on_signal_after(self, *args):
+                if self.after_sentinel == 1:
+                    self.after_sentinel += 1
+
+        signal_checker = SignalCheck()
         builder = Gtk.Builder()
-        builder.add_from_string('''
+
+        # add object1 to the builder
+        builder.add_from_string(
+"""
 <interface>
-  <object class="GtkWindow" id="win">
-    <property name="type">popup</property>
+  <object class="GIOverrideSignalTest" id="object1">
+      <signal name="test-signal" after="yes" handler="on_signal_after" />
+      <signal name="test-signal" handler="on_signal_1" />
   </object>
-  <object class="TestWindow" id="testwin">
+</interface>
+""")
+
+        # only add object3 to the builder
+        builder.add_objects_from_string(
+"""
+<interface>
+  <object class="GIOverrideSignalTest" id="object2">
+      <signal name="test-signal" handler="on_signal_2" />
   </object>
-  <object class="TestWindow" id="testpop">
-    <property name="type">popup</property>
+  <object class="GIOverrideSignalTest" id="object3">
+      <signal name="test-signal" handler="on_signal_3" />
   </object>
-</interface>''')
-        self.assertEqual(builder.get_object('win').get_property('type'),
-                         Gtk.WindowType.POPUP)
-        self.assertEqual(builder.get_object('testwin').get_property('type'),
-                         Gtk.WindowType.TOPLEVEL)
-        self.assertEqual(builder.get_object('testpop').get_property('type'),
-                         Gtk.WindowType.POPUP)
-
-    def test_dialog_classes(self):
-        self.assertEqual(Gtk.Dialog, gi.overrides.Gtk.Dialog)
-        self.assertEqual(Gtk.FileChooserDialog, gi.overrides.Gtk.FileChooserDialog)
-        self.assertEqual(Gtk.RecentChooserDialog, gi.overrides.Gtk.RecentChooserDialog)
-        if Gtk._version != "4.0":
-            self.assertEqual(Gtk.ColorSelectionDialog, gi.overrides.Gtk.ColorSelectionDialog)
-            self.assertEqual(Gtk.FontSelectionDialog, gi.overrides.Gtk.FontSelectionDialog)
-
-    def test_dialog_base(self):
-        dialog = Gtk.Dialog(title='Foo', modal=True)
+  <object class="GIOverrideSignalTest" id="object4">
+      <signal name="test-signal" handler="on_signal_4" />
+  </object>
+</interface>
+
+""",
+            ['object3'])
+
+        # hook up signals
+        builder.connect_signals(signal_checker)
+
+        # call their notify signals and check sentinel
+        objects = builder.get_objects()
+        self.assertEqual(len(objects), 2)
+        for obj in objects:
+            obj.emit('test-signal')
+
+        self.assertEqual(signal_checker.sentinel, 4)
+        self.assertEqual(signal_checker.after_sentinel, 2)
+
+    def test_dialogs(self):
+        self.assertEqual(Gtk.Dialog, overrides.Gtk.Dialog)
+        self.assertEqual(Gtk.AboutDialog, overrides.Gtk.AboutDialog)
+        self.assertEqual(Gtk.MessageDialog, overrides.Gtk.MessageDialog)
+        self.assertEqual(Gtk.ColorSelectionDialog, overrides.Gtk.ColorSelectionDialog)
+        self.assertEqual(Gtk.FileChooserDialog, overrides.Gtk.FileChooserDialog)
+        self.assertEqual(Gtk.FontSelectionDialog, overrides.Gtk.FontSelectionDialog)
+        self.assertEqual(Gtk.RecentChooserDialog, overrides.Gtk.RecentChooserDialog)
+
+        # Gtk.Dialog
+        dialog = Gtk.Dialog(title='Foo',
+                            flags=Gtk.DialogFlags.MODAL,
+                            buttons=('test-button1', 1))
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
+
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+
         self.assertEqual('Foo', dialog.get_title())
         self.assertTrue(dialog.get_modal())
-
-    def test_dialog_deprecations(self):
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            dialog = Gtk.Dialog(title='Foo', flags=Gtk.DialogFlags.MODAL)
-            self.assertTrue(dialog.get_modal())
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGTKDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*flags.*modal.*')
-
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            dialog = Gtk.Dialog(title='Foo', flags=Gtk.DialogFlags.DESTROY_WITH_PARENT)
-            self.assertTrue(dialog.get_destroy_with_parent())
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGTKDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*flags.*destroy_with_parent.*')
-
-    def test_dialog_deprecation_stacklevels(self):
-        # Test warning levels are setup to give the correct filename for
-        # deprecations in different classes in the inheritance hierarchy.
-
-        # Base class
-        self.assertEqual(Gtk.Dialog, gi.overrides.Gtk.Dialog)
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            Gtk.Dialog(flags=Gtk.DialogFlags.MODAL)
-            self.assertEqual(len(warn), 1)
-            self.assertRegexpMatches(warn[0].filename, '.*test_overrides_gtk.*')
-
-        # Validate overridden base with overridden sub-class.
-        self.assertEqual(Gtk.MessageDialog, gi.overrides.Gtk.MessageDialog)
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            Gtk.MessageDialog(flags=Gtk.DialogFlags.MODAL)
-            self.assertEqual(len(warn), 1)
-            self.assertRegexpMatches(warn[0].filename, '.*test_overrides_gtk.*')
-
-        # Validate overridden base with non-overridden sub-class.
-        self.assertEqual(Gtk.AboutDialog, gi.repository.Gtk.AboutDialog)
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            Gtk.AboutDialog(flags=Gtk.DialogFlags.MODAL)
-            self.assertEqual(len(warn), 1)
-            self.assertRegexpMatches(warn[0].filename, '.*test_overrides_gtk.*')
-
-    def test_dialog_add_buttons(self):
-        # The overloaded "buttons" keyword gives a warning when attempting
-        # to use it for adding buttons as was available in PyGTK.
-        with warnings.catch_warnings(record=True) as warn:
-            warnings.simplefilter('always')
-            dialog = Gtk.Dialog(title='Foo', modal=True,
-                                buttons=('test-button1', 1))
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGTKDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*ButtonsType.*add_buttons.*')
-
-        dialog.add_buttons('test-button2', 2, 'gtk-close', Gtk.ResponseType.CLOSE)
         button = dialog.get_widget_for_response(1)
         self.assertEqual('test-button1', button.get_label())
         button = dialog.get_widget_for_response(2)
         self.assertEqual('test-button2', button.get_label())
         button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
-        self.assertEqual('gtk-close', button.get_label())
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
 
-    def test_about_dialog(self):
+        # Gtk.AboutDialog
         dialog = Gtk.AboutDialog()
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
 
-        # AboutDialog is not sub-classed in overrides, make sure
-        # the mro still injects the base class "add_buttons" override.
-        self.assertTrue(hasattr(dialog, 'add_buttons'))
-
-    def test_message_dialog(self):
+        # Gtk.MessageDialog
         dialog = Gtk.MessageDialog(title='message dialog test',
-                                   modal=True,
+                                   flags=Gtk.DialogFlags.MODAL,
                                    buttons=Gtk.ButtonsType.OK,
-                                   text='dude!')
+                                   message_format='dude!')
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
 
@@ -306,588 +797,71 @@ class TestGtk(unittest.TestCase):
         self.assertEqual(dialog.get_property('secondary-text'), '2nd markup')
         self.assertTrue(dialog.get_property('secondary-use-markup'))
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_color_selection_dialog(self):
-        dialog = Gtk.ColorSelectionDialog(title="color selection dialog test")
+        # Gtk.ColorSelectionDialog
+        dialog = Gtk.ColorSelectionDialog("color selection dialog test")
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
         self.assertEqual('color selection dialog test', dialog.get_title())
 
-    def test_file_chooser_dialog(self):
-        # might cause a GVFS warning, do not break on this
-        with capture_glib_warnings(allow_warnings=True):
-            dialog = Gtk.FileChooserDialog(title='file chooser dialog test',
-                                           action=Gtk.FileChooserAction.SAVE)
-
+        # Gtk.FileChooserDialog
+        dialog = Gtk.FileChooserDialog(title='file chooser dialog test',
+                                       buttons=('test-button1', 1),
+                                       action=Gtk.FileChooserAction.SAVE)
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
-        self.assertEqual('file chooser dialog test', dialog.get_title())
 
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+        self.assertEqual('file chooser dialog test', dialog.get_title())
+        button = dialog.get_widget_for_response(1)
+        self.assertEqual('test-button1', button.get_label())
+        button = dialog.get_widget_for_response(2)
+        self.assertEqual('test-button2', button.get_label())
+        button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
         action = dialog.get_property('action')
         self.assertEqual(Gtk.FileChooserAction.SAVE, action)
 
-    def test_file_chooser_dialog_default_action(self):
-        # might cause a GVFS warning, do not break on this
-        with capture_glib_warnings(allow_warnings=True):
-            dialog = Gtk.FileChooserDialog(title='file chooser dialog test')
-
-        action = dialog.get_property('action')
-        self.assertEqual(Gtk.FileChooserAction.OPEN, action)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_font_selection_dialog(self):
-        dialog = Gtk.FontSelectionDialog(title="font selection dialog test")
+        # Gtk.FontSelectionDialog
+        dialog = Gtk.ColorSelectionDialog("font selection dialog test")
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
         self.assertEqual('font selection dialog test', dialog.get_title())
 
-    def test_recent_chooser_dialog(self):
+        # Gtk.RecentChooserDialog
         test_manager = Gtk.RecentManager()
-        dialog = Gtk.RecentChooserDialog(title='recent chooser dialog test',
-                                         recent_manager=test_manager)
-        self.assertTrue(isinstance(dialog, Gtk.Dialog))
-        self.assertTrue(isinstance(dialog, Gtk.Window))
-        self.assertEqual('recent chooser dialog test', dialog.get_title())
-
-    class TestClass(GObject.GObject):
-        __gtype_name__ = "GIOverrideTreeAPITest"
-
-        def __init__(self, tester, int_value, string_value):
-            super(TestGtk.TestClass, self).__init__()
-            self.tester = tester
-            self.int_value = int_value
-            self.string_value = string_value
-
-        def check(self, int_value, string_value):
-            self.tester.assertEqual(int_value, self.int_value)
-            self.tester.assertEqual(string_value, self.string_value)
-
-    def test_buttons(self):
-        self.assertEqual(Gtk.Button, gi.overrides.Gtk.Button)
-
-        # test Gtk.Button
-        button = Gtk.Button()
-        self.assertTrue(isinstance(button, Gtk.Button))
-        self.assertTrue(isinstance(button, Gtk.Container))
-        self.assertTrue(isinstance(button, Gtk.Widget))
-
-        if Gtk._version != "4.0":
-            # Using stock items causes hard warning in devel versions of GTK+.
-            with capture_glib_warnings(allow_warnings=True):
-                button = Gtk.Button.new_from_stock(Gtk.STOCK_CLOSE)
-
-            self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
-            self.assertTrue(button.get_use_stock())
-            self.assertTrue(button.get_use_underline())
-
-            # test Gtk.Button use_stock
-            button = Gtk.Button(label=Gtk.STOCK_CLOSE, use_stock=True,
-                                use_underline=True)
-            self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
-            self.assertTrue(button.get_use_stock())
-            self.assertTrue(button.get_use_underline())
-
-        # test Gtk.LinkButton
-        button = Gtk.LinkButton(uri='http://www.Gtk.org', label='Gtk')
-        self.assertTrue(isinstance(button, Gtk.Button))
-        self.assertTrue(isinstance(button, Gtk.Container))
-        self.assertTrue(isinstance(button, Gtk.Widget))
-        self.assertEqual('http://www.Gtk.org', button.get_uri())
-        self.assertEqual('Gtk', button.get_label())
-
-    def test_inheritance(self):
-        for name in gi.overrides.Gtk.__all__:
-            over = getattr(gi.overrides.Gtk, name)
-            for element in dir(Gtk):
-                try:
-                    klass = getattr(Gtk, element)
-                    info = klass.__info__
-                except (NotImplementedError, AttributeError):
-                    continue
-
-                # Get all parent classes and interfaces klass inherits from
-                if isinstance(info, gi.types.ObjectInfo):
-                    classes = list(info.get_interfaces())
-                    parent = info.get_parent()
-                    while parent.get_name() != "Object":
-                        classes.append(parent)
-                        parent = parent.get_parent()
-                    classes = [kl for kl in classes if kl.get_namespace() == "Gtk"]
-                else:
-                    continue
-
-                for kl in classes:
-                    if kl.get_name() == name:
-                        self.assertTrue(issubclass(klass, over,),
-                                        "%r does not inherit from override %r" % (klass, over,))
-
-    def test_editable(self):
-        self.assertEqual(Gtk.Editable, gi.overrides.Gtk.Editable)
-
-        # need to use Gtk.Entry because Editable is an interface
-        entry = Gtk.Entry()
-        pos = entry.insert_text('HeWorld', 0)
-        self.assertEqual(pos, 7)
-        pos = entry.insert_text('llo ', 2)
-        self.assertEqual(pos, 6)
-        text = entry.get_chars(0, 11)
-        self.assertEqual('Hello World', text)
-
-    def test_label(self):
-        label = Gtk.Label(label='Hello')
-        self.assertTrue(isinstance(label, Gtk.Widget))
-        self.assertEqual(label.get_text(), 'Hello')
-
-    def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
-                         step_increment=0.0, page_increment=0.0, page_size=0.0):
-        self.assertEqual(adjustment.get_value(), value)
-        self.assertEqual(adjustment.get_lower(), lower)
-        self.assertEqual(adjustment.get_upper(), upper)
-        self.assertEqual(adjustment.get_step_increment(), step_increment)
-        self.assertEqual(adjustment.get_page_increment(), page_increment)
-        self.assertEqual(adjustment.get_page_size(), page_size)
-
-    def test_adjustment(self):
-        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6, step_increment=4, page_increment=5, page_size=3)
-        self.adjustment_check(adjustment, value=1, lower=0, upper=6, step_increment=4, page_increment=5, page_size=3)
-
-        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6, step_increment=4, page_increment=5)
-        self.adjustment_check(adjustment, value=1, lower=0, upper=6, step_increment=4, page_increment=5)
-
-        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6, step_increment=4)
-        self.adjustment_check(adjustment, value=1, lower=0, upper=6, step_increment=4)
-
-        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6)
-        self.adjustment_check(adjustment, value=1, lower=0, upper=6)
-
-        adjustment = Gtk.Adjustment()
-        self.adjustment_check(adjustment)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_table(self):
-        table = Gtk.Table()
-        self.assertTrue(isinstance(table, Gtk.Table))
-        self.assertTrue(isinstance(table, Gtk.Container))
-        self.assertTrue(isinstance(table, Gtk.Widget))
-        self.assertEqual(table.get_size(), (1, 1))
-        self.assertEqual(table.get_homogeneous(), False)
-
-        table = Gtk.Table(n_rows=2, n_columns=3)
-        self.assertEqual(table.get_size(), (2, 3))
-        self.assertEqual(table.get_homogeneous(), False)
-
-        table = Gtk.Table(n_rows=2, n_columns=3, homogeneous=True)
-        self.assertEqual(table.get_size(), (2, 3))
-        self.assertEqual(table.get_homogeneous(), True)
-
-        label = Gtk.Label(label='Hello')
-        self.assertTrue(isinstance(label, Gtk.Widget))
-        table.attach(label, 0, 1, 0, 1)
-        self.assertEqual(label, table.get_children()[0])
-
-    def test_scrolledwindow(self):
-        sw = Gtk.ScrolledWindow()
-        self.assertTrue(isinstance(sw, Gtk.ScrolledWindow))
-        self.assertTrue(isinstance(sw, Gtk.Container))
-        self.assertTrue(isinstance(sw, Gtk.Widget))
-        sb = sw.get_hscrollbar()
-        self.assertEqual(sw.get_hadjustment(), sb.get_adjustment())
-        sb = sw.get_vscrollbar()
-        self.assertEqual(sw.get_vadjustment(), sb.get_adjustment())
-
-    def test_widget_drag_methods(self):
-        widget = Gtk.Button()
-
-        # here we are not checking functionality, only that the methods exist
-        # and except the right number of arguments
-
-        widget.drag_check_threshold(0, 0, 0, 0)
-
-        # drag_dest_ methods
-        widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
-        widget.drag_dest_add_image_targets()
-        widget.drag_dest_add_text_targets()
-        widget.drag_dest_add_uri_targets()
-        widget.drag_dest_get_track_motion()
-        widget.drag_dest_set_track_motion(True)
-        widget.drag_dest_get_target_list()
-        widget.drag_dest_set_target_list(None)
-        widget.drag_dest_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
-        widget.drag_dest_unset()
-
-        widget.drag_highlight()
-        widget.drag_unhighlight()
-
-        # drag_source_ methods
-        widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
-        widget.drag_source_add_image_targets()
-        widget.drag_source_add_text_targets()
-        widget.drag_source_add_uri_targets()
-        widget.drag_source_set_icon_name("_About")
-        widget.drag_source_set_icon_pixbuf(GdkPixbuf.Pixbuf())
-        if Gtk._version != "4.0":
-            widget.drag_source_set_icon_stock(Gtk.STOCK_ABOUT)
-        widget.drag_source_get_target_list()
-        widget.drag_source_set_target_list(None)
-        widget.drag_source_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
-        widget.drag_source_unset()
-
-        # these methods cannot be called because they require a valid drag on
-        # a real GdkWindow. So we only check that they exist and are callable.
-        if Gtk._version != "4.0":
-            self.assertTrue(hasattr(widget, 'drag_dest_set_proxy'))
-        self.assertTrue(hasattr(widget, 'drag_get_data'))
-
-    def test_drag_target_list(self):
-        mixed_target_list = [Gtk.TargetEntry.new('test0', 0, 0),
-                             ('test1', 1, 1),
-                             Gtk.TargetEntry.new('test2', 2, 2),
-                             ('test3', 3, 3)]
-
-        def _test_target_list(targets):
-            for i, target in enumerate(targets):
-                self.assertTrue(isinstance(target, Gtk.TargetEntry))
-                self.assertEqual(target.target, 'test' + str(i))
-                self.assertEqual(target.flags, i)
-                self.assertEqual(target.info, i)
-
-        _test_target_list(Gtk._construct_target_list(mixed_target_list))
-
-        widget = Gtk.Button()
-        widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
-        widget.drag_dest_set_target_list(mixed_target_list)
-        widget.drag_dest_get_target_list()
-
-        widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
-        widget.drag_source_set_target_list(mixed_target_list)
-        widget.drag_source_get_target_list()
-
-        treeview = Gtk.TreeView()
-        treeview.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK,
-                                          mixed_target_list,
-                                          Gdk.DragAction.DEFAULT | Gdk.DragAction.MOVE)
-
-        treeview.enable_model_drag_dest(mixed_target_list,
-                                        Gdk.DragAction.DEFAULT | Gdk.DragAction.MOVE)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_scrollbar(self):
-        adjustment = Gtk.Adjustment()
-
-        hscrollbar = Gtk.HScrollbar()
-        vscrollbar = Gtk.VScrollbar()
-        self.assertNotEqual(hscrollbar.props.adjustment, adjustment)
-        self.assertNotEqual(vscrollbar.props.adjustment, adjustment)
-
-        hscrollbar = Gtk.HScrollbar(adjustment=adjustment)
-        vscrollbar = Gtk.VScrollbar(adjustment=adjustment)
-        self.assertEqual(hscrollbar.props.adjustment, adjustment)
-        self.assertEqual(vscrollbar.props.adjustment, adjustment)
-
-    def test_iconview(self):
-        # PyGTK compat
-        iconview = Gtk.IconView()
-        self.assertEqual(iconview.props.model, None)
-
-        model = Gtk.ListStore(str)
-        iconview = Gtk.IconView(model=model)
-        self.assertEqual(iconview.props.model, model)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_toolbutton(self):
-        # PyGTK compat
-
-        # Using stock items causes hard warning in devel versions of GTK+.
-        with capture_glib_warnings(allow_warnings=True):
-            button = Gtk.ToolButton()
-            self.assertEqual(button.props.stock_id, None)
-
-            button = Gtk.ToolButton(stock_id='gtk-new')
-            self.assertEqual(button.props.stock_id, 'gtk-new')
-
-        icon = Gtk.Image.new_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.SMALL_TOOLBAR)
-        button = Gtk.ToolButton(label='mylabel', icon_widget=icon)
-        self.assertEqual(button.props.label, 'mylabel')
-        self.assertEqual(button.props.icon_widget, icon)
-
-    def test_toolbutton_gtk4(self):
-        icon = Gtk.Image.new()
-        button = Gtk.ToolButton(label='mylabel', icon_widget=icon)
-        self.assertEqual(button.props.label, 'mylabel')
-        self.assertEqual(button.props.icon_widget, icon)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_iconset(self):
-        Gtk.IconSet()
-        pixbuf = GdkPixbuf.Pixbuf()
-        Gtk.IconSet.new_from_pixbuf(pixbuf)
-
-    def test_viewport(self):
-        vadjustment = Gtk.Adjustment()
-        hadjustment = Gtk.Adjustment()
-
-        viewport = Gtk.Viewport(hadjustment=hadjustment,
-                                vadjustment=vadjustment)
-
-        self.assertEqual(viewport.props.vadjustment, vadjustment)
-        self.assertEqual(viewport.props.hadjustment, hadjustment)
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_stock_lookup(self):
-        stock_item = Gtk.stock_lookup('gtk-ok')
-        self.assertEqual(type(stock_item), Gtk.StockItem)
-        self.assertEqual(stock_item.stock_id, 'gtk-ok')
-        self.assertEqual(Gtk.stock_lookup('nosuchthing'), None)
-
-    def test_gtk_main(self):
-        # with no arguments
-        GLib.idle_add(Gtk.main_quit)
-        Gtk.main()
-
-        # overridden function ignores its arguments
-        GLib.idle_add(Gtk.main_quit, 'hello')
-        Gtk.main()
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_widget_render_icon(self):
-        button = Gtk.Button(label='OK')
-        pixbuf = button.render_icon(Gtk.STOCK_OK, Gtk.IconSize.BUTTON)
-        self.assertTrue(pixbuf is not None)
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-@unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-class TestWidget(unittest.TestCase):
-    def test_style_get_property_gvalue(self):
-        button = Gtk.Button()
-        value = GObject.Value(int, -42)
-        button.style_get_property('focus-padding', value)
-        # Test only that the style property changed since we can't actuall
-        # set it.
-        self.assertNotEqual(value.get_int(), -42)
-
-    def test_style_get_property_return_with_explicit_gvalue(self):
-        button = Gtk.Button()
-        value = GObject.Value(int, -42)
-        result = button.style_get_property('focus-padding', value)
-        self.assertIsInstance(result, int)
-        self.assertNotEqual(result, -42)
-
-    def test_style_get_property_return_with_implicit_gvalue(self):
-        button = Gtk.Button()
-        result = button.style_get_property('focus-padding')
-        self.assertIsInstance(result, int)
-        self.assertNotEqual(result, -42)
-
-    def test_style_get_property_error(self):
-        button = Gtk.Button()
-        with self.assertRaises(ValueError):
-            button.style_get_property('not-a-valid-style-property')
-
-
-@unittest.skipIf(sys.platform == "darwin", "hangs")
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestSignals(unittest.TestCase):
-    def test_class_closure_override_with_aliased_type(self):
-        class WindowWithSizeAllocOverride(Gtk.ScrolledWindow):
-            __gsignals__ = {'size-allocate': 'override'}
-
-            def __init__(self):
-                Gtk.ScrolledWindow.__init__(self)
-                self._alloc_called = False
-                self._alloc_value = None
-                self._alloc_error = None
-
-            def do_size_allocate(self, alloc):
-                self._alloc_called = True
-                self._alloc_value = alloc
-
-                try:
-                    Gtk.ScrolledWindow.do_size_allocate(self, alloc)
-                except Exception as e:
-                    self._alloc_error = e
-
-        win = WindowWithSizeAllocOverride()
-        rect = Gdk.Rectangle()
-        rect.width = 100
-        rect.height = 100
-
-        with realized(win):
-            win.show()
-            win.get_preferred_size()
-            win.size_allocate(rect)
-            self.assertTrue(win._alloc_called)
-            self.assertIsInstance(win._alloc_value, Gdk.Rectangle)
-            self.assertTrue(win._alloc_error is None, win._alloc_error)
-
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=735693
-    def test_overlay_child_position(self):
-        def get_child_position(overlay, widget, rect, user_data=None):
-            rect.x = 1
-            rect.y = 2
-            rect.width = 3
-            rect.height = 4
-            return True
-
-        overlay = Gtk.Overlay()
-        overlay.connect('get-child-position', get_child_position)
-
-        rect = Gdk.Rectangle()
-        rect.x = -1
-        rect.y = -1
-        rect.width = -1
-        rect.height = -1
-
-        overlay.emit('get-child-position', None, rect)
-        self.assertEqual(rect.x, 1)
-        self.assertEqual(rect.y, 2)
-        self.assertEqual(rect.width, 3)
-        self.assertEqual(rect.height, 4)
-
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestBuilder(unittest.TestCase):
-    class SignalTest(GObject.GObject):
-        __gtype_name__ = "GIOverrideSignalTest"
-        __gsignals__ = {
-            "test-signal": (GObject.SignalFlags.RUN_FIRST,
-                            None,
-                            []),
-        }
-
-    def test_extract_handler_and_args_object(self):
-        class Obj():
-            pass
-
-        obj = Obj()
-        obj.foo = lambda: None
-
-        handler, args = Gtk._extract_handler_and_args(obj, 'foo')
-        self.assertEqual(handler, obj.foo)
-        self.assertEqual(len(args), 0)
-
-    def test_extract_handler_and_args_dict(self):
-        obj = {'foo': lambda: None}
-
-        handler, args = Gtk._extract_handler_and_args(obj, 'foo')
-        self.assertEqual(handler, obj['foo'])
-        self.assertEqual(len(args), 0)
-
-    def test_extract_handler_and_args_with_seq(self):
-        obj = {'foo': (lambda: None, 1, 2)}
-
-        handler, args = Gtk._extract_handler_and_args(obj, 'foo')
-        self.assertEqual(handler, obj['foo'][0])
-        self.assertSequenceEqual(args, [1, 2])
-
-    def test_extract_handler_and_args_no_handler_error(self):
-        obj = dict(foo=lambda: None)
-        self.assertRaises(AttributeError,
-                          Gtk._extract_handler_and_args,
-                          obj, 'not_a_handler')
-
-    def test_builder_with_handler_and_args(self):
-        builder = Gtk.Builder()
-        builder.add_from_string("""
-            <interface>
-              <object class="GIOverrideSignalTest" id="object_sig_test">
-                  <signal name="test-signal" handler="on_signal1" />
-                  <signal name="test-signal" handler="on_signal2" after="yes" />
-              </object>
-            </interface>
-            """)
-
-        args_collector = []
-
-        def on_signal(*args):
-            args_collector.append(args)
-
-        builder.connect_signals({'on_signal1': (on_signal, 1, 2),
-                                 'on_signal2': on_signal})
-
-        objects = builder.get_objects()
-        self.assertEqual(len(objects), 1)
-        obj, = objects
-        obj.emit('test-signal')
-
-        self.assertEqual(len(args_collector), 2)
-        self.assertSequenceEqual(args_collector[0], (obj, 1, 2))
-        self.assertSequenceEqual(args_collector[1], (obj, ))
-
-    def test_builder(self):
-        self.assertEqual(Gtk.Builder, gi.overrides.Gtk.Builder)
-
-        class SignalCheck:
-            def __init__(self):
-                self.sentinel = 0
-                self.after_sentinel = 0
-
-            def on_signal_1(self, *args):
-                self.sentinel += 1
-                self.after_sentinel += 1
-
-            def on_signal_3(self, *args):
-                self.sentinel += 3
-
-            def on_signal_after(self, *args):
-                if self.after_sentinel == 1:
-                    self.after_sentinel += 1
-
-        signal_checker = SignalCheck()
-        builder = Gtk.Builder()
-
-        # add object1 to the builder
-        builder.add_from_string("""
-<interface>
-  <object class="GIOverrideSignalTest" id="object1">
-      <signal name="test-signal" after="yes" handler="on_signal_after" />
-      <signal name="test-signal" handler="on_signal_1" />
-  </object>
-</interface>
-""")
-
-        # only add object3 to the builder
-        builder.add_objects_from_string("""
-<interface>
-  <object class="GIOverrideSignalTest" id="object2">
-      <signal name="test-signal" handler="on_signal_2" />
-  </object>
-  <object class="GIOverrideSignalTest" id="object3">
-      <signal name="test-signal" handler="on_signal_3" />
-  </object>
-  <object class="GIOverrideSignalTest" id="object4">
-      <signal name="test-signal" handler="on_signal_4" />
-  </object>
-</interface>
-""", ['object3'])
-
-        # hook up signals
-        builder.connect_signals(signal_checker)
+        dialog = Gtk.RecentChooserDialog(title='recent chooser dialog test',
+                                         buttons=('test-button1', 1),
+                                         manager=test_manager)
+        self.assertTrue(isinstance(dialog, Gtk.Dialog))
+        self.assertTrue(isinstance(dialog, Gtk.Window))
 
-        # call their notify signals and check sentinel
-        objects = builder.get_objects()
-        self.assertEqual(len(objects), 2)
-        for obj in objects:
-            obj.emit('test-signal')
+        dialog.add_buttons('test-button2', 2, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
+        self.assertEqual('recent chooser dialog test', dialog.get_title())
+        button = dialog.get_widget_for_response(1)
+        self.assertEqual('test-button1', button.get_label())
+        button = dialog.get_widget_for_response(2)
+        self.assertEqual('test-button2', button.get_label())
+        button = dialog.get_widget_for_response(Gtk.ResponseType.CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
 
-        self.assertEqual(signal_checker.sentinel, 4)
-        self.assertEqual(signal_checker.after_sentinel, 2)
+    class TestClass(GObject.GObject):
+        __gtype_name__ = "GIOverrideTreeAPITest"
 
+        def __init__(self, tester, int_value, string_value):
+            super(TestGtk.TestClass, self).__init__()
+            self.tester = tester
+            self.int_value = int_value
+            self.string_value = string_value
 
-@ignore_gi_deprecation_warnings
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestTreeModel(unittest.TestCase):
-    def test_tree_model_sort(self):
-        self.assertEqual(Gtk.TreeModelSort, gi.overrides.Gtk.TreeModelSort)
-        model = Gtk.TreeStore(int, bool)
-        model_sort = Gtk.TreeModelSort(model=model)
-        self.assertEqual(model_sort.get_model(), model)
+        def check(self, int_value, string_value):
+            self.tester.assertEqual(int_value, self.int_value)
+            self.tester.assertEqual(string_value, self.string_value)
 
     def test_tree_store(self):
-        self.assertEqual(Gtk.TreeStore, gi.overrides.Gtk.TreeStore)
-        self.assertEqual(Gtk.ListStore, gi.overrides.Gtk.ListStore)
-        self.assertEqual(Gtk.TreeModel, gi.overrides.Gtk.TreeModel)
-        self.assertEqual(Gtk.TreeViewColumn, gi.overrides.Gtk.TreeViewColumn)
+        self.assertEqual(Gtk.TreeStore, overrides.Gtk.TreeStore)
+        self.assertEqual(Gtk.ListStore, overrides.Gtk.ListStore)
+        self.assertEqual(Gtk.TreeModel, overrides.Gtk.TreeModel)
+        self.assertEqual(Gtk.TreeViewColumn, overrides.Gtk.TreeViewColumn)
 
         class TestPyObject(object):
             pass
@@ -925,33 +899,32 @@ class TestTreeModel(unittest.TestCase):
                                                 i % 2,
                                                 bool(i % 2),
                                                 i,
-                                                GLib.MAXULONG,
-                                                GLib.MININT64,
+                                                GObject.G_MAXULONG,
+                                                GObject.G_MININT64,
                                                 0xffffffffffffffff,
                                                 254,
-                                                b'a'
+                                                _bytes('a')
                                                 ))
         # test set
         parent = tree_store.append(parent)
         i = 97
         label = 'this is child #%d' % i
         testobj = TestGtk.TestClass(self, i, label)
-        tree_store.set(parent,
-                       0, i,
-                       2, testobj,
-                       1, label,
-                       3, testobj,
-                       4, test_pyobj,
-                       5, test_pydict,
-                       6, test_pylist,
-                       7, i % 2,
-                       8, bool(i % 2),
-                       9, i,
-                       10, GLib.MAXULONG,
-                       11, GLib.MININT64,
-                       12, 0xffffffffffffffff,
-                       13, 254,
-                       14, b'a')
+        tree_store.set(parent, 0, i,
+                               2, testobj,
+                               1, label,
+                               3, testobj,
+                               4, test_pyobj,
+                               5, test_pydict,
+                               6, test_pylist,
+                               7, i % 2,
+                               8, bool(i % 2),
+                               9, i,
+                               10, GObject.G_MAXULONG,
+                               11, GObject.G_MININT64,
+                               12, 0xffffffffffffffff,
+                               13, 254,
+                               14, _bytes('a'))
 
         parent = tree_store.append(parent)
         i = 98
@@ -967,11 +940,11 @@ class TestTreeModel(unittest.TestCase):
                                 7: i % 2,
                                 8: bool(i % 2),
                                 9: i,
-                                10: GLib.MAXULONG,
-                                11: GLib.MININT64,
+                                10: GObject.G_MAXULONG,
+                                11: GObject.G_MININT64,
                                 12: 0xffffffffffffffff,
                                 13: 254,
-                                14: b'a'})
+                                14: _bytes('a')})
 
         parent = tree_store.append(parent)
         i = 99
@@ -988,11 +961,11 @@ class TestTreeModel(unittest.TestCase):
                                 i % 2,
                                 bool(i % 2),
                                 i,
-                                GLib.MAXULONG,
-                                GLib.MININT64,
+                                GObject.G_MAXULONG,
+                                GObject.G_MININT64,
                                 0xffffffffffffffff,
                                 254,
-                                b'a'))
+                                _bytes('a')))
 
         # len gets the number of children in the root node
         # since we kept appending to the previous node
@@ -1028,9 +1001,9 @@ class TestTreeModel(unittest.TestCase):
             uint_ = tree_store.get_value(treeiter, 9)
             self.assertEqual(uint_, i)
             ulong_ = tree_store.get_value(treeiter, 10)
-            self.assertEqual(ulong_, GLib.MAXULONG)
+            self.assertEqual(ulong_, GObject.G_MAXULONG)
             int64_ = tree_store.get_value(treeiter, 11)
-            self.assertEqual(int64_, GLib.MININT64)
+            self.assertEqual(int64_, GObject.G_MININT64)
             uint64_ = tree_store.get_value(treeiter, 12)
             self.assertEqual(uint64_, 0xffffffffffffffff)
             uchar_ = tree_store.get_value(treeiter, 13)
@@ -1102,7 +1075,7 @@ class TestTreeModel(unittest.TestCase):
                                bool(i % 2)))
 
         i = 93
-        label = u'this is row #93'
+        label = _unicode('this is row #93')
         treeiter = list_store.append()
         list_store.set_value(treeiter, 0, i)
         list_store.set_value(treeiter, 1, label)
@@ -1126,7 +1099,7 @@ class TestTreeModel(unittest.TestCase):
 
         # test automatic unicode->str conversion
         i = 94
-        label = u'this is row #94'
+        label = _unicode('this is row #94')
         treeiter = list_store.append((i,
                                       label,
                                       TestGtk.TestClass(self, i, label),
@@ -1203,15 +1176,14 @@ class TestTreeModel(unittest.TestCase):
         i = 100
         label = 'this is row #100'
         treeiter = list_store.append()
-        list_store.set(treeiter,
-                       1, label,
-                       0, i,
-                       2, TestGtk.TestClass(self, i, label),
-                       3, test_pyobj,
-                       4, test_pydict,
-                       5, test_pylist,
-                       6, 0,
-                       7, False)
+        list_store.set(treeiter, 1, label,
+                                 0, i,
+                                 2, TestGtk.TestClass(self, i, label),
+                                 3, test_pyobj,
+                                 4, test_pydict,
+                                 5, test_pylist,
+                                 6, 0,
+                                 7, False)
         i = 101
         label = 'this is row #101'
         treeiter = list_store.append()
@@ -1227,14 +1199,14 @@ class TestTreeModel(unittest.TestCase):
         label = 'this is row #102'
         treeiter = list_store.append()
         list_store.set(treeiter, (1, 0, 2, 3, 4, 5, 6, 7),
-                                 (label,
-                                  i,
-                                  TestGtk.TestClass(self, i, label),
-                                  test_pyobj,
-                                  test_pydict,
-                                  test_pylist,
-                                  0,
-                                  False))
+                                  (label,
+                                   i,
+                                   TestGtk.TestClass(self, i, label),
+                                   test_pyobj,
+                                   test_pydict,
+                                   test_pylist,
+                                   0,
+                                   False))
 
         self.assertEqual(len(list_store), 103)
 
@@ -1279,7 +1251,7 @@ class TestTreeModel(unittest.TestCase):
                 return -1
             if v2.startswith('m') and not v1.startswith('m'):
                 return 1
-            return (v1 > v2) - (v1 < v2)
+            return cmp(v1, v2)
 
         list_store = Gtk.ListStore(int, str)
         list_store.set_sort_func(2, comp1, None)
@@ -1289,16 +1261,16 @@ class TestTreeModel(unittest.TestCase):
 
         # not sorted yet, should be original order
         self.assertEqual([list(i) for i in list_store],
-                         [[1, 'apples'], [3, 'oranges'], [2, 'mango']])
+                [[1, 'apples'], [3, 'oranges'], [2, 'mango']])
 
         # sort with our custom function
         list_store.set_sort_column_id(2, Gtk.SortType.ASCENDING)
         self.assertEqual([list(i) for i in list_store],
-                         [[2, 'mango'], [1, 'apples'], [3, 'oranges']])
+                [[2, 'mango'], [1, 'apples'], [3, 'oranges']])
 
         list_store.set_sort_column_id(2, Gtk.SortType.DESCENDING)
         self.assertEqual([list(i) for i in list_store],
-                         [[3, 'oranges'], [1, 'apples'], [2, 'mango']])
+                [[3, 'oranges'], [1, 'apples'], [2, 'mango']])
 
     def test_list_store_signals(self):
         list_store = Gtk.ListStore(int, bool)
@@ -1342,33 +1314,26 @@ class TestTreeModel(unittest.TestCase):
         p2 = Gtk.TreePath.new_first()
         self.assertEqual(p1, p2)
         self.assertEqual(str(p1), '0')
-        self.assertEqual(len(p1), 1)
         p1 = Gtk.TreePath(2)
         p2 = Gtk.TreePath.new_from_string('2')
         self.assertEqual(p1, p2)
         self.assertEqual(str(p1), '2')
-        self.assertEqual(len(p1), 1)
         p1 = Gtk.TreePath('1:2:3')
         p2 = Gtk.TreePath.new_from_string('1:2:3')
         self.assertEqual(p1, p2)
         self.assertEqual(str(p1), '1:2:3')
-        self.assertEqual(len(p1), 3)
         p1 = Gtk.TreePath((1, 2, 3))
         p2 = Gtk.TreePath.new_from_string('1:2:3')
         self.assertEqual(p1, p2)
         self.assertEqual(str(p1), '1:2:3')
-        self.assertEqual(len(p1), 3)
-        self.assertNotEqual(p1, None)
+        self.assertTrue(p1 != None)
+        self.assertFalse(p1 == None)
         self.assertTrue(p1 > None)
         self.assertTrue(p1 >= None)
         self.assertFalse(p1 < None)
         self.assertFalse(p1 <= None)
 
         self.assertEqual(tuple(p1), (1, 2, 3))
-        self.assertEqual(p1[0], 1)
-        self.assertEqual(p1[1], 2)
-        self.assertEqual(p1[2], 3)
-        self.assertRaises(IndexError, p1.__getitem__, 3)
 
     def test_tree_model(self):
         tree_store = Gtk.TreeStore(int, str)
@@ -1409,7 +1374,7 @@ class TestTreeModel(unittest.TestCase):
         for i in range(100):
             label = 'this is row #%d' % i
             parent = tree_store.append(None, (DerivedIntType(i), DerivedStrType(label),))
-            self.assertNotEqual(parent, None)
+            self.assertNotEquals(parent, None)
             for j in range(20):
                 label = 'this is child #%d of node #%d' % (j, i)
                 child = tree_store.append(parent, (j, label,))
@@ -1534,24 +1499,6 @@ class TestTreeModel(unittest.TestCase):
         self.assertRaises(ValueError, tree_store.get, aiter, 1, 100)
         self.assertEqual(tree_store.get(aiter, 0, 1), (10, 'this is row #10'))
 
-        # check __delitem__
-        self.assertEqual(len(tree_store), 100)
-        aiter = tree_store.get_iter(10)
-        del tree_store[aiter]
-        self.assertEqual(len(tree_store), 99)
-        self.assertRaises(TypeError, tree_store.__delitem__, None)
-        self.assertRaises(IndexError, tree_store.__delitem__, -101)
-        self.assertRaises(IndexError, tree_store.__delitem__, 101)
-
-    def test_tree_model_get_iter_fail(self):
-        # TreeModel class with a failing get_iter()
-        class MyTreeModel(GObject.GObject, Gtk.TreeModel):
-            def do_get_iter(self, iter):
-                return (False, None)
-
-        tm = MyTreeModel()
-        self.assertEqual(tm.get_iter_first(), None)
-
     def test_tree_model_edit(self):
         model = Gtk.ListStore(int, str, float)
         model.append([1, "one", -0.1])
@@ -1607,198 +1554,32 @@ class TestTreeModel(unittest.TestCase):
         def set_row3():
             model[0][:2] = ("0", 0)
 
-        self.assertRaises(TypeError, set_row3)
-
-    def test_tree_row_sequence(self):
-        model = Gtk.ListStore(int, str, float)
-        model.append([1, "one", -0.1])
-
-        self.assertEqual([1, "one", -0.1], model[0][0, 1, 2])
-        self.assertEqual([1, "one"], model[0][0, 1])
-        self.assertEqual(["one", -0.1], model[0][1, 2])
-        self.assertEqual("one", model[0][1])
-        self.assertEqual([1, -0.1], model[0][0, 2])
-        self.assertEqual([-0.1, 1], model[0][2, 0])
-
-        model[0][0, 1, 2] = (2, "two", -0.2)
-        self.assertEqual([2, "two", -0.2], model[0][0, 1, 2])
-
-        model[0][0, 1] = (3, "three")
-        self.assertEqual([3, "three"], model[0][0, 1])
-
-        model[0][1, 2] = ("four", -0.4)
-        self.assertEqual(["four", -0.4], model[0][1, 2])
-
-        model[0][0, 2] = (5, -0.5)
-        self.assertEqual([5, -0.5], model[0][0, 2])
-
-        model[0][0, 1, 2] = (6, "six", -0.6)
-        self.assertEqual([-0.6, 6, "six"], model[0][2, 0, 1])
-
-        def set_row1():
-            model[0][4, 5] = ("shouldn't", "work",)
-
-        self.assertRaises(IndexError, set_row1)
-
-        def set_row2():
-            model[0][0, 1] = (0, "zero", 0)
-
-        self.assertRaises(ValueError, set_row2)
-
-        def set_row3():
-            model[0][0, 1] = ("shouldn't", 0)
-
-        self.assertRaises(TypeError, set_row3)
-
-        def set_row4():
-            model[0][0, "two"] = (0, "zero")
-
-        self.assertRaises(TypeError, set_row4)
-
-    def test_tree_model_set_value_to_none(self):
-        # Tests allowing the usage of None to set an empty value on a model.
-        store = Gtk.ListStore(str)
-        row = store.append(['test'])
-        self.assertSequenceEqual(store[0][:], ['test'])
-        store.set_value(row, 0, None)
-        self.assertSequenceEqual(store[0][:], [None])
-
-    def test_signal_emission_tree_path_coerce(self):
-        class Model(GObject.Object, Gtk.TreeModel):
-            pass
-
-        model = Model()
-        tree_paths = []
-
-        def on_any_signal(model, path, *args):
-            tree_paths.append(path.to_string())
-
-        model.connect('row-changed', on_any_signal)
-        model.connect('row-deleted', on_any_signal)
-        model.connect('row-has-child-toggled', on_any_signal)
-        model.connect('row-inserted', on_any_signal)
-
-        model.row_changed('0', Gtk.TreeIter())
-        self.assertEqual(tree_paths[-1], '0')
-
-        model.row_deleted('1')
-        self.assertEqual(tree_paths[-1], '1')
-
-        model.row_has_child_toggled('2', Gtk.TreeIter())
-        self.assertEqual(tree_paths[-1], '2')
-
-        model.row_inserted('3', Gtk.TreeIter())
-        self.assertEqual(tree_paths[-1], '3')
-
-    def test_tree_model_filter(self):
-        model = Gtk.ListStore(int, str, float)
-        model.append([1, "one", -0.1])
-        model.append([2, "two", -0.2])
-
-        filtered = Gtk.TreeModelFilter(child_model=model)
-
-        self.assertEqual(filtered[0][1], 'one')
-        filtered[0][1] = 'ONE'
-        self.assertEqual(filtered[0][1], 'ONE')
-
-    def test_list_store_performance(self):
-        model = Gtk.ListStore(int, str)
-
-        iterations = 2000
-        start = time.clock()
-        i = iterations
-        while i > 0:
-            model.append([1, 'hello'])
-            i -= 1
-        end = time.clock()
-        sys.stderr.write('[%.0f Âµs/append] ' % ((end - start) * 1000000 / iterations))
-
-    def test_filter_new_default(self):
-        # Test filter_new accepts implicit default of None
-        model = Gtk.ListStore(int)
-        filt = model.filter_new()
-        self.assertTrue(filt is not None)
-
+        self.assertRaises(ValueError, set_row3)
 
-@unittest.skipIf(sys.platform == "darwin", "hangs")
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestTreeView(unittest.TestCase):
     def test_tree_view(self):
         store = Gtk.ListStore(int, str)
         store.append((0, "foo"))
         store.append((1, "bar"))
         view = Gtk.TreeView()
+        # FIXME: We can't easily call get_cursor() to make sure this works as
+        # expected as we need to realize and focus the column; the following
+        # will raise a Gtk-CRITICAL which we ignore for now
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_WARNING | GLib.LogLevelFlags.LEVEL_ERROR)
+        view.set_cursor(store[1].path)
+        view.set_cursor(str(store[1].path))
 
-        with realized(view):
-            view.set_cursor(store[1].path)
-            view.set_cursor(str(store[1].path))
+        view.get_cell_area(store[1].path)
+        view.get_cell_area(str(store[1].path))
 
-            view.get_cell_area(store[1].path)
-            view.get_cell_area(str(store[1].path))
+        GLib.log_set_always_fatal(old_mask)
 
     def test_tree_view_column(self):
         cell = Gtk.CellRendererText()
-        col = Gtk.TreeViewColumn(title='This is just a test',
-                                 cell_renderer=cell,
-                                 text=0,
-                                 style=2)
-
-        # Regression test for: https://bugzilla.gnome.org/show_bug.cgi?id=711173
-        col.set_cell_data_func(cell, None, None)
-
-    def test_tree_view_add_column_with_attributes(self):
-        model = Gtk.ListStore(str, str, str)
-        # deliberately use out-of-order sorting here; we assign column 0 to
-        # model index 2, etc.
-        model.append(['cell13', 'cell11', 'cell12'])
-        model.append(['cell23', 'cell21', 'cell22'])
-
-        tree = Gtk.TreeView(model=model)
-        cell1 = Gtk.CellRendererText()
-        cell2 = Gtk.CellRendererText()
-        cell3 = Gtk.CellRendererText()
-        cell4 = Gtk.CellRendererText()
-
-        tree.insert_column_with_attributes(0, 'Head2', cell2, text=2)
-        tree.insert_column_with_attributes(0, 'Head1', cell1, text=1)
-        tree.insert_column_with_attributes(-1, 'Head3', cell3, text=0)
-        # unconnected
-        tree.insert_column_with_attributes(-1, 'Head4', cell4)
-
-        with realized(tree):
-            tree.set_cursor(model[0].path)
-            while Gtk.events_pending():
-                Gtk.main_iteration()
-
-            self.assertEqual(tree.get_column(0).get_title(), 'Head1')
-            self.assertEqual(tree.get_column(1).get_title(), 'Head2')
-            self.assertEqual(tree.get_column(2).get_title(), 'Head3')
-            self.assertEqual(tree.get_column(3).get_title(), 'Head4')
-
-            # cursor should be at the first row
-            self.assertEqual(cell1.props.text, 'cell11')
-            self.assertEqual(cell2.props.text, 'cell12')
-            self.assertEqual(cell3.props.text, 'cell13')
-            self.assertEqual(cell4.props.text, None)
-
-    def test_tree_view_column_set_attributes(self):
-        store = Gtk.ListStore(int, str)
-        directors = ['Fellini', 'Tarantino', 'Tarkovskiy']
-        for i, director in enumerate(directors):
-            store.append([i, director])
-
-        treeview = Gtk.TreeView()
-        treeview.set_model(store)
-
-        column = Gtk.TreeViewColumn()
-        treeview.append_column(column)
-
-        cell = Gtk.CellRendererText()
-        column.pack_start(cell, expand=True)
-        column.set_attributes(cell, text=1)
-
-        with realized(treeview):
-            self.assertTrue(cell.props.text in directors)
+        Gtk.TreeViewColumn(title='This is just a test',
+                           cell_renderer=cell,
+                           text=0,
+                           style=2)
 
     def test_tree_selection(self):
         store = Gtk.ListStore(int, str)
@@ -1829,11 +1610,8 @@ class TestTreeView(unittest.TestCase):
         self.assertEqual(m, store)
         self.assertEqual(store.get_path(s), firstpath)
 
-
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestTextBuffer(unittest.TestCase):
     def test_text_buffer(self):
-        self.assertEqual(Gtk.TextBuffer, gi.overrides.Gtk.TextBuffer)
+        self.assertEqual(Gtk.TextBuffer, overrides.Gtk.TextBuffer)
         buffer = Gtk.TextBuffer()
         tag = buffer.create_tag('title', font='Sans 18')
 
@@ -1875,194 +1653,357 @@ class TestTextBuffer(unittest.TestCase):
         self.assertTrue(sel[1].equal(end))
 
         buffer.set_text('')
-        buffer.insert_with_tags(buffer.get_start_iter(), 'HelloHello')
-        start, end = buffer.get_bounds()
-        text = buffer.get_text(start, end, False)
-        self.assertEqual(text, 'HelloHello')
-
-        buffer.set_text('')
-        buffer.insert_with_tags_by_name(buffer.get_start_iter(), 'HelloHello')
-        start, end = buffer.get_bounds()
-        text = buffer.get_text(start, end, False)
-        self.assertEqual(text, 'HelloHello')
-
-        try:
-            starts_tag = Gtk.TextIter.starts_tag
-        except AttributeError:
-            starts_tag = Gtk.TextIter.begins_tag
-
-        buffer.set_text('')
         buffer.insert_with_tags(buffer.get_start_iter(), 'HelloHello', tag)
         (start, end) = buffer.get_bounds()
-        self.assertTrue(starts_tag(start, tag))
+        self.assertTrue(start.begins_tag(tag))
         self.assertTrue(start.has_tag(tag))
 
         buffer.set_text('')
         buffer.insert_with_tags_by_name(buffer.get_start_iter(), 'HelloHello', 'title')
         (start, end) = buffer.get_bounds()
-        self.assertTrue(starts_tag(start, tag))
+        self.assertTrue(start.begins_tag(tag))
         self.assertTrue(start.has_tag(tag))
 
         self.assertRaises(ValueError, buffer.insert_with_tags_by_name,
-                          buffer.get_start_iter(), 'HelloHello', 'unknowntag')
+                buffer.get_start_iter(), 'HelloHello', 'unknowntag')
 
     def test_text_iter(self):
-        try:
-            starts_tag = Gtk.TextIter.starts_tag
-        except AttributeError:
-            starts_tag = Gtk.TextIter.begins_tag
-
-        self.assertEqual(Gtk.TextIter, gi.overrides.Gtk.TextIter)
+        self.assertEqual(Gtk.TextIter, overrides.Gtk.TextIter)
         buffer = Gtk.TextBuffer()
         buffer.set_text('Hello Jane Hello Bob')
         tag = buffer.create_tag('title', font='Sans 18')
         (start, end) = buffer.get_bounds()
         start.forward_chars(10)
         buffer.apply_tag(tag, start, end)
-        self.assertTrue(starts_tag(start))
+        self.assertTrue(start.begins_tag())
         self.assertTrue(end.ends_tag())
         self.assertTrue(start.toggles_tag())
         self.assertTrue(end.toggles_tag())
         start.backward_chars(1)
-        self.assertFalse(starts_tag(start))
+        self.assertFalse(start.begins_tag())
         self.assertFalse(start.ends_tag())
         self.assertFalse(start.toggles_tag())
 
-    def test_text_buffer_search(self):
-        buffer = Gtk.TextBuffer()
-        buffer.set_text('Hello World Hello GNOME')
+    def test_buttons(self):
+        self.assertEqual(Gtk.Button, overrides.Gtk.Button)
+
+        # test Gtk.Button
+        button = Gtk.Button()
+        self.assertTrue(isinstance(button, Gtk.Button))
+        self.assertTrue(isinstance(button, Gtk.Container))
+        self.assertTrue(isinstance(button, Gtk.Widget))
+        button = Gtk.Button(stock=Gtk.STOCK_CLOSE)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+        self.assertTrue(button.get_use_stock())
+        self.assertTrue(button.get_use_underline())
 
-        i = buffer.get_iter_at_offset(0)
-        self.assertTrue(isinstance(i, Gtk.TextIter))
+        # test Gtk.Button use_stock
+        button = Gtk.Button(label=Gtk.STOCK_CLOSE, use_stock=True, use_underline=True)
+        self.assertEqual(Gtk.STOCK_CLOSE, button.get_label())
+        self.assertTrue(button.get_use_stock())
+        self.assertTrue(button.get_use_underline())
 
-        self.assertEqual(i.forward_search('world', 0, None), None)
+        # test Gtk.LinkButton
+        self.assertRaises(TypeError, Gtk.LinkButton)
+        button = Gtk.LinkButton('http://www.Gtk.org', 'Gtk')
+        self.assertTrue(isinstance(button, Gtk.Button))
+        self.assertTrue(isinstance(button, Gtk.Container))
+        self.assertTrue(isinstance(button, Gtk.Widget))
+        self.assertEqual('http://www.Gtk.org', button.get_uri())
+        self.assertEqual('Gtk', button.get_label())
 
-        (start, end) = i.forward_search('World', 0, None)
-        self.assertEqual(start.get_offset(), 6)
-        self.assertEqual(end.get_offset(), 11)
+    def test_inheritance(self):
+        for name in overrides.Gtk.__all__:
+            over = getattr(overrides.Gtk, name)
+            for element in dir(Gtk):
+                try:
+                    klass = getattr(Gtk, element)
+                    info = klass.__info__
+                except (NotImplementedError, AttributeError):
+                    continue
 
-        (start, end) = i.forward_search('world',
-                                        Gtk.TextSearchFlags.CASE_INSENSITIVE,
-                                        None)
-        self.assertEqual(start.get_offset(), 6)
-        self.assertEqual(end.get_offset(), 11)
+                # Get all parent classes and interfaces klass inherits from
+                if isinstance(info, gi.types.ObjectInfo):
+                    classes = list(info.get_interfaces())
+                    parent = info.get_parent()
+                    while parent.get_name() != "Object":
+                        classes.append(parent)
+                        parent = parent.get_parent()
+                    classes = [kl for kl in classes if kl.get_namespace() == "Gtk"]
+                else:
+                    continue
 
-    def test_insert_text_signal_location_modification(self):
-        # Regression test for: https://bugzilla.gnome.org/show_bug.cgi?id=736175
+                for kl in classes:
+                    if kl.get_name() == name:
+                        self.assertTrue(issubclass(klass, over,),
+                            "%r does not inherit from override %r" % (klass, over,))
 
-        def callback(buffer, location, text, length):
-            location.assign(buffer.get_end_iter())
+    def test_editable(self):
+        self.assertEqual(Gtk.Editable, overrides.Gtk.Editable)
 
-        buffer = Gtk.TextBuffer()
-        buffer.set_text('first line\n')
-        buffer.connect('insert-text', callback)
+        # need to use Gtk.Entry because Editable is an interface
+        entry = Gtk.Entry()
+        pos = entry.insert_text('HeWorld', 0)
+        self.assertEqual(pos, 7)
+        pos = entry.insert_text('llo ', 2)
+        self.assertEqual(pos, 6)
+        text = entry.get_chars(0, 11)
+        self.assertEqual('Hello World', text)
 
-        # attempt insertion at the beginning of the buffer, the callback will
-        # modify the insert location to the end.
-        buffer.place_cursor(buffer.get_start_iter())
-        buffer.insert_at_cursor('second line\n')
+    def test_label(self):
+        label = Gtk.Label(label='Hello')
+        self.assertTrue(isinstance(label, Gtk.Widget))
+        self.assertEqual(label.get_text(), 'Hello')
 
-        self.assertEqual(buffer.get_property('text'),
-                         'first line\nsecond line\n')
+    def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
+                         step_increment=0.0, page_increment=0.0, page_size=0.0):
+        self.assertEqual(adjustment.get_value(), value)
+        self.assertEqual(adjustment.get_lower(), lower)
+        self.assertEqual(adjustment.get_upper(), upper)
+        self.assertEqual(adjustment.get_step_increment(), step_increment)
+        self.assertEqual(adjustment.get_page_increment(), page_increment)
+        self.assertEqual(adjustment.get_page_size(), page_size)
 
-    def test_backward_find_char(self):
-        buffer = Gtk.TextBuffer()
-        buffer.set_text('abc')
-        end = buffer.get_iter_at_line(99)
+    def test_adjustment(self):
+        adjustment = Gtk.Adjustment(1, 0, 6, 4, 5, 3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
 
-        values = []
+        adjustment = Gtk.Adjustment(1, 0, 6, 4, 5)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5)
 
-        def pred_func(ch, user_data):
-            values.append(ch)
-            return ch == u"a"
+        adjustment = Gtk.Adjustment(1, 0, 6, 4)
+        self.adjustment_check(adjustment, 1, 0, 6, 4)
 
-        self.assertTrue(end.backward_find_char(pred_func))
-        self.assertEqual(values, [u"c", u"b", u"a"])
+        adjustment = Gtk.Adjustment(1, 0, 6)
+        self.adjustment_check(adjustment, 1, 0, 6)
 
+        adjustment = Gtk.Adjustment()
+        self.adjustment_check(adjustment)
 
-@unittest.skipUnless(Gtk, 'Gtk not available')
-class TestContainer(unittest.TestCase):
+        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6,
+                                    step_increment=4, page_increment=5, page_size=3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_child_set_property(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=False, fill=True, padding=0)
+    def test_table(self):
+        table = Gtk.Table()
+        self.assertTrue(isinstance(table, Gtk.Table))
+        self.assertTrue(isinstance(table, Gtk.Container))
+        self.assertTrue(isinstance(table, Gtk.Widget))
+        self.assertEqual(table.get_size(), (1, 1))
+        self.assertEqual(table.get_homogeneous(), False)
+        table = Gtk.Table(2, 3)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), False)
+        table = Gtk.Table(2, 3, True)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), True)
 
-        box.child_set_property(child, 'padding', 42)
+        # Test PyGTK interface
+        table = Gtk.Table(rows=3, columns=2)
+        self.assertEqual(table.get_size(), (3, 2))
+        # Test using the actual property names
+        table = Gtk.Table(n_rows=2, n_columns=3, homogeneous=True)
+        self.assertEqual(table.get_size(), (2, 3))
+        self.assertEqual(table.get_homogeneous(), True)
 
-        value = GObject.Value(int)
-        box.child_get_property(child, 'padding', value)
-        self.assertEqual(value.get_int(), 42)
+        label = Gtk.Label(label='Hello')
+        self.assertTrue(isinstance(label, Gtk.Widget))
+        table.attach(label, 0, 1, 0, 1)
+        self.assertEqual(label, table.get_children()[0])
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_child_get_property_gvalue(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=False, fill=True, padding=42)
+    def test_scrolledwindow(self):
+        sw = Gtk.ScrolledWindow()
+        self.assertTrue(isinstance(sw, Gtk.ScrolledWindow))
+        self.assertTrue(isinstance(sw, Gtk.Container))
+        self.assertTrue(isinstance(sw, Gtk.Widget))
+        sb = sw.get_hscrollbar()
+        self.assertEqual(sw.get_hadjustment(), sb.get_adjustment())
+        sb = sw.get_vscrollbar()
+        self.assertEqual(sw.get_vadjustment(), sb.get_adjustment())
 
-        value = GObject.Value(int)
-        box.child_get_property(child, 'padding', value)
-        self.assertEqual(value.get_int(), 42)
+    def test_widget_drag_methods(self):
+        widget = Gtk.Button()
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_child_get_property_return_with_explicit_gvalue(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=False, fill=True, padding=42)
+        # here we are not checking functionality, only that the methods exist
+        # and except the right number of arguments
 
-        value = GObject.Value(int)
-        result = box.child_get_property(child, 'padding', value)
-        self.assertEqual(result, 42)
+        widget.drag_check_threshold(0, 0, 0, 0)
 
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_child_get_property_return_with_implicit_gvalue(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=False, fill=True, padding=42)
+        # drag_dest_ methods
+        widget.drag_dest_set(Gtk.DestDefaults.DROP, None, Gdk.DragAction.COPY)
+        widget.drag_dest_add_image_targets()
+        widget.drag_dest_add_text_targets()
+        widget.drag_dest_add_uri_targets()
+        widget.drag_dest_get_track_motion()
+        widget.drag_dest_set_track_motion(True)
+        widget.drag_dest_get_target_list()
+        widget.drag_dest_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
+        widget.drag_dest_unset()
 
-        result = box.child_get_property(child, 'padding')
-        self.assertEqual(result, 42)
+        widget.drag_highlight()
+        widget.drag_unhighlight()
 
-    def test_child_get_property_error(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        if Gtk._version == "4.0":
-            box.pack_start(child, expand=False, fill=True)
-        else:
-            box.pack_start(child, expand=False, fill=True, padding=42)
-        with self.assertRaises(ValueError):
-            box.child_get_property(child, 'not-a-valid-child-property')
-
-    @unittest.skipIf(Gtk._version == "4.0", "not in gtk4")
-    def test_child_get_and_set(self):
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=True, fill=True, padding=42)
-
-        expand, fill, padding = box.child_get(child, 'expand', 'fill', 'padding')
-        self.assertEqual(expand, True)
-        self.assertEqual(fill, True)
-        self.assertEqual(padding, 42)
-
-        box.child_set(child, expand=False, fill=False, padding=21, pack_type=1)
-        expand, fill, padding, pack_type = box.child_get(child, 'expand', 'fill', 'padding', 'pack-type')
-        self.assertEqual(expand, False)
-        self.assertEqual(fill, False)
-        self.assertEqual(padding, 21)
-
-    @unittest.skipIf(Gtk._version != "4.0", "only in gtk4")
-    def test_child_get_and_set_gtk4(self):
-        # padding got removed in gtk4
-        box = Gtk.Box()
-        child = Gtk.Button()
-        box.pack_start(child, expand=True, fill=True)
+        # drag_source_ methods
+        widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.MOVE)
+        widget.drag_source_add_image_targets()
+        widget.drag_source_add_text_targets()
+        widget.drag_source_add_uri_targets()
+        widget.drag_source_set_icon_name("")
+        widget.drag_source_set_icon_pixbuf(GdkPixbuf.Pixbuf())
+        widget.drag_source_set_icon_stock("")
+        widget.drag_source_get_target_list()
+        widget.drag_source_set_target_list(Gtk.TargetList.new([Gtk.TargetEntry.new('test', 0, 0)]))
+        widget.drag_source_unset()
+
+        # these methods cannot be called because they require a valid drag on
+        # a real GdkWindow. So we only check that they exist and are callable.
+        self.assertTrue(hasattr(widget.drag_dest_set_proxy, '__call__'))
+        self.assertTrue(hasattr(widget.drag_get_data, '__call__'))
+
+    def test_scrollbar(self):
+        # PyGTK compat
+        adjustment = Gtk.Adjustment()
+
+        hscrollbar = Gtk.HScrollbar()
+        vscrollbar = Gtk.VScrollbar()
+        self.assertNotEquals(hscrollbar.props.adjustment, adjustment)
+        self.assertNotEquals(vscrollbar.props.adjustment, adjustment)
+
+        hscrollbar = Gtk.HScrollbar(adjustment)
+        vscrollbar = Gtk.VScrollbar(adjustment)
+        self.assertEqual(hscrollbar.props.adjustment, adjustment)
+        self.assertEqual(vscrollbar.props.adjustment, adjustment)
+
+    def test_iconview(self):
+        # PyGTK compat
+        iconview = Gtk.IconView()
+        self.assertEqual(iconview.props.model, None)
+
+        model = Gtk.ListStore(str)
+        iconview = Gtk.IconView(model)
+        self.assertEqual(iconview.props.model, model)
+
+    def test_toolbutton(self):
+        # PyGTK compat
+        button = Gtk.ToolButton()
+        self.assertEqual(button.props.stock_id, None)
+
+        button = Gtk.ToolButton('gtk-new')
+        self.assertEqual(button.props.stock_id, 'gtk-new')
+
+        icon = Gtk.Image.new_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.SMALL_TOOLBAR)
+
+        button = Gtk.ToolButton(label='mylabel', icon_widget=icon)
+        self.assertEqual(button.props.label, 'mylabel')
+        self.assertEqual(button.props.icon_widget, icon)
+
+    def test_iconset(self):
+        # PyGTK compat
+        Gtk.IconSet()
+        pixbuf = GdkPixbuf.Pixbuf()
+        Gtk.IconSet(pixbuf)
+
+    def test_viewport(self):
+        # PyGTK compat
+        vadjustment = Gtk.Adjustment()
+        hadjustment = Gtk.Adjustment()
+
+        viewport = Gtk.Viewport(hadjustment=hadjustment,
+                                vadjustment=vadjustment)
+
+        self.assertEqual(viewport.props.vadjustment, vadjustment)
+        self.assertEqual(viewport.props.hadjustment, hadjustment)
 
-        expand, fill = box.child_get(child, 'expand', 'fill')
-        self.assertEqual(expand, True)
-        self.assertEqual(fill, True)
 
-        box.child_set(child, expand=False, fill=False, pack_type=1)
-        expand, fill, pack_type = box.child_get(child, 'expand', 'fill', 'pack-type')
-        self.assertEqual(expand, False)
-        self.assertEqual(fill, False)
+class TestGio(unittest.TestCase):
+    def setUp(self):
+        self.settings = Gio.Settings('org.gnome.test')
+        # we change the values in the tests, so set them to predictable start
+        # value
+        self.settings.reset('test-string')
+        self.settings.reset('test-array')
+
+    def test_file_enumerator(self):
+        self.assertEqual(Gio.FileEnumerator, overrides.Gio.FileEnumerator)
+        f = Gio.file_new_for_path("./")
+
+        iter_info = []
+        for info in f.enumerate_children("standard::*", 0, None):
+            iter_info.append(info.get_name())
+
+        next_info = []
+        enumerator = f.enumerate_children("standard::*", 0, None)
+        while True:
+            info = enumerator.next_file(None)
+            if info is None:
+                break
+            next_info.append(info.get_name())
+
+        self.assertEqual(iter_info, next_info)
+
+    def test_gsettings_native(self):
+        self.assertTrue('test-array' in self.settings.list_keys())
+
+        # get various types
+        v = self.settings.get_value('test-boolean')
+        self.assertEqual(v.get_boolean(), True)
+        self.assertEqual(self.settings.get_boolean('test-boolean'), True)
+
+        v = self.settings.get_value('test-string')
+        self.assertEqual(v.get_string(), 'Hello')
+        self.assertEqual(self.settings.get_string('test-string'), 'Hello')
+
+        v = self.settings.get_value('test-array')
+        self.assertEqual(v.unpack(), [1, 2])
+
+        v = self.settings.get_value('test-tuple')
+        self.assertEqual(v.unpack(), (1, 2))
+
+        # set a value
+        self.settings.set_string('test-string', 'World')
+        self.assertEqual(self.settings.get_string('test-string'), 'World')
+
+        self.settings.set_value('test-string', GLib.Variant('s', 'Goodbye'))
+        self.assertEqual(self.settings.get_string('test-string'), 'Goodbye')
+
+    def test_gsettings_constructor(self):
+        # default constructor uses path from schema
+        self.assertEqual(self.settings.get_property('path'), '/tests/')
+
+        # optional constructor arguments
+        with_path = Gio.Settings('org.gnome.nopathtest', path='/mypath/')
+        self.assertEqual(with_path.get_property('path'), '/mypath/')
+        self.assertEqual(with_path['np-int'], 42)
+
+    def test_gsettings_override(self):
+        # dictionary interface
+        self.assertEqual(len(self.settings), 4)
+        self.assertTrue('test-array' in self.settings)
+        self.assertTrue('test-array' in self.settings.keys())
+        self.assertFalse('nonexisting' in self.settings)
+        self.assertFalse(4 in self.settings)
+        self.assertEqual(bool(self.settings), True)
+
+        # get various types
+        self.assertEqual(self.settings['test-boolean'], True)
+        self.assertEqual(self.settings['test-string'], 'Hello')
+        self.assertEqual(self.settings['test-array'], [1, 2])
+        self.assertEqual(self.settings['test-tuple'], (1, 2))
+
+        self.assertRaises(KeyError, self.settings.__getitem__, 'unknown')
+        self.assertRaises(KeyError, self.settings.__getitem__, 2)
+
+        # set a value
+        self.settings['test-string'] = 'Goodbye'
+        self.assertEqual(self.settings['test-string'], 'Goodbye')
+        self.settings['test-array'] = [3, 4, 5]
+        self.assertEqual(self.settings['test-array'], [3, 4, 5])
+
+        self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
+        self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
+
+    def test_gsettings_empty(self):
+        empty = Gio.Settings('org.gnome.empty', path='/tests/')
+        self.assertEqual(len(empty), 0)
+        self.assertEqual(bool(empty), True)
+        self.assertEqual(empty.keys(), [])
diff --git a/tests/test_overrides_gdk.py b/tests/test_overrides_gdk.py
deleted file mode 100644 (file)
index 0974d35..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import os
-import sys
-import unittest
-
-import gi.overrides
-from gi import PyGIDeprecationWarning
-
-try:
-    from gi.repository import Gdk, GdkPixbuf, Gtk
-    Gdk  # pyflakes
-except ImportError:
-    Gdk = None
-
-from helper import capture_glib_deprecation_warnings
-
-
-@unittest.skipUnless(Gdk, 'Gdk not available')
-class TestGdk(unittest.TestCase):
-
-    @unittest.skipIf(sys.platform == "darwin" or os.name == "nt", "crashes")
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_constructor(self):
-        attribute = Gdk.WindowAttr()
-        attribute.window_type = Gdk.WindowType.CHILD
-        attributes_mask = Gdk.WindowAttributesType.X | \
-            Gdk.WindowAttributesType.Y
-        window = Gdk.Window(None, attribute, attributes_mask)
-        self.assertEqual(window.get_window_type(), Gdk.WindowType.CHILD)
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_color(self):
-        color = Gdk.Color(100, 200, 300)
-        self.assertEqual(color.red, 100)
-        self.assertEqual(color.green, 200)
-        self.assertEqual(color.blue, 300)
-        with capture_glib_deprecation_warnings():
-            self.assertEqual(color, Gdk.Color(100, 200, 300))
-        self.assertNotEqual(color, Gdk.Color(1, 2, 3))
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_color_floats(self):
-        self.assertEqual(Gdk.Color(13107, 21845, 65535),
-                         Gdk.Color.from_floats(0.2, 1.0 / 3.0, 1.0))
-
-        self.assertEqual(Gdk.Color(13107, 21845, 65535).to_floats(),
-                         (0.2, 1.0 / 3.0, 1.0))
-
-        self.assertEqual(Gdk.RGBA(0.2, 1.0 / 3.0, 1.0, 0.5).to_color(),
-                         Gdk.Color.from_floats(0.2, 1.0 / 3.0, 1.0))
-
-        self.assertEqual(Gdk.RGBA.from_color(Gdk.Color(13107, 21845, 65535)),
-                         Gdk.RGBA(0.2, 1.0 / 3.0, 1.0, 1.0))
-
-    def test_rgba(self):
-        self.assertEqual(Gdk.RGBA, gi.overrides.Gdk.RGBA)
-        rgba = Gdk.RGBA(0.1, 0.2, 0.3, 0.4)
-        self.assertEqual(rgba, Gdk.RGBA(0.1, 0.2, 0.3, 0.4))
-        self.assertNotEqual(rgba, Gdk.RGBA(0.0, 0.2, 0.3, 0.4))
-        self.assertEqual(rgba.red, 0.1)
-        self.assertEqual(rgba.green, 0.2)
-        self.assertEqual(rgba.blue, 0.3)
-        self.assertEqual(rgba.alpha, 0.4)
-        rgba.green = 0.9
-        self.assertEqual(rgba.green, 0.9)
-
-        # Iterator/tuple convsersion
-        self.assertEqual(tuple(Gdk.RGBA(0.1, 0.2, 0.3, 0.4)),
-                         (0.1, 0.2, 0.3, 0.4))
-
-    def test_event(self):
-        event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
-        self.assertEqual(event.type, Gdk.EventType.CONFIGURE)
-        self.assertEqual(event.send_event, 0)
-
-        event = Gdk.Event()
-        event.type = Gdk.EventType.SCROLL
-        self.assertRaises(AttributeError, lambda: getattr(event, 'foo_bar'))
-
-    def test_event_touch(self):
-        event = Gdk.Event.new(Gdk.EventType.TOUCH_BEGIN)
-        self.assertEqual(event.type, Gdk.EventType.TOUCH_BEGIN)
-
-        # emulating_pointer is unique to touch events
-        self.assertFalse(event.emulating_pointer)
-        self.assertFalse(event.touch.emulating_pointer)
-
-        event.emulating_pointer = True
-        self.assertTrue(event.emulating_pointer)
-        self.assertTrue(event.touch.emulating_pointer)
-
-    def test_event_setattr(self):
-        event = Gdk.Event.new(Gdk.EventType.DRAG_MOTION)
-        event.x_root, event.y_root = 0, 5
-        self.assertEqual(event.dnd.x_root, 0)
-        self.assertEqual(event.dnd.y_root, 5)
-        self.assertEqual(event.x_root, 0)
-        self.assertEqual(event.y_root, 5)
-
-        # this used to work, keep it that way
-        self.assertFalse(hasattr(event, "foo_bar"))
-        event.foo_bar = 42
-
-    def test_event_repr(self):
-        event = Gdk.Event.new(Gdk.EventType.CONFIGURE)
-        self.assertTrue("CONFIGURE" in repr(event))
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_event_structures(self):
-        def button_press_cb(button, event):
-            self.assertTrue(isinstance(event, Gdk.EventButton))
-            self.assertTrue(event.type == Gdk.EventType.BUTTON_PRESS)
-            self.assertEqual(event.send_event, 0)
-            self.assertEqual(event.get_state(), Gdk.ModifierType.CONTROL_MASK)
-            self.assertEqual(event.get_root_coords(), (2, 5))
-
-            event.time = 12345
-            self.assertEqual(event.get_time(), 12345)
-
-        w = Gtk.Window()
-        b = Gtk.Button()
-        b.connect('button-press-event', button_press_cb)
-        w.add(b)
-        b.show()
-        b.realize()
-        Gdk.test_simulate_button(b.get_window(),
-                                 2, 5,
-                                 0,
-                                 Gdk.ModifierType.CONTROL_MASK,
-                                 Gdk.EventType.BUTTON_PRESS)
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_cursor(self):
-        self.assertEqual(Gdk.Cursor, gi.overrides.Gdk.Cursor)
-        with capture_glib_deprecation_warnings():
-            c = Gdk.Cursor(Gdk.CursorType.WATCH)
-        self.assertNotEqual(c, None)
-        with capture_glib_deprecation_warnings():
-            c = Gdk.Cursor(cursor_type=Gdk.CursorType.WATCH)
-        self.assertNotEqual(c, None)
-
-        display_manager = Gdk.DisplayManager.get()
-        display = display_manager.get_default_display()
-
-        test_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB,
-                                           False,
-                                           8,
-                                           5,
-                                           10)
-
-        with capture_glib_deprecation_warnings() as warn:
-            c = Gdk.Cursor(display,
-                           test_pixbuf,
-                           y=0, x=0)
-            self.assertNotEqual(c, None)
-
-            self.assertEqual(len(warn), 1)
-            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
-            self.assertRegexpMatches(str(warn[0].message),
-                                     '.*new_from_pixbuf.*')
-
-        self.assertRaises(ValueError, Gdk.Cursor, 1, 2, 3)
-
-    def test_flags(self):
-        self.assertEqual(Gdk.ModifierType.META_MASK | 0, 0x10000000)
-        self.assertEqual(hex(Gdk.ModifierType.META_MASK), '0x10000000')
-        self.assertEqual(str(Gdk.ModifierType.META_MASK),
-                         '<flags GDK_META_MASK of type Gdk.ModifierType>')
-
-        self.assertEqual(Gdk.ModifierType.RELEASE_MASK | 0, 0x40000000)
-        self.assertEqual(hex(Gdk.ModifierType.RELEASE_MASK), '0x40000000')
-        self.assertEqual(str(Gdk.ModifierType.RELEASE_MASK),
-                         '<flags GDK_RELEASE_MASK of type Gdk.ModifierType>')
-
-        self.assertEqual(Gdk.ModifierType.RELEASE_MASK | Gdk.ModifierType.META_MASK, 0x50000000)
-        self.assertEqual(str(Gdk.ModifierType.RELEASE_MASK | Gdk.ModifierType.META_MASK),
-                         '<flags GDK_META_MASK | GDK_RELEASE_MASK of type Gdk.ModifierType>')
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_color_parse(self):
-        with capture_glib_deprecation_warnings():
-            c = Gdk.color_parse('#00FF80')
-        self.assertEqual(c.red, 0)
-        self.assertEqual(c.green, 65535)
-        self.assertEqual(c.blue, 32896)
-        self.assertEqual(Gdk.color_parse('bogus'), None)
-
-    @unittest.skipIf(Gdk._version == "4.0", "not in gdk4")
-    def test_color_representations(self):
-        # __repr__ should generate a string which is parsable when possible
-        # http://docs.python.org/2/reference/datamodel.html#object.__repr__
-        color = Gdk.Color(red=65535, green=32896, blue=1)
-        self.assertEqual(eval(repr(color)), color)
-
-        rgba = Gdk.RGBA(red=1.0, green=0.8, blue=0.6, alpha=0.4)
-        self.assertEqual(eval(repr(rgba)), rgba)
-
-    def test_rectangle_functions(self):
-        # https://bugzilla.gnome.org/show_bug.cgi?id=756364
-        a = Gdk.Rectangle()
-        b = Gdk.Rectangle()
-        self.assertTrue(isinstance(Gdk.rectangle_union(a, b), Gdk.Rectangle))
-        intersect, rect = Gdk.rectangle_intersect(a, b)
-        self.assertTrue(isinstance(rect, Gdk.Rectangle))
-        self.assertTrue(isinstance(intersect, bool))
diff --git a/tests/test_overrides_glib.py b/tests/test_overrides_glib.py
deleted file mode 100644 (file)
index 891923e..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import gc
-import unittest
-
-import gi
-from gi.repository import GLib
-from compathelper import _long
-
-
-class TestGVariant(unittest.TestCase):
-    def test_create_simple(self):
-        variant = GLib.Variant('i', 42)
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_int32(), 42)
-
-        variant = GLib.Variant('s', '')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_string(), '')
-
-        variant = GLib.Variant('s', 'hello')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_string(), 'hello')
-
-    def test_create_variant(self):
-        variant = GLib.Variant('v', GLib.Variant('i', 42))
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_type_string(), 'i')
-        self.assertEqual(variant.get_variant().get_int32(), 42)
-
-        variant = GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
-        self.assertEqual(variant.get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_type_string(), 'v')
-        self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
-        self.assertEqual(variant.get_variant().get_variant().get_int32(), 42)
-
-    def test_create_tuple(self):
-        variant = GLib.Variant('()', ())
-        self.assertEqual(variant.get_type_string(), '()')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('(i)', (3,))
-        self.assertEqual(variant.get_type_string(), '(i)')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.n_children(), 1)
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertEqual(variant.get_child_value(0).get_int32(), 3)
-
-        variant = GLib.Variant('(ss)', ('mec', 'mac'))
-        self.assertEqual(variant.get_type_string(), '(ss)')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEqual(variant.get_child_value(0).get_string(), 'mec')
-        self.assertEqual(variant.get_child_value(1).get_string(), 'mac')
-
-        # nested tuples
-        variant = GLib.Variant('((si)(ub))', (('hello', -1), (42, True)))
-        self.assertEqual(variant.get_type_string(), '((si)(ub))')
-        self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
-
-    def test_new_tuple_sink(self):
-        # https://bugzilla.gnome.org/show_bug.cgi?id=735166
-        variant = GLib.Variant.new_tuple(GLib.Variant.new_tuple())
-        del variant
-        gc.collect()
-
-    def test_create_dictionary(self):
-        variant = GLib.Variant('a{si}', {})
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'a{si}')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('a{si}', {'': 1, 'key1': 2, 'key2': 3})
-        self.assertEqual(variant.get_type_string(), 'a{si}')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(2), GLib.Variant))
-        self.assertEqual(variant.unpack(), {'': 1, 'key1': 2, 'key2': 3})
-
-        # nested dictionaries
-        variant = GLib.Variant('a{sa{si}}', {})
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
-        self.assertEqual(variant.n_children(), 0)
-
-        d = {'': {'': 1, 'keyn1': 2},
-             'key1': {'key11': 11, 'key12': 12}}
-        variant = GLib.Variant('a{sa{si}}', d)
-        self.assertEqual(variant.get_type_string(), 'a{sa{si}}')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertEqual(variant.unpack(), d)
-
-    def test_create_array(self):
-        variant = GLib.Variant('ai', [])
-        self.assertEqual(variant.get_type_string(), 'ai')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('ai', [1, 2])
-        self.assertEqual(variant.get_type_string(), 'ai')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEqual(variant.get_child_value(0).get_int32(), 1)
-        self.assertEqual(variant.get_child_value(1).get_int32(), 2)
-
-        variant = GLib.Variant('as', [])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('as', [''])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertEqual(variant.get_child_value(0).get_string(), '')
-
-        variant = GLib.Variant('as', ['hello', 'world'])
-        self.assertEqual(variant.get_type_string(), 'as')
-        self.assertTrue(isinstance(variant, GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(0), GLib.Variant))
-        self.assertTrue(isinstance(variant.get_child_value(1), GLib.Variant))
-        self.assertEqual(variant.get_child_value(0).get_string(), 'hello')
-        self.assertEqual(variant.get_child_value(1).get_string(), 'world')
-
-        # nested arrays
-        variant = GLib.Variant('aai', [])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('aai', [[]])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 0)
-
-        variant = GLib.Variant('aai', [[1, 2], [3, 4, 5]])
-        self.assertEqual(variant.get_type_string(), 'aai')
-        self.assertEqual(variant.unpack(), [[1, 2], [3, 4, 5]])
-
-    def test_create_complex(self):
-        variant = GLib.Variant('(as)', ([],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 0)
-
-        variant = GLib.Variant('(as)', ([''],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), '')
-
-        variant = GLib.Variant('(as)', (['hello'],))
-        self.assertEqual(variant.get_type_string(), '(as)')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
-
-        variant = GLib.Variant('a(ii)', [])
-        self.assertEqual(variant.get_type_string(), 'a(ii)')
-        self.assertEqual(variant.n_children(), 0)
-
-        variant = GLib.Variant('a(ii)', [(5, 6)])
-        self.assertEqual(variant.get_type_string(), 'a(ii)')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 2)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_int32(), 5)
-        self.assertEqual(variant.get_child_value(0).get_child_value(1).get_int32(), 6)
-
-        variant = GLib.Variant('(a(ii))', ([],))
-        self.assertEqual(variant.get_type_string(), '(a(ii))')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 0)
-
-        variant = GLib.Variant('(a(ii))', ([(5, 6)],))
-        self.assertEqual(variant.get_type_string(), '(a(ii))')
-        self.assertEqual(variant.n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).n_children(), 1)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).n_children(), 2)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_child_value(0).get_int32(), 5)
-        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_child_value(1).get_int32(), 6)
-
-        obj = {'a1': (1, True), 'a2': (2, False)}
-        variant = GLib.Variant('a{s(ib)}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
-        self.assertEqual(variant.unpack(), obj)
-
-        obj = {'a1': (1, GLib.Variant('b', True)), 'a2': (2, GLib.Variant('y', 255))}
-        variant = GLib.Variant('a{s(iv)}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{s(iv)}')
-        self.assertEqual(variant.unpack(), {'a1': (1, True), 'a2': (2, 255)})
-
-        obj = (1, {'a': {'a1': True, 'a2': False},
-                   'b': {'b1': False},
-                   'c': {}
-                  },
-               'foo')
-        variant = GLib.Variant('(ia{sa{sb}}s)', obj)
-        self.assertEqual(variant.get_type_string(), '(ia{sa{sb}}s)')
-        self.assertEqual(variant.unpack(), obj)
-
-        obj = {"frequency": GLib.Variant('t', 738000000),
-               "hierarchy": GLib.Variant('i', 0),
-               "bandwidth": GLib.Variant('x', 8),
-               "code-rate-hp": GLib.Variant('d', 2.0 / 3.0),
-               "constellation": GLib.Variant('s', "QAM16"),
-               "guard-interval": GLib.Variant('u', 4)}
-        variant = GLib.Variant('a{sv}', obj)
-        self.assertEqual(variant.get_type_string(), 'a{sv}')
-        self.assertEqual(variant.unpack(),
-                         {"frequency": 738000000,
-                          "hierarchy": 0,
-                          "bandwidth": 8,
-                          "code-rate-hp": 2.0 / 3.0,
-                          "constellation": "QAM16",
-                          "guard-interval": 4
-                         })
-
-    def test_create_errors(self):
-        # excess arguments
-        self.assertRaises(TypeError, GLib.Variant, 'i', 42, 3)
-        self.assertRaises(TypeError, GLib.Variant, '(i)', (42, 3))
-
-        # not enough arguments
-        self.assertRaises(TypeError, GLib.Variant, '(ii)', (42,))
-
-        # data type mismatch
-        self.assertRaises(TypeError, GLib.Variant, 'i', 'hello')
-        self.assertRaises(TypeError, GLib.Variant, 's', 42)
-        self.assertRaises(TypeError, GLib.Variant, '(ss)', 'mec', 'mac')
-        self.assertRaises(TypeError, GLib.Variant, '(s)', 'hello')
-
-        # unimplemented data type
-        self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
-
-        # invalid types
-        self.assertRaises(TypeError, GLib.Variant, '(ii', (42, 3))
-        self.assertRaises(TypeError, GLib.Variant, '(ii))', (42, 3))
-        self.assertRaises(TypeError, GLib.Variant, 'a{si', {})
-        self.assertRaises(TypeError, GLib.Variant, 'a{si}}', {})
-        self.assertRaises(TypeError, GLib.Variant, 'a{iii}', {})
-
-    def test_unpack(self):
-        # simple values
-        res = GLib.Variant.new_int32(-42).unpack()
-        self.assertEqual(res, -42)
-
-        res = GLib.Variant.new_uint64(34359738368).unpack()
-        self.assertEqual(res, 34359738368)
-
-        res = GLib.Variant.new_boolean(True).unpack()
-        self.assertEqual(res, True)
-
-        res = GLib.Variant.new_object_path('/foo/Bar').unpack()
-        self.assertEqual(res, '/foo/Bar')
-
-        # variant
-        res = GLib.Variant('v', GLib.Variant.new_int32(-42)).unpack()
-        self.assertEqual(res, -42)
-
-        GLib.Variant('v', GLib.Variant('v', GLib.Variant('i', 42)))
-        self.assertEqual(res, -42)
-
-        # tuple
-        res = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
-                                     GLib.Variant.new_string('hello')).unpack()
-        self.assertEqual(res, (-1, 'hello'))
-
-        # array
-        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
-        vb.add_value(GLib.Variant.new_int32(-1))
-        vb.add_value(GLib.Variant.new_int32(3))
-        res = vb.end().unpack()
-        self.assertEqual(res, [-1, 3])
-
-        # dictionary
-        res = GLib.Variant('a{si}', {'key1': 1, 'key2': 2}).unpack()
-        self.assertEqual(res, {'key1': 1, 'key2': 2})
-
-        # maybe
-        v = GLib.Variant.new_maybe(GLib.VariantType.new('i'), GLib.Variant('i', 1))
-        res = v.unpack()
-        self.assertEqual(res, 1)
-        v = GLib.Variant.new_maybe(GLib.VariantType.new('i'), None)
-        res = v.unpack()
-        self.assertEqual(res, None)
-
-    def test_iteration(self):
-        # array index access
-        vb = GLib.VariantBuilder.new(gi._gi.variant_type_from_string('ai'))
-        vb.add_value(GLib.Variant.new_int32(-1))
-        vb.add_value(GLib.Variant.new_int32(3))
-        v = vb.end()
-
-        self.assertEqual(len(v), 2)
-        self.assertEqual(v[0], -1)
-        self.assertEqual(v[1], 3)
-        self.assertEqual(v[-1], 3)
-        self.assertEqual(v[-2], -1)
-        self.assertRaises(IndexError, v.__getitem__, 2)
-        self.assertRaises(IndexError, v.__getitem__, -3)
-        self.assertRaises(ValueError, v.__getitem__, 'a')
-
-        # array iteration
-        self.assertEqual([x for x in v], [-1, 3])
-        self.assertEqual(list(v), [-1, 3])
-
-        # tuple index access
-        v = GLib.Variant.new_tuple(GLib.Variant.new_int32(-1),
-                                   GLib.Variant.new_string('hello'))
-        self.assertEqual(len(v), 2)
-        self.assertEqual(v[0], -1)
-        self.assertEqual(v[1], 'hello')
-        self.assertEqual(v[-1], 'hello')
-        self.assertEqual(v[-2], -1)
-        self.assertRaises(IndexError, v.__getitem__, 2)
-        self.assertRaises(IndexError, v.__getitem__, -3)
-        self.assertRaises(ValueError, v.__getitem__, 'a')
-
-        # tuple iteration
-        self.assertEqual([x for x in v], [-1, 'hello'])
-        self.assertEqual(tuple(v), (-1, 'hello'))
-
-        # dictionary index access
-        vsi = GLib.Variant('a{si}', {'key1': 1, 'key2': 2})
-        vis = GLib.Variant('a{is}', {1: 'val1', 5: 'val2'})
-
-        self.assertEqual(len(vsi), 2)
-        self.assertEqual(vsi['key1'], 1)
-        self.assertEqual(vsi['key2'], 2)
-        self.assertRaises(KeyError, vsi.__getitem__, 'unknown')
-
-        self.assertEqual(len(vis), 2)
-        self.assertEqual(vis[1], 'val1')
-        self.assertEqual(vis[5], 'val2')
-        self.assertRaises(KeyError, vsi.__getitem__, 3)
-
-        # dictionary iteration
-        self.assertEqual(set(vsi.keys()), set(['key1', 'key2']))
-        self.assertEqual(set(vis.keys()), set([1, 5]))
-
-        # string index access
-        v = GLib.Variant('s', 'hello')
-        self.assertEqual(len(v), 5)
-        self.assertEqual(v[0], 'h')
-        self.assertEqual(v[4], 'o')
-        self.assertEqual(v[-1], 'o')
-        self.assertEqual(v[-5], 'h')
-        self.assertRaises(IndexError, v.__getitem__, 5)
-        self.assertRaises(IndexError, v.__getitem__, -6)
-
-        # string iteration
-        self.assertEqual([x for x in v], ['h', 'e', 'l', 'l', 'o'])
-
-    def test_split_signature(self):
-        self.assertEqual(GLib.Variant.split_signature('()'), [])
-
-        self.assertEqual(GLib.Variant.split_signature('s'), ['s'])
-
-        self.assertEqual(GLib.Variant.split_signature('as'), ['as'])
-
-        self.assertEqual(GLib.Variant.split_signature('(s)'), ['s'])
-
-        self.assertEqual(GLib.Variant.split_signature('(iso)'), ['i', 's', 'o'])
-
-        self.assertEqual(GLib.Variant.split_signature('(s(ss)i(ii))'),
-                         ['s', '(ss)', 'i', '(ii)'])
-
-        self.assertEqual(GLib.Variant.split_signature('(as)'), ['as'])
-
-        self.assertEqual(GLib.Variant.split_signature('(s(ss)iaiaasa(ii))'),
-                         ['s', '(ss)', 'i', 'ai', 'aas', 'a(ii)'])
-
-        self.assertEqual(GLib.Variant.split_signature('(a{iv}(ii)((ss)a{s(ss)}))'),
-                         ['a{iv}', '(ii)', '((ss)a{s(ss)})'])
-
-    def test_hash(self):
-        v1 = GLib.Variant('s', 'somestring')
-        v2 = GLib.Variant('s', 'somestring')
-        v3 = GLib.Variant('s', 'somestring2')
-
-        self.assertTrue(v2 in set([v1, v3]))
-        self.assertTrue(v2 in frozenset([v1, v3]))
-        self.assertTrue(v2 in {v1: '1', v3: '2'})
-
-    def test_compare(self):
-        # Check if identical GVariant are equal
-
-        def assert_equal(vtype, value):
-            self.assertEqual(GLib.Variant(vtype, value), GLib.Variant(vtype, value))
-
-        def assert_not_equal(vtype1, value1, vtype2, value2):
-            self.assertNotEqual(GLib.Variant(vtype1, value1), GLib.Variant(vtype2, value2))
-
-        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
-        for num in numbers:
-            assert_equal(num, 42)
-            assert_not_equal(num, 42, num, 41)
-            assert_not_equal(num, 42, 's', '42')
-
-        assert_equal('s', 'something')
-        assert_not_equal('s', 'something', 's', 'somethingelse')
-        assert_not_equal('s', 'something', 'i', 1234)
-
-        assert_equal('g', 'dustybinqhogx')
-        assert_not_equal('g', 'dustybinqhogx', 'g', 'dustybin')
-        assert_not_equal('g', 'dustybinqhogx', 'i', 1234)
-
-        assert_equal('o', '/dev/null')
-        assert_not_equal('o', '/dev/null', 'o', '/dev/zero')
-        assert_not_equal('o', '/dev/null', 'i', 1234)
-
-        assert_equal('(s)', ('strtuple',))
-        assert_not_equal('(s)', ('strtuple',), '(s)', ('strtuple2',))
-
-        assert_equal('a{si}', {'str': 42})
-        assert_not_equal('a{si}', {'str': 42}, 'a{si}', {'str': 43})
-
-        assert_equal('v', GLib.Variant('i', 42))
-        assert_not_equal('v', GLib.Variant('i', 42), 'v', GLib.Variant('i', 43))
-
-    def test_bool(self):
-        # Check if the GVariant bool matches the unpacked Pythonic bool
-
-        def assert_equals_bool(vtype, value):
-            self.assertEqual(bool(GLib.Variant(vtype, value)), bool(value))
-
-        # simple values
-        assert_equals_bool('b', True)
-        assert_equals_bool('b', False)
-
-        numbers = ['y', 'n', 'q', 'i', 'u', 'x', 't', 'h', 'd']
-        for number in numbers:
-            assert_equals_bool(number, 0)
-            assert_equals_bool(number, 1)
-
-        assert_equals_bool('s', '')
-        assert_equals_bool('g', '')
-        assert_equals_bool('s', 'something')
-        assert_equals_bool('o', '/dev/null')
-        assert_equals_bool('g', 'dustybinqhogx')
-
-        # arrays
-        assert_equals_bool('ab', [True])
-        assert_equals_bool('ab', [False])
-        for number in numbers:
-            assert_equals_bool('a' + number, [])
-            assert_equals_bool('a' + number, [0])
-        assert_equals_bool('as', [])
-        assert_equals_bool('as', [''])
-        assert_equals_bool('ao', [])
-        assert_equals_bool('ao', ['/'])
-        assert_equals_bool('ag', [])
-        assert_equals_bool('ag', [''])
-        assert_equals_bool('aai', [[]])
-
-        # tuples
-        assert_equals_bool('()', ())
-        for number in numbers:
-            assert_equals_bool('(' + number + ')', (0,))
-        assert_equals_bool('(s)', ('',))
-        assert_equals_bool('(o)', ('/',))
-        assert_equals_bool('(g)', ('',))
-        assert_equals_bool('(())', ((),))
-
-        # dictionaries
-        assert_equals_bool('a{si}', {})
-        assert_equals_bool('a{si}', {'': 0})
-
-        # complex types, always True
-        assert_equals_bool('(as)', ([],))
-        assert_equals_bool('a{s(i)}', {'': (0,)})
-
-        # variant types, recursive unpacking
-        assert_equals_bool('v', GLib.Variant('i', 0))
-        assert_equals_bool('v', GLib.Variant('i', 1))
-
-    def test_repr(self):
-        # with C constructor
-        v = GLib.Variant.new_uint32(42)
-        self.assertEqual(repr(v), "GLib.Variant('u', 42)")
-
-        # with override constructor
-        v = GLib.Variant('(is)', (1, 'somestring'))
-        self.assertEqual(repr(v), "GLib.Variant('(is)', (1, 'somestring'))")
-
-    def test_str(self):
-        # with C constructor
-        v = GLib.Variant.new_uint32(42)
-        self.assertEqual(str(v), 'uint32 42')
-
-        # with override constructor
-        v = GLib.Variant('(is)', (1, 'somestring'))
-        self.assertEqual(str(v), "(1, 'somestring')")
-
-    def test_parse_error(self):
-        # This test doubles as a test for GLib.Error marshaling.
-        source_str = 'abc'
-        with self.assertRaises(GLib.Error) as context:
-            GLib.Variant.parse(None, source_str, None, None)
-        e = context.exception
-        text = GLib.Variant.parse_error_print_context(e, source_str)
-        self.assertTrue(source_str in text)
-
-    def test_parse_error_exceptions(self):
-        source_str = 'abc'
-        self.assertRaisesRegexp(TypeError, 'Must be GLib.Error, not int',
-                                GLib.Variant.parse_error_print_context,
-                                42, source_str)
-
-        gerror = GLib.Error(message=42)  # not a string
-        self.assertRaisesRegexp(ValueError, ".*must have a 'message'.*",
-                                GLib.Variant.parse_error_print_context,
-                                gerror, source_str)
-
-        gerror = GLib.Error(domain=42)  # not a string
-        self.assertRaisesRegexp(ValueError, ".*must have a 'domain'.*",
-                                GLib.Variant.parse_error_print_context,
-                                gerror, source_str)
-
-        gerror = GLib.Error(code='not an int')
-        self.assertRaisesRegexp(ValueError, ".*must have a 'code' int.*",
-                                GLib.Variant.parse_error_print_context,
-                                gerror, source_str)
-
-
-class TestConstants(unittest.TestCase):
-
-    def test_basic_types_limits(self):
-        self.assertTrue(isinstance(GLib.MINFLOAT, float))
-        self.assertTrue(isinstance(GLib.MAXLONG, (int, _long)))
diff --git a/tests/test_overrides_pango.py b/tests/test_overrides_pango.py
deleted file mode 100644 (file)
index 5c09a6a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-
-import unittest
-
-try:
-    from gi.repository import Pango
-    from gi.repository import PangoCairo
-except ImportError:
-    Pango = None
-    PangoCairo = None
-
-
-@unittest.skipUnless(Pango, 'Pango not available')
-class TestPango(unittest.TestCase):
-
-    def test_default_font_description(self):
-        desc = Pango.FontDescription()
-        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
-
-    def test_font_description(self):
-        desc = Pango.FontDescription('monospace')
-        self.assertEqual(desc.get_family(), 'monospace')
-        self.assertEqual(desc.get_variant(), Pango.Variant.NORMAL)
-
-    def test_layout(self):
-        self.assertRaises(TypeError, Pango.Layout)
-        context = Pango.Context()
-        layout = Pango.Layout(context)
-        self.assertEqual(layout.get_context(), context)
-
-        layout.set_markup("Foobar")
-        self.assertEqual(layout.get_text(), "Foobar")
-
-    def test_break_keyword_escape(self):
-        # https://bugzilla.gnome.org/show_bug.cgi?id=697363
-        self.assertTrue(hasattr(Pango, 'break_'))
-        self.assertTrue(Pango.break_ is not None)
-
-    def test_context_get_metrics(self):
-        # Test default "language" argument
-        font_map = PangoCairo.font_map_get_default()
-        context = font_map.create_context()
-        desc = Pango.FontDescription('monospace')
-        metrics1 = context.get_metrics(desc)
-        metrics2 = context.get_metrics(desc, context.get_language())
-        self.assertEqual(metrics1.get_ascent(), metrics2.get_ascent())
index ce035cd..5ae2b47 100644 (file)
 # coding=utf-8
 
-import os
-import gc
 import sys
 import struct
-import types
 import unittest
-import tempfile
 
 from gi.repository import GObject
-from gi.repository.GObject import ParamFlags, GType, new
+from  gi.repository.GObject import GType, new, PARAM_READWRITE, \
+     PARAM_CONSTRUCT, PARAM_READABLE, PARAM_WRITABLE, PARAM_CONSTRUCT_ONLY
 from gi.repository.GObject import \
-    TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG, TYPE_INT64, \
-    TYPE_UINT64, TYPE_GTYPE, TYPE_INVALID, TYPE_NONE, TYPE_STRV, \
-    TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, TYPE_BOOLEAN, TYPE_FLOAT, \
-    TYPE_DOUBLE, TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
-    TYPE_STRING, TYPE_PYOBJECT, TYPE_VARIANT
-
-from gi.repository.GLib import \
-    MININT, MAXINT, MAXUINT, MINLONG, MAXLONG, MAXULONG, \
-    MAXUINT64, MAXINT64, MININT64
+     TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG, TYPE_INT64, \
+     TYPE_UINT64, TYPE_GTYPE, TYPE_INVALID, TYPE_NONE
+from gi.repository.GObject import \
+     G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
+     G_MAXULONG
 
 from gi.repository import Gio
 from gi.repository import GLib
 from gi.repository import GIMarshallingTests
-from gi.repository import Regress
-from gi import _propertyhelper as propertyhelper
+
+if sys.version_info < (3, 0):
+    TEST_UTF8 = "\xe2\x99\xa5"
+    UNICODE_UTF8 = unicode(TEST_UTF8, 'UTF-8')
+else:
+    TEST_UTF8 = "♥"
+    UNICODE_UTF8 = TEST_UTF8
 
 from compathelper import _long
-from helper import capture_glib_warnings, capture_output
 
 
 class PropertyObject(GObject.GObject):
     normal = GObject.Property(type=str)
     construct = GObject.Property(
         type=str,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT,
-        default='default')
-
+        flags=PARAM_READWRITE | PARAM_CONSTRUCT, default='default')
     construct_only = GObject.Property(
         type=str,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT_ONLY)
-
+        flags=PARAM_READWRITE | PARAM_CONSTRUCT_ONLY)
     uint64 = GObject.Property(
-        type=TYPE_UINT64,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
+        type=TYPE_UINT64, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
 
     enum = GObject.Property(
         type=Gio.SocketType, default=Gio.SocketType.STREAM)
 
     boxed = GObject.Property(
-        type=GLib.Regex,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
+        type=GLib.Regex, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
 
     flags = GObject.Property(
-        type=GIMarshallingTests.Flags,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT,
+        type=GIMarshallingTests.Flags, flags=PARAM_READWRITE | PARAM_CONSTRUCT,
         default=GIMarshallingTests.Flags.VALUE1)
 
     gtype = GObject.Property(
-        type=TYPE_GTYPE,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
-
-    strings = GObject.Property(
-        type=TYPE_STRV,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
-
-    variant = GObject.Property(
-        type=TYPE_VARIANT,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
-
-    variant_def = GObject.Property(
-        type=TYPE_VARIANT,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT,
-        default=GLib.Variant('i', 42))
-
-    interface = GObject.Property(
-        type=Gio.File,
-        flags=ParamFlags.READABLE | ParamFlags.WRITABLE | ParamFlags.CONSTRUCT)
-
+        type=TYPE_GTYPE, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
 
-class PropertyInheritanceObject(Regress.TestObj):
-    # override property from the base class, with a different type
-    string = GObject.Property(type=int)
 
-    # a property entirely defined at the Python level
-    python_prop = GObject.Property(type=str)
-
-
-class PropertySubClassObject(PropertyInheritanceObject):
-    # override property from the base class, with a different type
-    python_prop = GObject.Property(type=int)
-
-
-class TestPropertyInheritanceObject(unittest.TestCase):
-    def test_override_gi_property(self):
-        self.assertNotEqual(Regress.TestObj.props.string.value_type,
-                            PropertyInheritanceObject.props.string.value_type)
-        obj = PropertyInheritanceObject()
-        self.assertEqual(type(obj.props.string), int)
-        obj.props.string = 4
-        self.assertEqual(obj.props.string, 4)
-
-    def test_override_python_property(self):
-        obj = PropertySubClassObject()
-        self.assertEqual(type(obj.props.python_prop), int)
-        obj.props.python_prop = 5
-        self.assertEqual(obj.props.python_prop, 5)
-
-
-class TestPropertyObject(unittest.TestCase):
-    def test_get_set(self):
+class TestProperties(unittest.TestCase):
+    def testGetSet(self):
         obj = PropertyObject()
         obj.props.normal = "value"
         self.assertEqual(obj.props.normal, "value")
 
-    def test_hasattr_on_object(self):
+    def testListWithInstance(self):
         obj = PropertyObject()
         self.assertTrue(hasattr(obj.props, "normal"))
 
-    def test_hasattr_on_class(self):
+    def testListWithoutInstance(self):
         self.assertTrue(hasattr(PropertyObject.props, "normal"))
 
-    def test_set_on_class(self):
+    def testSetNoInstance(self):
         def set(obj):
             obj.props.normal = "foobar"
 
         self.assertRaises(TypeError, set, PropertyObject)
 
-    def test_iteration(self):
+    def testIterator(self):
         for obj in (PropertyObject.props, PropertyObject().props):
-            names = []
             for pspec in obj:
                 gtype = GType(pspec)
                 self.assertEqual(gtype.parent.name, 'GParam')
-                names.append(pspec.name)
-
-            names.sort()
-            self.assertEqual(names, ['boxed',
-                                     'construct',
-                                     'construct-only',
-                                     'enum',
-                                     'flags',
-                                     'gtype',
-                                     'interface',
-                                     'normal',
-                                     'strings',
-                                     'uint64',
-                                     'variant',
-                                     'variant-def'])
-
-    def test_normal(self):
+                self.assertTrue(pspec.name in ['normal',
+                                               'construct',
+                                               'construct-only',
+                                               'uint64',
+                                               'enum',
+                                               'flags',
+                                               'gtype',
+                                               'boxed'])
+            self.assertEqual(len(obj), 8)
+
+    def testNormal(self):
         obj = new(PropertyObject, normal="123")
         self.assertEqual(obj.props.normal, "123")
         obj.set_property('normal', '456')
@@ -158,7 +95,7 @@ class TestPropertyObject(unittest.TestCase):
         obj.props.normal = '789'
         self.assertEqual(obj.props.normal, "789")
 
-    def test_construct(self):
+    def testConstruct(self):
         obj = new(PropertyObject, construct="123")
         self.assertEqual(obj.props.construct, "123")
         obj.set_property('construct', '456')
@@ -166,17 +103,15 @@ class TestPropertyObject(unittest.TestCase):
         obj.props.construct = '789'
         self.assertEqual(obj.props.construct, "789")
 
-    def test_utf8(self):
-        test_utf8 = "♥"
-        unicode_utf8 = u"♥"
-        obj = new(PropertyObject, construct_only=unicode_utf8)
-        self.assertEqual(obj.props.construct_only, test_utf8)
-        obj.set_property('construct', unicode_utf8)
-        self.assertEqual(obj.props.construct, test_utf8)
-        obj.props.normal = unicode_utf8
-        self.assertEqual(obj.props.normal, test_utf8)
-
-    def test_int_to_str(self):
+    def testUTF8(self):
+        obj = new(PropertyObject, construct_only=UNICODE_UTF8)
+        self.assertEqual(obj.props.construct_only, TEST_UTF8)
+        obj.set_property('construct', UNICODE_UTF8)
+        self.assertEqual(obj.props.construct, TEST_UTF8)
+        obj.props.normal = UNICODE_UTF8
+        self.assertEqual(obj.props.normal, TEST_UTF8)
+
+    def testIntToStr(self):
         obj = new(PropertyObject, construct_only=1)
         self.assertEqual(obj.props.construct_only, '1')
         obj.set_property('construct', '2')
@@ -184,7 +119,7 @@ class TestPropertyObject(unittest.TestCase):
         obj.props.normal = 3
         self.assertEqual(obj.props.normal, '3')
 
-    def test_construct_only(self):
+    def testConstructOnly(self):
         obj = new(PropertyObject, construct_only="123")
         self.assertEqual(obj.props.construct_only, "123")
         self.assertRaises(TypeError,
@@ -192,7 +127,7 @@ class TestPropertyObject(unittest.TestCase):
         self.assertRaises(TypeError,
                           obj.set_property, 'construct-only', '456')
 
-    def test_uint64(self):
+    def testUint64(self):
         obj = new(PropertyObject)
         self.assertEqual(obj.props.uint64, 0)
         obj.props.uint64 = _long(1)
@@ -203,19 +138,19 @@ class TestPropertyObject(unittest.TestCase):
         self.assertRaises((TypeError, OverflowError), obj.set_property, "uint64", _long(-1))
         self.assertRaises((TypeError, OverflowError), obj.set_property, "uint64", -1)
 
-    def test_uint64_default_value(self):
+    def testUInt64DefaultValue(self):
         try:
             class TimeControl(GObject.GObject):
                 __gproperties__ = {
                     'time': (TYPE_UINT64, 'Time', 'Time',
                              _long(0), (1 << 64) - 1, _long(0),
-                             ParamFlags.READABLE)
+                             PARAM_READABLE)
                     }
         except OverflowError:
             (etype, ex) = sys.exc_info()[2:]
             self.fail(str(ex))
 
-    def test_enum(self):
+    def testEnum(self):
         obj = new(PropertyObject)
         self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
         self.assertEqual(obj.enum, Gio.SocketType.STREAM)
@@ -243,7 +178,7 @@ class TestPropertyObject(unittest.TestCase):
         self.assertRaises(TypeError, GObject.Property, type=Gio.SocketType,
                           default=1)
 
-    def test_flags(self):
+    def testFlags(self):
         obj = new(PropertyObject)
         self.assertEqual(obj.props.flags, GIMarshallingTests.Flags.VALUE1)
         self.assertEqual(obj.flags, GIMarshallingTests.Flags.VALUE1)
@@ -257,13 +192,13 @@ class TestPropertyObject(unittest.TestCase):
         self.assertRaises(TypeError, setattr, obj, 'flags', None)
 
         self.assertRaises(TypeError, GObject.Property,
-                          type=GIMarshallingTests.Flags, default='foo')
+                type=GIMarshallingTests.Flags, default='foo')
         self.assertRaises(TypeError, GObject.Property,
-                          type=GIMarshallingTests.Flags, default=object())
+                type=GIMarshallingTests.Flags, default=object())
         self.assertRaises(TypeError, GObject.Property,
-                          type=GIMarshallingTests.Flags, default=None)
+                type=GIMarshallingTests.Flags, default=None)
 
-    def test_gtype(self):
+    def testGType(self):
         obj = new(PropertyObject)
 
         self.assertEqual(obj.props.gtype, TYPE_NONE)
@@ -279,142 +214,34 @@ class TestPropertyObject(unittest.TestCase):
 
         # GType parameters do not support defaults in GLib
         self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
-                          default=TYPE_INT)
+                default=TYPE_INT)
 
         # incompatible type
         self.assertRaises(TypeError, setattr, obj, 'gtype', 'foo')
         self.assertRaises(TypeError, setattr, obj, 'gtype', object())
 
         self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
-                          default='foo')
+                default='foo')
         self.assertRaises(TypeError, GObject.Property, type=TYPE_GTYPE,
-                          default=object())
+                default=object())
 
         # set in constructor
         obj = new(PropertyObject, gtype=TYPE_UINT)
         self.assertEqual(obj.props.gtype, TYPE_UINT)
         self.assertEqual(obj.gtype, TYPE_UINT)
 
-    def test_boxed(self):
+    def textBoxed(self):
         obj = new(PropertyObject)
 
         regex = GLib.Regex.new('[a-z]*', 0, 0)
         obj.props.boxed = regex
         self.assertEqual(obj.props.boxed.get_pattern(), '[a-z]*')
-        self.assertEqual(obj.boxed.get_pattern(), '[a-z]*')
+        self.assertEqual(obj.boxed.get_patttern(), '[a-z]*')
 
         self.assertRaises(TypeError, setattr, obj, 'boxed', 'foo')
         self.assertRaises(TypeError, setattr, obj, 'boxed', object())
 
-    def test_strings(self):
-        obj = new(PropertyObject)
-
-        # Should work with actual GStrv objects as well as
-        # Python string lists
-        class GStrv(list):
-            __gtype__ = GObject.TYPE_STRV
-
-        self.assertEqual(obj.props.strings, GStrv([]))
-        self.assertEqual(obj.strings, GStrv([]))
-        self.assertEqual(obj.props.strings, [])
-        self.assertEqual(obj.strings, [])
-
-        obj.strings = ['hello', 'world']
-        self.assertEqual(obj.props.strings, ['hello', 'world'])
-        self.assertEqual(obj.strings, ['hello', 'world'])
-
-        obj.strings = GStrv(['hello', 'world'])
-        self.assertEqual(obj.props.strings, GStrv(['hello', 'world']))
-        self.assertEqual(obj.strings, GStrv(['hello', 'world']))
-
-        obj.strings = []
-        self.assertEqual(obj.strings, [])
-        obj.strings = GStrv([])
-        self.assertEqual(obj.strings, GStrv([]))
-
-        p = GObject.Property(type=TYPE_STRV, default=['hello', '1'])
-        self.assertEqual(p.default, ['hello', '1'])
-        self.assertEqual(p.type, TYPE_STRV)
-        p = GObject.Property(type=TYPE_STRV, default=GStrv(['hello', '1']))
-        self.assertEqual(p.default, ['hello', '1'])
-        self.assertEqual(p.type, TYPE_STRV)
-
-        # set in constructor
-        obj = new(PropertyObject, strings=['hello', 'world'])
-        self.assertEqual(obj.props.strings, ['hello', 'world'])
-        self.assertEqual(obj.strings, ['hello', 'world'])
-
-        # wrong types
-        self.assertRaises(TypeError, setattr, obj, 'strings', 1)
-        self.assertRaises(TypeError, setattr, obj, 'strings', 'foo')
-        self.assertRaises(TypeError, setattr, obj, 'strings', ['foo', 1])
-
-        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
-                          default=1)
-        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
-                          default='foo')
-        self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
-                          default=['hello', 1])
-
-    def test_variant(self):
-        obj = new(PropertyObject)
-
-        self.assertEqual(obj.props.variant, None)
-        self.assertEqual(obj.variant, None)
-
-        obj.variant = GLib.Variant('s', 'hello')
-        self.assertEqual(obj.variant.print_(True), "'hello'")
-
-        obj.variant = GLib.Variant('b', True)
-        self.assertEqual(obj.variant.print_(True), "true")
-
-        obj.props.variant = GLib.Variant('y', 2)
-        self.assertEqual(obj.variant.print_(True), "byte 0x02")
-
-        obj.variant = None
-        self.assertEqual(obj.variant, None)
-
-        # set in constructor
-        obj = new(PropertyObject, variant=GLib.Variant('u', 5))
-        self.assertEqual(obj.props.variant.print_(True), 'uint32 5')
-
-        GObject.Property(type=TYPE_VARIANT, default=GLib.Variant('i', 1))
-
-        # incompatible types
-        self.assertRaises(TypeError, setattr, obj, 'variant', 'foo')
-        self.assertRaises(TypeError, setattr, obj, 'variant', 42)
-
-        self.assertRaises(TypeError, GObject.Property, type=TYPE_VARIANT,
-                          default='foo')
-        self.assertRaises(TypeError, GObject.Property, type=TYPE_VARIANT,
-                          default=object())
-
-    def test_variant_default(self):
-        obj = new(PropertyObject)
-
-        self.assertEqual(obj.props.variant_def.print_(True), '42')
-        self.assertEqual(obj.variant_def.print_(True), '42')
-
-        obj.props.variant_def = GLib.Variant('y', 2)
-        self.assertEqual(obj.variant_def.print_(True), "byte 0x02")
-
-        # set in constructor
-        obj = new(PropertyObject, variant_def=GLib.Variant('u', 5))
-        self.assertEqual(obj.props.variant_def.print_(True), 'uint32 5')
-
-    def test_interface(self):
-        obj = new(PropertyObject)
-
-        path = os.path.join(tempfile.gettempdir(), "some", "path")
-        file = Gio.File.new_for_path(path)
-        obj.props.interface = file
-        self.assertEqual(obj.props.interface.get_path(), path)
-        self.assertEqual(obj.interface.get_path(), path)
-
-        self.assertRaises(TypeError, setattr, obj, 'interface', 'foo')
-        self.assertRaises(TypeError, setattr, obj, 'interface', object())
-
-    def test_range(self):
+    def testRange(self):
         # kiwi code
         def max(c):
             return 2 ** ((8 * struct.calcsize(c)) - 1) - 1
@@ -432,22 +259,22 @@ class TestPropertyObject(unittest.TestCase):
         minint64 = -maxint64 - 1
         maxuint64 = umax('Q')
 
-        types_ = dict(int=(TYPE_INT, minint, maxint),
-                      uint=(TYPE_UINT, 0, maxuint),
-                      long=(TYPE_LONG, minlong, maxlong),
-                      ulong=(TYPE_ULONG, 0, maxulong),
-                      int64=(TYPE_INT64, minint64, maxint64),
-                      uint64=(TYPE_UINT64, 0, maxuint64))
+        types = dict(int=(TYPE_INT, minint, maxint),
+                     uint=(TYPE_UINT, 0, maxuint),
+                     long=(TYPE_LONG, minlong, maxlong),
+                     ulong=(TYPE_ULONG, 0, maxulong),
+                     int64=(TYPE_INT64, minint64, maxint64),
+                     uint64=(TYPE_UINT64, 0, maxuint64))
 
-        def build_gproperties(types_):
+        def build_gproperties(types):
             d = {}
-            for key, (gtype, min, max) in types_.items():
+            for key, (gtype, min, max) in types.items():
                 d[key] = (gtype, 'blurb', 'desc', min, max, 0,
-                          ParamFlags.READABLE | ParamFlags.WRITABLE)
+                          PARAM_READABLE | PARAM_WRITABLE)
             return d
 
         class RangeCheck(GObject.GObject):
-            __gproperties__ = build_gproperties(types_)
+            __gproperties__ = build_gproperties(types)
 
             def __init__(self):
                 self.values = {}
@@ -473,7 +300,7 @@ class TestPropertyObject(unittest.TestCase):
         self.assertEqual(RangeCheck.props.uint64.maximum, maxuint64)
 
         obj = RangeCheck()
-        for key, (gtype, min, max) in types_.items():
+        for key, (gtype, min, max) in types.items():
             self.assertEqual(obj.get_property(key),
                              getattr(RangeCheck.props, key).default_value)
 
@@ -483,7 +310,7 @@ class TestPropertyObject(unittest.TestCase):
             obj.set_property(key, max)
             self.assertEqual(obj.get_property(key), max)
 
-    def test_multi(self):
+    def testMulti(self):
         obj = PropertyObject()
         obj.set_properties(normal="foo",
                            uint64=7)
@@ -493,7 +320,7 @@ class TestPropertyObject(unittest.TestCase):
 
 
 class TestProperty(unittest.TestCase):
-    def test_simple(self):
+    def testSimple(self):
         class C(GObject.GObject):
             str = GObject.Property(type=str)
             int = GObject.Property(type=int)
@@ -522,7 +349,7 @@ class TestProperty(unittest.TestCase):
         o.long = _long(100)
         self.assertEqual(o.long, _long(100))
 
-    def test_custom_getter(self):
+    def testCustomGetter(self):
         class C(GObject.GObject):
             def get_prop(self):
                 return 'value'
@@ -532,27 +359,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o.prop, 'value')
         self.assertRaises(TypeError, setattr, o, 'prop', 'xxx')
 
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=575652
-    def test_getter_exception(self):
-        class C(GObject.Object):
-            @GObject.Property(type=int)
-            def prop(self):
-                raise ValueError('something bad happend')
-
-        o = C()
-
-        # silence exception printed to stderr
-        with capture_output():
-            with self.assertRaisesRegex(ValueError, 'something bad happend'):
-                o.prop
-
-            with self.assertRaisesRegex(ValueError, 'something bad happend'):
-                o.get_property('prop')
-
-            with self.assertRaisesRegex(ValueError, 'something bad happend'):
-                o.props.prop
-
-    def test_custom_setter(self):
+    def testCustomSetter(self):
         class C(GObject.GObject):
             def set_prop(self, value):
                 self._value = value
@@ -568,7 +375,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o._value, 'bar')
         self.assertRaises(TypeError, getattr, o, 'prop')
 
-    def test_decorator_default(self):
+    def testDecoratorDefault(self):
         class C(GObject.GObject):
             _value = 'value'
 
@@ -586,25 +393,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o.value, 'blah')
         self.assertEqual(o.props.value, 'blah')
 
-    def test_decorator_private_setter(self):
-        class C(GObject.GObject):
-            _value = 'value'
-
-            @GObject.Property
-            def value(self):
-                return self._value
-
-            @value.setter
-            def _set_value(self, value):
-                self._value = value
-
-        o = C()
-        self.assertEqual(o.value, 'value')
-        o.value = 'blah'
-        self.assertEqual(o.value, 'blah')
-        self.assertEqual(o.props.value, 'blah')
-
-    def test_decorator_with_call(self):
+    def testDecoratorWithCall(self):
         class C(GObject.GObject):
             _value = 1
 
@@ -622,7 +411,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o.typedValue, 5)
         self.assertEqual(o.props.typedValue, 5)
 
-    def test_errors(self):
+    def testErrors(self):
         self.assertRaises(TypeError, GObject.Property, type='str')
         self.assertRaises(TypeError, GObject.Property, nick=False)
         self.assertRaises(TypeError, GObject.Property, blurb=False)
@@ -634,32 +423,38 @@ class TestProperty(unittest.TestCase):
         self.assertRaises(TypeError, GObject.Property, type=bool)
         self.assertRaises(TypeError, GObject.Property, type=object, default=0)
         self.assertRaises(TypeError, GObject.Property, type=complex)
+        self.assertRaises(TypeError, GObject.Property, flags=-10)
 
-    def test_defaults(self):
+    def testDefaults(self):
         GObject.Property(type=bool, default=True)
         GObject.Property(type=bool, default=False)
 
-    def test_name_with_underscore(self):
+    def testNameWithUnderscore(self):
         class C(GObject.GObject):
             prop_name = GObject.Property(type=int)
         o = C()
         o.prop_name = 10
         self.assertEqual(o.prop_name, 10)
 
-    def test_range(self):
-        types_ = [
-            (TYPE_INT, MININT, MAXINT),
-            (TYPE_UINT, 0, MAXUINT),
-            (TYPE_LONG, MINLONG, MAXLONG),
-            (TYPE_ULONG, 0, MAXULONG),
-            (TYPE_INT64, MININT64, MAXINT64),
-            (TYPE_UINT64, 0, MAXUINT64),
+    def testRange(self):
+        maxint64 = 2 ** 62 - 1
+        minint64 = -2 ** 62 - 1
+        maxuint64 = 2 ** 63 - 1
+
+        types = [
+            (TYPE_INT, G_MININT, G_MAXINT),
+            (TYPE_UINT, 0, G_MAXUINT),
+            (TYPE_LONG, G_MINLONG, G_MAXLONG),
+            (TYPE_ULONG, 0, G_MAXULONG),
+            (TYPE_INT64, minint64, maxint64),
+            (TYPE_UINT64, 0, maxuint64),
             ]
 
-        for gtype, min, max in types_:
+        for gtype, min, max in types:
             # Normal, everything is alright
             prop = GObject.Property(type=gtype, minimum=min, maximum=max)
-            subtype = type('', (GObject.GObject,), dict(prop=prop))
+            subtype = type('', (GObject.GObject,),
+                         dict(prop=prop))
             self.assertEqual(subtype.props.prop.minimum, min)
             self.assertEqual(subtype.props.prop.maximum, max)
 
@@ -673,7 +468,7 @@ class TestProperty(unittest.TestCase):
                               GObject.Property, type=gtype, minimum=min,
                               maximum=max + 1)
 
-    def test_min_max(self):
+    def testMinMax(self):
         class C(GObject.GObject):
             prop_int = GObject.Property(type=int, minimum=1, maximum=100, default=1)
             prop_float = GObject.Property(type=float, minimum=0.1, maximum=10.5, default=1.1)
@@ -683,7 +478,8 @@ class TestProperty(unittest.TestCase):
 
         # we test known-bad values here which cause Gtk-WARNING logs.
         # Explicitly allow these for this test.
-        with capture_glib_warnings(allow_warnings=True):
+        old_mask = GLib.log_set_always_fatal(GLib.LogLevelFlags.LEVEL_CRITICAL)
+        try:
             o = C()
             self.assertEqual(o.prop_int, 1)
 
@@ -706,8 +502,10 @@ class TestProperty(unittest.TestCase):
 
             o.prop_float = 10.51
             self.assertEqual(o.prop_float, 7.75)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
 
-    def test_multiple_instances(self):
+    def testMultipleInstances(self):
         class C(GObject.GObject):
             prop = GObject.Property(type=str, default='default')
 
@@ -719,7 +517,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o1.prop, 'value')
         self.assertEqual(o2.prop, 'default')
 
-    def test_object_property(self):
+    def testObjectProperty(self):
         class PropertyObject(GObject.GObject):
             obj = GObject.Property(type=GObject.GObject)
 
@@ -732,7 +530,7 @@ class TestProperty(unittest.TestCase):
         pobj1 = pobj2.obj
         self.assertEqual(hash(pobj1), obj1_hash)
 
-    def test_object_subclass_property(self):
+    def testObjectSubclassProperty(self):
         class ObjectSubclass(GObject.GObject):
             __gtype_name__ = 'ObjectSubclass'
 
@@ -741,7 +539,7 @@ class TestProperty(unittest.TestCase):
 
         PropertyObjectSubclass(obj=ObjectSubclass())
 
-    def test_property_subclass(self):
+    def testPropertySubclass(self):
         # test for #470718
         class A(GObject.GObject):
             prop1 = GObject.Property(type=int)
@@ -755,26 +553,7 @@ class TestProperty(unittest.TestCase):
         b.prop1 = 20
         self.assertEqual(b.prop1, 20)
 
-    def test_property_subclass_c(self):
-        class A(Regress.TestSubObj):
-            prop1 = GObject.Property(type=int)
-
-        a = A()
-        a.prop1 = 10
-        self.assertEqual(a.prop1, 10)
-
-        # also has parent properties
-        a.props.int = 20
-        self.assertEqual(a.props.int, 20)
-
-        # Some of which are unusable without introspection
-        a.props.list = ("str1", "str2")
-        self.assertEqual(a.props.list, ["str1", "str2"])
-
-        a.set_property("list", ("str3", "str4"))
-        self.assertEqual(a.props.list, ["str3", "str4"])
-
-    def test_property_subclass_custom_setter(self):
+    def testPropertySubclassCustomSetter(self):
         # test for #523352
         class A(GObject.GObject):
             def get_first(self):
@@ -796,7 +575,7 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(b.second, 'second')
         self.assertRaises(TypeError, setattr, b, 'second', 'foo')
 
-    def test_property_subclass_custom_setter_error(self):
+    def testPropertySubclassCustomSetterError(self):
         try:
             class A(GObject.GObject):
                 def get_first(self):
@@ -819,7 +598,7 @@ class TestProperty(unittest.TestCase):
 
     # Bug 644039
 
-    def test_reference_count(self):
+    def testReferenceCount(self):
         # We can check directly if an object gets finalized, so we will
         # observe it indirectly through the refcount of a member object.
 
@@ -840,483 +619,14 @@ class TestProperty(unittest.TestCase):
         del t
         self.assertEqual(sys.getrefcount(o), rc)
 
-    def test_doc_strings(self):
+    def testDocStringAsBlurb(self):
         class C(GObject.GObject):
-            foo_blurbed = GObject.Property(type=int, blurb='foo_blurbed doc string')
-
             @GObject.Property
-            def foo_getter(self):
-                """foo_getter doc string"""
+            def blurbed(self):
+                """blurbed doc string"""
                 return 0
 
-        self.assertEqual(C.foo_blurbed.blurb, 'foo_blurbed doc string')
-        self.assertEqual(C.foo_blurbed.__doc__, 'foo_blurbed doc string')
-
-        self.assertEqual(C.foo_getter.blurb, 'foo_getter doc string')
-        self.assertEqual(C.foo_getter.__doc__, 'foo_getter doc string')
-
-    def test_python_to_glib_type_mapping(self):
-        tester = GObject.Property()
-        self.assertEqual(tester._type_from_python(int), GObject.TYPE_INT)
-        if sys.version_info < (3, 0):
-            self.assertEqual(tester._type_from_python(long), GObject.TYPE_LONG)
-        self.assertEqual(tester._type_from_python(bool), GObject.TYPE_BOOLEAN)
-        self.assertEqual(tester._type_from_python(float), GObject.TYPE_DOUBLE)
-        self.assertEqual(tester._type_from_python(str), GObject.TYPE_STRING)
-        self.assertEqual(tester._type_from_python(object), GObject.TYPE_PYOBJECT)
-
-        self.assertEqual(tester._type_from_python(GObject.GObject), GObject.GObject.__gtype__)
-        self.assertEqual(tester._type_from_python(GObject.GEnum), GObject.GEnum.__gtype__)
-        self.assertEqual(tester._type_from_python(GObject.GFlags), GObject.GFlags.__gtype__)
-        self.assertEqual(tester._type_from_python(GObject.GBoxed), GObject.GBoxed.__gtype__)
-        self.assertEqual(tester._type_from_python(GObject.GInterface), GObject.GInterface.__gtype__)
-
-        for type_ in [TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
-                      TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
-                      TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
-                      TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
-                      TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
-                      TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV]:
-            self.assertEqual(tester._type_from_python(type_), type_)
-
-        self.assertRaises(TypeError, tester._type_from_python, types.CodeType)
-
-
-class TestInstallProperties(unittest.TestCase):
-    # These tests only test how signalhelper.install_signals works
-    # with the __gsignals__ dict and therefore does not need to use
-    # GObject as a base class because that would automatically call
-    # install_signals within the meta-class.
-    class Base(object):
-        __gproperties__ = {'test': (0, '', '', 0, 0, 0, 0)}
-
-    class Sub1(Base):
-        pass
-
-    class Sub2(Base):
-        @GObject.Property(type=int)
-        def sub2test(self):
-            return 123
-
-    class ClassWithPropertyAndGetterVFunc(object):
-        @GObject.Property(type=int)
-        def sub2test(self):
-            return 123
-
-        def do_get_property(self, name):
-            return 321
-
-    class ClassWithPropertyRedefined(object):
-        __gproperties__ = {'test': (0, '', '', 0, 0, 0, 0)}
-        test = GObject.Property(type=int)
-
-    def setUp(self):
-        self.assertEqual(len(self.Base.__gproperties__), 1)
-        propertyhelper.install_properties(self.Base)
-        self.assertEqual(len(self.Base.__gproperties__), 1)
-
-    def test_subclass_without_properties_is_not_modified(self):
-        self.assertFalse('__gproperties__' in self.Sub1.__dict__)
-        propertyhelper.install_properties(self.Sub1)
-        self.assertFalse('__gproperties__' in self.Sub1.__dict__)
-
-    def test_subclass_with_decorator_gets_gproperties_dict(self):
-        # Sub2 has Property instances but will not have a __gproperties__
-        # until install_properties is called
-        self.assertFalse('__gproperties__' in self.Sub2.__dict__)
-        self.assertFalse('do_get_property' in self.Sub2.__dict__)
-        self.assertFalse('do_set_property' in self.Sub2.__dict__)
-
-        propertyhelper.install_properties(self.Sub2)
-        self.assertTrue('__gproperties__' in self.Sub2.__dict__)
-        self.assertEqual(len(self.Base.__gproperties__), 1)
-        self.assertEqual(len(self.Sub2.__gproperties__), 1)
-        self.assertTrue('sub2test' in self.Sub2.__gproperties__)
-
-        # get/set vfuncs should have been added
-        self.assertTrue('do_get_property' in self.Sub2.__dict__)
-        self.assertTrue('do_set_property' in self.Sub2.__dict__)
-
-    def test_object_with_property_and_do_get_property_vfunc_raises(self):
-        self.assertRaises(TypeError, propertyhelper.install_properties,
-                          self.ClassWithPropertyAndGetterVFunc)
-
-    def test_same_name_property_definitions_raises(self):
-        self.assertRaises(ValueError, propertyhelper.install_properties,
-                          self.ClassWithPropertyRedefined)
-
-
-class CPropertiesTestBase(object):
-    # Tests for properties implemented in C not Python.
-
-    def setUp(self):
-        self.obj = GIMarshallingTests.PropertiesObject()
-
-    def get_prop(self, obj, name):
-        raise NotImplementedError
-
-    def set_prop(self, obj, name, value):
-        raise NotImplementedError
-
-    # https://bugzilla.gnome.org/show_bug.cgi?id=780652
-    @unittest.skipUnless(
-        "some_flags" in dir(GIMarshallingTests.PropertiesObject.props),
-        "tool old gi")
-    def test_flags(self):
-        self.assertEqual(
-            self.get_prop(self.obj, 'some-flags'),
-            GIMarshallingTests.Flags.VALUE1)
-        self.set_prop(self.obj, 'some-flags', GIMarshallingTests.Flags.VALUE2)
-        self.assertEqual(self.get_prop(self.obj, 'some-flags'),
-                         GIMarshallingTests.Flags.VALUE2)
-
-        obj = GIMarshallingTests.PropertiesObject(
-            some_flags=GIMarshallingTests.Flags.VALUE3)
-        self.assertEqual(self.get_prop(obj, 'some-flags'),
-                         GIMarshallingTests.Flags.VALUE3)
-
-    # https://bugzilla.gnome.org/show_bug.cgi?id=780652
-    @unittest.skipUnless(
-        "some_enum" in dir(GIMarshallingTests.PropertiesObject.props),
-        "tool old gi")
-    def test_enum(self):
-        self.assertEqual(
-            self.get_prop(self.obj, 'some-enum'),
-            GIMarshallingTests.GEnum.VALUE1)
-        self.set_prop(self.obj, 'some-enum', GIMarshallingTests.GEnum.VALUE2)
-        self.assertEqual(self.get_prop(self.obj, 'some-enum'),
-                         GIMarshallingTests.GEnum.VALUE2)
-
-        obj = GIMarshallingTests.PropertiesObject(
-            some_enum=GIMarshallingTests.GEnum.VALUE3)
-        self.assertEqual(self.get_prop(obj, 'some-enum'),
-                         GIMarshallingTests.GEnum.VALUE3)
-
-    def test_boolean(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-boolean'), False)
-        self.set_prop(self.obj, 'some-boolean', True)
-        self.assertEqual(self.get_prop(self.obj, 'some-boolean'), True)
-
-        obj = GIMarshallingTests.PropertiesObject(some_boolean=True)
-        self.assertEqual(self.get_prop(obj, 'some-boolean'), True)
-
-    def test_char(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-char'), 0)
-        self.set_prop(self.obj, 'some-char', GLib.MAXINT8)
-        self.assertEqual(self.get_prop(self.obj, 'some-char'), GLib.MAXINT8)
-
-        obj = GIMarshallingTests.PropertiesObject(some_char=-42)
-        self.assertEqual(self.get_prop(obj, 'some-char'), -42)
-
-    def test_uchar(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-uchar'), 0)
-        self.set_prop(self.obj, 'some-uchar', GLib.MAXUINT8)
-        self.assertEqual(self.get_prop(self.obj, 'some-uchar'), GLib.MAXUINT8)
-
-        obj = GIMarshallingTests.PropertiesObject(some_uchar=42)
-        self.assertEqual(self.get_prop(obj, 'some-uchar'), 42)
-
-    def test_int(self):
-        self.assertEqual(self.get_prop(self.obj, 'some_int'), 0)
-        self.set_prop(self.obj, 'some-int', GLib.MAXINT)
-        self.assertEqual(self.get_prop(self.obj, 'some_int'), GLib.MAXINT)
-
-        obj = GIMarshallingTests.PropertiesObject(some_int=-42)
-        self.assertEqual(self.get_prop(obj, 'some-int'), -42)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-int', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-int', None)
-
-        self.assertEqual(self.get_prop(obj, 'some-int'), -42)
-
-    def test_uint(self):
-        self.assertEqual(self.get_prop(self.obj, 'some_uint'), 0)
-        self.set_prop(self.obj, 'some-uint', GLib.MAXUINT)
-        self.assertEqual(self.get_prop(self.obj, 'some_uint'), GLib.MAXUINT)
-
-        obj = GIMarshallingTests.PropertiesObject(some_uint=42)
-        self.assertEqual(self.get_prop(obj, 'some-uint'), 42)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-uint', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-uint', None)
-
-        self.assertEqual(self.get_prop(obj, 'some-uint'), 42)
-
-    def test_long(self):
-        self.assertEqual(self.get_prop(self.obj, 'some_long'), 0)
-        self.set_prop(self.obj, 'some-long', GLib.MAXLONG)
-        self.assertEqual(self.get_prop(self.obj, 'some_long'), GLib.MAXLONG)
-
-        obj = GIMarshallingTests.PropertiesObject(some_long=-42)
-        self.assertEqual(self.get_prop(obj, 'some-long'), -42)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-long', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-long', None)
-
-        self.assertEqual(self.get_prop(obj, 'some-long'), -42)
-
-    def test_ulong(self):
-        self.assertEqual(self.get_prop(self.obj, 'some_ulong'), 0)
-        self.set_prop(self.obj, 'some-ulong', GLib.MAXULONG)
-        self.assertEqual(self.get_prop(self.obj, 'some_ulong'), GLib.MAXULONG)
-
-        obj = GIMarshallingTests.PropertiesObject(some_ulong=42)
-        self.assertEqual(self.get_prop(obj, 'some-ulong'), 42)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-ulong', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-ulong', None)
-
-        self.assertEqual(self.get_prop(obj, 'some-ulong'), 42)
-
-    def test_int64(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-int64'), 0)
-        self.set_prop(self.obj, 'some-int64', GLib.MAXINT64)
-        self.assertEqual(self.get_prop(self.obj, 'some-int64'), GLib.MAXINT64)
-
-        obj = GIMarshallingTests.PropertiesObject(some_int64=-4200000000000000)
-        self.assertEqual(self.get_prop(obj, 'some-int64'), -4200000000000000)
-
-    def test_uint64(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-uint64'), 0)
-        self.set_prop(self.obj, 'some-uint64', GLib.MAXUINT64)
-        self.assertEqual(self.get_prop(self.obj, 'some-uint64'), GLib.MAXUINT64)
-
-        obj = GIMarshallingTests.PropertiesObject(some_uint64=4200000000000000)
-        self.assertEqual(self.get_prop(obj, 'some-uint64'), 4200000000000000)
-
-    def test_float(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-float'), 0)
-        self.set_prop(self.obj, 'some-float', GLib.MAXFLOAT)
-        self.assertEqual(self.get_prop(self.obj, 'some-float'), GLib.MAXFLOAT)
-
-        obj = GIMarshallingTests.PropertiesObject(some_float=42.42)
-        self.assertAlmostEqual(self.get_prop(obj, 'some-float'), 42.42, places=4)
-
-        obj = GIMarshallingTests.PropertiesObject(some_float=42)
-        self.assertAlmostEqual(self.get_prop(obj, 'some-float'), 42.0, places=4)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-float', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-float', None)
-
-        self.assertAlmostEqual(self.get_prop(obj, 'some-float'), 42.0, places=4)
-
-    def test_double(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-double'), 0)
-        self.set_prop(self.obj, 'some-double', GLib.MAXDOUBLE)
-        self.assertEqual(self.get_prop(self.obj, 'some-double'), GLib.MAXDOUBLE)
-
-        obj = GIMarshallingTests.PropertiesObject(some_double=42.42)
-        self.assertAlmostEqual(self.get_prop(obj, 'some-double'), 42.42)
-
-        obj = GIMarshallingTests.PropertiesObject(some_double=42)
-        self.assertAlmostEqual(self.get_prop(obj, 'some-double'), 42.0)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-double', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-double', None)
-
-        self.assertAlmostEqual(self.get_prop(obj, 'some-double'), 42.0)
-
-    def test_strv(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-strv'), [])
-        self.set_prop(self.obj, 'some-strv', ['hello', 'world'])
-        self.assertEqual(self.get_prop(self.obj, 'some-strv'), ['hello', 'world'])
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-strv', 1)
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-strv', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-strv', [1, 2])
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-strv', ['foo', 1])
-
-        self.assertEqual(self.get_prop(self.obj, 'some-strv'), ['hello', 'world'])
-
-        obj = GIMarshallingTests.PropertiesObject(some_strv=['hello', 'world'])
-        self.assertEqual(self.get_prop(obj, 'some-strv'), ['hello', 'world'])
-
-        # unicode on py2
-        obj = GIMarshallingTests.PropertiesObject(some_strv=[u'foo'])
-        self.assertEqual(self.get_prop(obj, 'some-strv'), [u'foo'])
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-strv',
-                          [u'foo', 1])
-
-    def test_boxed_struct(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-boxed-struct'), None)
-
-        class GStrv(list):
-            __gtype__ = GObject.TYPE_STRV
-
-        struct1 = GIMarshallingTests.BoxedStruct()
-        struct1.long_ = 1
-
-        self.set_prop(self.obj, 'some-boxed-struct', struct1)
-        self.assertEqual(self.get_prop(self.obj, 'some-boxed-struct').long_, 1)
-        self.assertEqual(self.obj.some_boxed_struct.long_, 1)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-boxed-struct', 1)
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-boxed-struct', 'foo')
-
-        obj = GIMarshallingTests.PropertiesObject(some_boxed_struct=struct1)
-        self.assertEqual(self.get_prop(obj, 'some-boxed-struct').long_, 1)
-
-    def test_boxed_glist(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-boxed-glist'), [])
-
-        list_ = [GLib.MININT, 42, GLib.MAXINT]
-        self.set_prop(self.obj, 'some-boxed-glist', list_)
-        self.assertEqual(self.get_prop(self.obj, 'some-boxed-glist'), list_)
-        self.set_prop(self.obj, 'some-boxed-glist', [])
-        self.assertEqual(self.get_prop(self.obj, 'some-boxed-glist'), [])
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-boxed-glist', 1)
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-boxed-glist', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-boxed-glist', ['a'])
-
-    def test_annotated_glist(self):
-        obj = Regress.TestObj()
-        self.assertEqual(self.get_prop(obj, 'list'), [])
-
-        self.set_prop(obj, 'list', ['1', '2', '3'])
-        self.assertTrue(isinstance(self.get_prop(obj, 'list'), list))
-        self.assertEqual(self.get_prop(obj, 'list'), ['1', '2', '3'])
-
-    @unittest.expectedFailure
-    def test_boxed_glist_ctor(self):
-        list_ = [GLib.MININT, 42, GLib.MAXINT]
-        obj = GIMarshallingTests.PropertiesObject(some_boxed_glist=list_)
-        self.assertEqual(self.get_prop(obj, 'some-boxed-glist'), list_)
-
-    def test_variant(self):
-        self.assertEqual(self.get_prop(self.obj, 'some-variant'), None)
-
-        self.set_prop(self.obj, 'some-variant', GLib.Variant('o', '/myobj'))
-        self.assertEqual(self.get_prop(self.obj, 'some-variant').get_type_string(), 'o')
-        self.assertEqual(self.get_prop(self.obj, 'some-variant').print_(False), "'/myobj'")
-
-        self.set_prop(self.obj, 'some-variant', None)
-        self.assertEqual(self.get_prop(self.obj, 'some-variant'), None)
-
-        obj = GIMarshallingTests.PropertiesObject(some_variant=GLib.Variant('b', True))
-        self.assertEqual(self.get_prop(obj, 'some-variant').get_type_string(), 'b')
-        self.assertEqual(self.get_prop(obj, 'some-variant').get_boolean(), True)
-
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-variant', 'foo')
-        self.assertRaises(TypeError, self.set_prop, self.obj, 'some-variant', 23)
-
-        self.assertEqual(self.get_prop(obj, 'some-variant').get_type_string(), 'b')
-        self.assertEqual(self.get_prop(obj, 'some-variant').get_boolean(), True)
-
-    def test_setting_several_properties(self):
-        obj = GIMarshallingTests.PropertiesObject()
-        obj.set_properties(some_uchar=54, some_int=42)
-        self.assertEqual(42, self.get_prop(obj, 'some-int'))
-        self.assertEqual(54, self.get_prop(obj, 'some-uchar'))
-
-    def test_gtype(self):
-        obj = Regress.TestObj()
-        self.assertEqual(self.get_prop(obj, 'gtype'), GObject.TYPE_INVALID)
-        self.set_prop(obj, 'gtype', int)
-        self.assertEqual(self.get_prop(obj, 'gtype'), GObject.TYPE_INT)
-
-        obj = Regress.TestObj(gtype=int)
-        self.assertEqual(self.get_prop(obj, 'gtype'), GObject.TYPE_INT)
-        self.set_prop(obj, 'gtype', str)
-        self.assertEqual(self.get_prop(obj, 'gtype'), GObject.TYPE_STRING)
-
-    def test_hash_table(self):
-        obj = Regress.TestObj()
-        self.assertEqual(self.get_prop(obj, 'hash-table'), None)
-
-        self.set_prop(obj, 'hash-table', {'mec': 56})
-        self.assertTrue(isinstance(self.get_prop(obj, 'hash-table'), dict))
-        self.assertEqual(list(self.get_prop(obj, 'hash-table').items())[0],
-                         ('mec', 56))
-
-    def test_parent_class(self):
-        class A(Regress.TestObj):
-            prop1 = GObject.Property(type=int)
-
-        a = A()
-        self.set_prop(a, 'int', 20)
-        self.assertEqual(self.get_prop(a, 'int'), 20)
-
-        # test parent property which needs introspection
-        self.set_prop(a, 'list', ("str1", "str2"))
-        self.assertEqual(self.get_prop(a, 'list'), ["str1", "str2"])
-
-    def test_held_object_ref_count_getter(self):
-        holder = GIMarshallingTests.PropertiesObject()
-        held = GObject.Object()
-
-        self.assertEqual(holder.__grefcount__, 1)
-        self.assertEqual(held.__grefcount__, 1)
-
-        self.set_prop(holder, 'some-object', held)
-        self.assertEqual(holder.__grefcount__, 1)
-
-        initial_ref_count = held.__grefcount__
-        self.get_prop(holder, 'some-object')
-        gc.collect()
-        self.assertEqual(held.__grefcount__, initial_ref_count)
-
-    def test_held_object_ref_count_setter(self):
-        holder = GIMarshallingTests.PropertiesObject()
-        held = GObject.Object()
-
-        self.assertEqual(holder.__grefcount__, 1)
-        self.assertEqual(held.__grefcount__, 1)
-
-        # Setting property should only increase ref count by 1
-        self.set_prop(holder, 'some-object', held)
-        self.assertEqual(holder.__grefcount__, 1)
-        self.assertEqual(held.__grefcount__, 2)
-
-        # Clearing should pull it back down
-        self.set_prop(holder, 'some-object', None)
-        self.assertEqual(held.__grefcount__, 1)
-
-    def test_set_object_property_to_invalid_type(self):
-        obj = GIMarshallingTests.PropertiesObject()
-        self.assertRaises(TypeError, self.set_prop, obj, 'some-object', 'not_an_object')
-
-
-class TestCPropsAccessor(CPropertiesTestBase, unittest.TestCase):
-    # C property tests using the "props" accessor.
-    def get_prop(self, obj, name):
-        return getattr(obj.props, name.replace('-', '_'))
-
-    def set_prop(self, obj, name, value):
-        setattr(obj.props, name.replace('-', '_'), value)
-
-    def test_props_accessor_dir(self):
-        # Test class
-        props = dir(GIMarshallingTests.PropertiesObject.props)
-        self.assertTrue('some_float' in props)
-        self.assertTrue('some_double' in props)
-        self.assertTrue('some_variant' in props)
-
-        # Test instance
-        obj = GIMarshallingTests.PropertiesObject()
-        props = dir(obj.props)
-        self.assertTrue('some_float' in props)
-        self.assertTrue('some_double' in props)
-        self.assertTrue('some_variant' in props)
-
-    def test_param_spec_dir(self):
-        attrs = dir(GIMarshallingTests.PropertiesObject.props.some_float)
-        self.assertTrue('name' in attrs)
-        self.assertTrue('nick' in attrs)
-        self.assertTrue('blurb' in attrs)
-        self.assertTrue('flags' in attrs)
-        self.assertTrue('default_value' in attrs)
-        self.assertTrue('minimum' in attrs)
-        self.assertTrue('maximum' in attrs)
-
-
-class TestCGetPropertyMethod(CPropertiesTestBase, unittest.TestCase):
-    # C property tests using the "props" accessor.
-    def get_prop(self, obj, name):
-        return obj.get_property(name)
-
-    def set_prop(self, obj, name, value):
-        obj.set_property(name, value)
+        self.assertEqual(C.blurbed.blurb, 'blurbed doc string')
 
 
 if __name__ == '__main__':
diff --git a/tests/test_pygtkcompat.py b/tests/test_pygtkcompat.py
new file mode 100644 (file)
index 0000000..21ad863
--- /dev/null
@@ -0,0 +1,123 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+
+import unittest
+
+import sys
+sys.path.insert(0, "../")
+
+from gi.repository import Gdk
+from gi.repository import Gtk
+
+import gi.pygtkcompat
+
+gi.pygtkcompat.enable()
+gi.pygtkcompat.enable_gtk(version='3.0')
+
+import atk
+import pango
+import pangocairo
+import gtk
+import gtk.gdk
+
+
+class TestATKCompat(unittest.TestCase):
+    def testObject(self):
+        self.assertTrue(hasattr(atk, 'Object'))
+
+
+class TestPangoCompat(unittest.TestCase):
+    def testLayout(self):
+        self.assertTrue(hasattr(pango, 'Layout'))
+
+
+class TestPangoCairoCompat(unittest.TestCase):
+    def testErrorUnderlinePath(self):
+        self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
+
+
+class TestGTKCompat(unittest.TestCase):
+    def testButtons(self):
+        self.assertEqual(Gdk._2BUTTON_PRESS, 5)
+        self.assertEqual(Gdk.BUTTON_PRESS, 4)
+
+    def testEnums(self):
+        self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
+        self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
+
+    def testFlags(self):
+        self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
+
+    def testKeysyms(self):
+        import gtk.keysyms
+        self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
+        self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
+
+    def testStyle(self):
+        widget = gtk.Button()
+        self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
+                                   gtk.gdk.Color))
+
+    def testAlignment(self):
+        a = gtk.Alignment()
+        self.assertEqual(a.props.xalign, 0.0)
+        self.assertEqual(a.props.yalign, 0.0)
+        self.assertEqual(a.props.xscale, 0.0)
+        self.assertEqual(a.props.yscale, 0.0)
+
+    def testBox(self):
+        box = gtk.Box()
+        child = gtk.Button()
+
+        box.pack_start(child)
+        expand, fill, padding, pack_type = box.query_child_packing(child)
+        self.assertTrue(expand)
+        self.assertTrue(fill)
+        self.assertEqual(padding, 0)
+        self.assertEqual(pack_type, gtk.PACK_START)
+
+        child = gtk.Button()
+        box.pack_end(child)
+        expand, fill, padding, pack_type = box.query_child_packing(child)
+        self.assertTrue(expand)
+        self.assertTrue(fill)
+        self.assertEqual(padding, 0)
+        self.assertEqual(pack_type, gtk.PACK_END)
+
+    def testComboBoxEntry(self):
+        liststore = gtk.ListStore(int, str)
+        liststore.append((1, 'One'))
+        liststore.append((2, 'Two'))
+        liststore.append((3, 'Three'))
+        combo = gtk.ComboBoxEntry(model=liststore)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+        combo = gtk.combo_box_entry_new()
+        combo.set_model(liststore)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+        combo = gtk.combo_box_entry_new_with_model(liststore)
+        combo.set_text_column(1)
+        combo.set_active(0)
+        self.assertEqual(combo.get_text_column(), 1)
+        self.assertEqual(combo.get_child().get_text(), 'One')
+
+    def testSizeRequest(self):
+        box = gtk.Box()
+        self.assertEqual(box.size_request(), [0, 0])
+
+    def testPixbuf(self):
+        gtk.gdk.Pixbuf()
+
+    def testPixbufLoader(self):
+        loader = gtk.gdk.PixbufLoader('png')
+        loader.close()
+
+    def testGdkWindow(self):
+        w = gtk.Window()
+        w.realize()
+        self.assertEqual(w.get_window().get_origin(), (0, 0))
diff --git a/tests/test_repository.py b/tests/test_repository.py
deleted file mode 100644 (file)
index d7b6d2e..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
-#
-#   test_repository.py: Test for the GIRepository module
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-import unittest
-import collections
-
-import gi._gi as GIRepository
-from gi.module import repository as repo
-from gi.repository import GObject
-from gi.repository import GIMarshallingTests
-from gi.repository import GIRepository as IntrospectedRepository
-
-from helper import capture_glib_warnings
-
-
-def find_child_info(info, getter_name, name):
-    getter = getattr(info, getter_name)
-    for child in getter():
-        if child.get_name() == name:
-            return child
-    else:
-        raise ValueError('child info %s not found' % name)
-
-
-class Test(unittest.TestCase):
-    def setUp(self):
-        repo.require('GLib')
-        repo.require('GObject')
-        repo.require('GIMarshallingTests')
-
-    def test_repo_get_dependencies(self):
-        self.assertRaises(TypeError, repo.get_dependencies)
-        self.assertEqual(repo.get_dependencies("GLib"), [])
-        self.assertEqual(repo.get_dependencies("GObject"), ["GLib-2.0"])
-
-    def test_repo_is_registered(self):
-        self.assertRaises(TypeError, repo.is_registered)
-        self.assertRaises(TypeError, repo.is_registered, None)
-        self.assertTrue(repo.is_registered("GIRepository"))
-        self.assertTrue(repo.is_registered("GIRepository", None))
-        self.assertTrue(isinstance(repo.is_registered("GIRepository"), bool))
-        self.assertTrue(repo.is_registered("GIRepository", "2.0"))
-        self.assertFalse(repo.is_registered("GIRepository", ""))
-        self.assertFalse(repo.is_registered("GIRepository", "99.0"))
-        self.assertFalse(repo.is_registered("GIRepository", "1.0"))
-
-    def test_repo_get_immediate_dependencies(self):
-        self.assertRaises(TypeError, repo.get_immediate_dependencies)
-        self.assertEqual(repo.get_immediate_dependencies("GLib"), [])
-        self.assertEqual(
-            repo.get_immediate_dependencies("GObject"), ["GLib-2.0"])
-        self.assertEqual(
-            repo.get_immediate_dependencies(namespace="GObject"), ["GLib-2.0"])
-        self.assertEqual(
-            repo.get_immediate_dependencies("GIMarshallingTests"), ["Gio-2.0"])
-
-    def test_arg_info(self):
-        func_info = repo.find_by_name('GIMarshallingTests', 'array_fixed_out_struct')
-        args = func_info.get_arguments()
-        self.assertTrue(len(args), 1)
-
-        arg = args[0]
-        self.assertEqual(arg.get_container(), func_info)
-        self.assertEqual(arg.get_direction(), GIRepository.Direction.OUT)
-        self.assertEqual(arg.get_name(), 'structs')
-        self.assertEqual(arg.get_namespace(), 'GIMarshallingTests')
-        self.assertFalse(arg.is_caller_allocates())
-        self.assertFalse(arg.is_optional())
-        self.assertFalse(arg.is_return_value())
-        self.assertFalse(arg.may_be_null())
-        self.assertEqual(arg.get_destroy(), -1)
-        self.assertEqual(arg.get_ownership_transfer(), GIRepository.Transfer.NOTHING)
-        self.assertEqual(arg.get_scope(), GIRepository.ScopeType.INVALID)
-        self.assertEqual(arg.get_type().get_tag(), GIRepository.TypeTag.ARRAY)
-
-    def test_base_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        self.assertEqual(info.__name__, 'Object')
-        self.assertEqual(info.get_name(), 'Object')
-        self.assertEqual(info.__module__, 'gi.repository.GIMarshallingTests')
-        self.assertEqual(info.get_name_unescaped(), 'Object')
-        self.assertEqual(info.get_namespace(), 'GIMarshallingTests')
-        self.assertEqual(info.get_container(), None)
-        info2 = repo.find_by_name('GIMarshallingTests', 'Object')
-        self.assertFalse(info is info2)
-        self.assertEqual(info, info2)
-        self.assertTrue(info.equal(info2))
-
-    def test_object_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        self.assertEqual(info.get_parent(), repo.find_by_name('GObject', 'Object'))
-        self.assertTrue(isinstance(info.get_methods(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_fields(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_interfaces(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_constants(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_vfuncs(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_properties(), collections.Iterable))
-        self.assertFalse(info.get_abstract())
-        self.assertEqual(info.get_class_struct(), repo.find_by_name('GIMarshallingTests', 'ObjectClass'))
-        self.assertEqual(info.get_type_name(), 'GIMarshallingTestsObject')
-        self.assertEqual(info.get_type_init(), 'gi_marshalling_tests_object_get_type')
-        self.assertFalse(info.get_fundamental())
-        self.assertEqual(info.get_parent(), repo.find_by_name('GObject', 'Object'))
-
-    def test_callable_inheritance(self):
-        self.assertTrue(issubclass(GIRepository.CallableInfo, GIRepository.BaseInfo))
-        self.assertTrue(issubclass(GIRepository.CallbackInfo, GIRepository.CallableInfo))
-        self.assertTrue(issubclass(GIRepository.FunctionInfo, GIRepository.CallableInfo))
-        self.assertTrue(issubclass(GIRepository.VFuncInfo, GIRepository.CallableInfo))
-        self.assertTrue(issubclass(GIRepository.SignalInfo, GIRepository.CallableInfo))
-
-    def test_registered_type_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        # Call these from the class because GIObjectInfo overrides them
-        self.assertEqual(GIRepository.RegisteredTypeInfo.get_g_type(info),
-                         GObject.type_from_name('GIMarshallingTestsObject'))
-        self.assertEqual(GIRepository.RegisteredTypeInfo.get_type_name(info),
-                         'GIMarshallingTestsObject')
-        self.assertEqual(GIRepository.RegisteredTypeInfo.get_type_init(info),
-                         'gi_marshalling_tests_object_get_type')
-
-    def test_fundamental_object_info(self):
-        repo.require('Regress')
-        info = repo.find_by_name('Regress', 'TestFundamentalObject')
-        self.assertTrue(info.get_abstract())
-        self.assertTrue(info.get_fundamental())
-        self.assertEqual(info.get_ref_function(), 'regress_test_fundamental_object_ref')
-        self.assertEqual(info.get_unref_function(), 'regress_test_fundamental_object_unref')
-        self.assertEqual(info.get_get_value_function(), 'regress_test_value_get_fundamental_object')
-        self.assertEqual(info.get_set_value_function(), 'regress_test_value_set_fundamental_object')
-
-    def test_interface_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Interface')
-        self.assertTrue(isinstance(info.get_methods(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_vfuncs(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_constants(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_prerequisites(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_properties(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_signals(), collections.Iterable))
-
-        method = info.find_method('test_int8_in')
-        vfunc = info.find_vfunc('test_int8_in')
-        self.assertEqual(method.get_name(), 'test_int8_in')
-        self.assertEqual(vfunc.get_invoker(), method)
-        self.assertEqual(method.get_vfunc(), vfunc)
-
-        iface = info.get_iface_struct()
-        self.assertEqual(iface, repo.find_by_name('GIMarshallingTests', 'InterfaceIface'))
-
-    def test_struct_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'InterfaceIface')
-        self.assertTrue(isinstance(info, GIRepository.StructInfo))
-        self.assertTrue(isinstance(info.get_fields(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_methods(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_size(), int))
-        self.assertTrue(isinstance(info.get_alignment(), int))
-        self.assertTrue(info.is_gtype_struct())
-        self.assertFalse(info.is_foreign())
-
-    def test_enum_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Enum')
-        self.assertTrue(isinstance(info, GIRepository.EnumInfo))
-        self.assertTrue(isinstance(info.get_values(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_methods(), collections.Iterable))
-        self.assertFalse(info.is_flags())
-        self.assertTrue(info.get_storage_type() > 0)  # might be platform dependent
-
-    def test_union_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Union')
-        self.assertTrue(isinstance(info, GIRepository.UnionInfo))
-        self.assertTrue(isinstance(info.get_fields(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_methods(), collections.Iterable))
-        self.assertTrue(isinstance(info.get_size(), int))
-
-    def test_type_info(self):
-        func_info = repo.find_by_name('GIMarshallingTests', 'array_fixed_out_struct')
-        arg_info, = func_info.get_arguments()
-        type_info = arg_info.get_type()
-
-        self.assertTrue(type_info.is_pointer())
-        self.assertEqual(type_info.get_tag(), GIRepository.TypeTag.ARRAY)
-        self.assertEqual(type_info.get_tag_as_string(), 'array')
-        self.assertEqual(type_info.get_param_type(0).get_tag(),
-                         GIRepository.TypeTag.INTERFACE)
-        self.assertEqual(type_info.get_param_type(0).get_interface(),
-                         repo.find_by_name('GIMarshallingTests', 'SimpleStruct'))
-        self.assertEqual(type_info.get_interface(), None)
-        self.assertEqual(type_info.get_array_length(), -1)
-        self.assertEqual(type_info.get_array_fixed_size(), 2)
-        self.assertFalse(type_info.is_zero_terminated())
-        self.assertEqual(type_info.get_array_type(), GIRepository.ArrayType.C)
-
-    def test_field_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'InterfaceIface')
-        field = find_child_info(info, 'get_fields', 'test_int8_in')
-        self.assertEqual(field.get_name(), 'test_int8_in')
-        self.assertTrue(field.get_flags() & GIRepository.FieldInfoFlags.IS_READABLE)
-        self.assertFalse(field.get_flags() & GIRepository.FieldInfoFlags.IS_WRITABLE)
-        self.assertEqual(field.get_type().get_tag(), GIRepository.TypeTag.INTERFACE)
-
-        # don't test actual values because that might fail with architecture differences
-        self.assertTrue(isinstance(field.get_size(), int))
-        self.assertTrue(isinstance(field.get_offset(), int))
-
-    def test_property_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'PropertiesObject')
-        prop = find_child_info(info, 'get_properties', 'some-object')
-
-        flags = GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE | GObject.ParamFlags.CONSTRUCT
-        self.assertEqual(prop.get_flags(), flags)
-        self.assertEqual(prop.get_type().get_tag(), GIRepository.TypeTag.INTERFACE)
-        self.assertEqual(prop.get_type().get_interface(),
-                         repo.find_by_name('GObject', 'Object'))
-        self.assertEqual(prop.get_ownership_transfer(), GIRepository.Transfer.NOTHING)
-
-    def test_callable_info(self):
-        func_info = repo.find_by_name('GIMarshallingTests', 'array_fixed_out_struct')
-        self.assertTrue(hasattr(func_info, 'invoke'))
-        self.assertTrue(isinstance(func_info.get_arguments(), collections.Iterable))
-        self.assertEqual(func_info.get_caller_owns(), GIRepository.Transfer.NOTHING)
-        self.assertFalse(func_info.may_return_null())
-        self.assertEqual(func_info.get_return_type().get_tag(), GIRepository.TypeTag.VOID)
-        self.assertRaises(AttributeError, func_info.get_return_attribute, '_not_an_attr')
-
-    def test_signal_info(self):
-        repo.require('Regress')
-        info = repo.find_by_name('Regress', 'TestObj')
-        sig_info = find_child_info(info, 'get_signals', 'test')
-
-        sig_flags = GObject.SignalFlags.RUN_LAST | \
-            GObject.SignalFlags.NO_RECURSE | GObject.SignalFlags.NO_HOOKS
-
-        self.assertTrue(sig_info is not None)
-        self.assertTrue(isinstance(sig_info, GIRepository.CallableInfo))
-        self.assertTrue(isinstance(sig_info, GIRepository.SignalInfo))
-        self.assertEqual(sig_info.get_name(), 'test')
-        self.assertEqual(sig_info.get_class_closure(), None)
-        self.assertFalse(sig_info.true_stops_emit())
-        self.assertEqual(sig_info.get_flags(), sig_flags)
-
-    def test_notify_signal_info_with_obj(self):
-        repo.require('Regress')
-        info = repo.find_by_name('Regress', 'TestObj')
-        sig_info = find_child_info(info, 'get_signals', 'sig-with-array-prop')
-
-        sig_flags = GObject.SignalFlags.RUN_LAST
-
-        self.assertTrue(sig_info is not None)
-        self.assertTrue(isinstance(sig_info, GIRepository.CallableInfo))
-        self.assertTrue(isinstance(sig_info, GIRepository.SignalInfo))
-        self.assertEqual(sig_info.get_name(), 'sig-with-array-prop')
-        self.assertEqual(sig_info.get_class_closure(), None)
-        self.assertFalse(sig_info.true_stops_emit())
-        self.assertEqual(sig_info.get_flags(), sig_flags)
-
-    def test_object_constructor(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        method = find_child_info(info, 'get_methods', 'new')
-
-        self.assertTrue(isinstance(method, GIRepository.CallableInfo))
-        self.assertTrue(isinstance(method, GIRepository.FunctionInfo))
-        self.assertTrue(method in info.get_methods())
-        self.assertEqual(method.get_name(), 'new')
-        self.assertFalse(method.is_method())
-        self.assertTrue(method.is_constructor())
-        self.assertEqual(method.get_symbol(), 'gi_marshalling_tests_object_new')
-
-        flags = method.get_flags()
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_METHOD)
-        self.assertTrue(flags & GIRepository.FunctionInfoFlags.IS_CONSTRUCTOR)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_GETTER)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_SETTER)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.WRAPS_VFUNC)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.THROWS)
-
-    def test_method_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        method = find_child_info(info, 'get_methods', 'vfunc_return_value_only')
-
-        self.assertTrue(isinstance(method, GIRepository.CallableInfo))
-        self.assertTrue(isinstance(method, GIRepository.FunctionInfo))
-        self.assertTrue(method in info.get_methods())
-        self.assertEqual(method.get_name(), 'vfunc_return_value_only')
-        self.assertFalse(method.is_constructor())
-        self.assertEqual(method.get_symbol(), 'gi_marshalling_tests_object_vfunc_return_value_only')
-        self.assertTrue(method.is_method())
-
-        flags = method.get_flags()
-        self.assertTrue(flags & GIRepository.FunctionInfoFlags.IS_METHOD)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_CONSTRUCTOR)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_GETTER)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.IS_SETTER)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.WRAPS_VFUNC)
-        self.assertFalse(flags & GIRepository.FunctionInfoFlags.THROWS)
-
-    def test_vfunc_info(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        invoker = find_child_info(info, 'get_methods', 'vfunc_return_value_only')
-        vfunc = find_child_info(info, 'get_vfuncs', 'vfunc_return_value_only')
-
-        self.assertTrue(isinstance(vfunc, GIRepository.CallableInfo))
-        self.assertTrue(isinstance(vfunc, GIRepository.VFuncInfo))
-        self.assertEqual(vfunc.get_name(), 'vfunc_return_value_only')
-        self.assertEqual(vfunc.get_invoker(), invoker)
-        self.assertEqual(invoker, info.find_method('vfunc_return_value_only'))
-        self.assertEqual(vfunc.get_flags(), 0)
-        self.assertEqual(vfunc.get_offset(), 0xFFFF)  # unknown offset
-        self.assertEqual(vfunc.get_signal(), None)
-
-    def test_callable_can_throw_gerror(self):
-        info = repo.find_by_name('GIMarshallingTests', 'Object')
-        invoker = find_child_info(info, 'get_methods', 'vfunc_meth_with_error')
-        vfunc = find_child_info(info, 'get_vfuncs', 'vfunc_meth_with_err')
-
-        self.assertTrue(invoker.can_throw_gerror())
-        self.assertTrue(vfunc.can_throw_gerror())
-
-        # Test that args do not include the GError**
-        self.assertEqual(len(invoker.get_arguments()), 1)
-        self.assertEqual(len(vfunc.get_arguments()), 1)
-
-        # Sanity check method that does not throw.
-        invoker_no_throws = find_child_info(info, 'get_methods', 'method_int8_in')
-        self.assertFalse(invoker_no_throws.can_throw_gerror())
-
-    def test_flags_double_registration_error(self):
-        # a warning is printed for double registration and pygobject will
-        # also raise a RuntimeError.
-        GIMarshallingTests.NoTypeFlags  # cause flags registration
-        info = repo.find_by_name('GIMarshallingTests', 'NoTypeFlags')
-        with capture_glib_warnings(allow_warnings=True):
-            self.assertRaises(RuntimeError,
-                              GIRepository.flags_register_new_gtype_and_add,
-                              info)
-
-    def test_enum_double_registration_error(self):
-        # a warning is printed for double registration and pygobject will
-        # also raise a RuntimeError.
-        GIMarshallingTests.Enum  # cause enum registration
-        info = repo.find_by_name('GIMarshallingTests', 'Enum')
-        with capture_glib_warnings(allow_warnings=True):
-            self.assertRaises(RuntimeError,
-                              GIRepository.enum_register_new_gtype_and_add,
-                              info)
-
-    def test_enums(self):
-        self.assertTrue(hasattr(GIRepository, 'Direction'))
-        self.assertTrue(hasattr(GIRepository, 'Transfer'))
-        self.assertTrue(hasattr(GIRepository, 'ArrayType'))
-        self.assertTrue(hasattr(GIRepository, 'ScopeType'))
-        self.assertTrue(hasattr(GIRepository, 'VFuncInfoFlags'))
-        self.assertTrue(hasattr(GIRepository, 'FieldInfoFlags'))
-        self.assertTrue(hasattr(GIRepository, 'FunctionInfoFlags'))
-        self.assertTrue(hasattr(GIRepository, 'TypeTag'))
-        self.assertTrue(hasattr(GIRepository, 'InfoType'))
-
-    def test_introspected_argument_info(self):
-        self.assertTrue(isinstance(IntrospectedRepository.Argument.__info__,
-                                   GIRepository.UnionInfo))
-
-        arg = IntrospectedRepository.Argument()
-        self.assertTrue(isinstance(arg.__info__, GIRepository.UnionInfo))
-
-        old_info = IntrospectedRepository.Argument.__info__
-        IntrospectedRepository.Argument.__info__ = 'not an info'
-        self.assertRaises(TypeError, IntrospectedRepository.Argument)
-        IntrospectedRepository.Argument.__info__ = old_info
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_resulttuple.py b/tests/test_resulttuple.py
deleted file mode 100644 (file)
index 20f80f3..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2015 Christoph Reiter <reiter.christoph@gmail.com>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-import unittest
-import pickle
-
-import gi
-from gi.repository import GIMarshallingTests
-from gi.repository import Regress
-
-
-ResultTuple = gi._gi.ResultTuple
-
-
-class TestResultTuple(unittest.TestCase):
-
-    def test_base(self):
-        self.assertTrue(issubclass(ResultTuple, tuple))
-
-    def test_create(self):
-        new = ResultTuple._new_type([None, "foo", None, "bar"])
-        self.assertTrue(issubclass(new, ResultTuple))
-
-    def test_repr_dir(self):
-        new = ResultTuple._new_type([None, "foo", None, "bar"])
-        inst = new([1, 2, 3, "a"])
-
-        self.assertEqual(repr(inst), "(1, foo=2, 3, bar='a')")
-        self.assertTrue("foo" in dir(inst))
-
-    def test_repr_dir_empty(self):
-        new = ResultTuple._new_type([])
-        inst = new()
-        self.assertEqual(repr(inst), "()")
-        dir(inst)
-
-    def test_getatttr(self):
-        new = ResultTuple._new_type([None, "foo", None, "bar"])
-        inst = new([1, 2, 3, "a"])
-
-        self.assertTrue(hasattr(inst, "foo"))
-        self.assertEqual(inst.foo, inst[1])
-        self.assertRaises(AttributeError, getattr, inst, "nope")
-
-    def test_pickle(self):
-        new = ResultTuple._new_type([None, "foo", None, "bar"])
-        inst = new([1, 2, 3, "a"])
-
-        inst2 = pickle.loads(pickle.dumps(inst))
-        self.assertEqual(inst2, inst)
-        self.assertTrue(isinstance(inst2, tuple))
-        self.assertFalse(isinstance(inst2, new))
-
-    def test_gi(self):
-        res = GIMarshallingTests.init_function([])
-        self.assertEqual(repr(res), "(True, argv=[])")
-
-        res = GIMarshallingTests.array_return_etc(5, 9)
-        self.assertEqual(repr(res), "([5, 0, 1, 9], sum=14)")
-
-        res = GIMarshallingTests.array_out_etc(-5, 9)
-        self.assertEqual(repr(res), "(ints=[-5, 0, 1, 9], sum=4)")
-
-        cb = lambda: (1, 2)
-        res = GIMarshallingTests.callback_multiple_out_parameters(cb)
-        self.assertEqual(repr(res), "(a=1.0, b=2.0)")
-
-    def test_regress(self):
-        res = Regress.TestObj().skip_return_val(50, 42.0, 60, 2, 3)
-        self.assertEqual(repr(res), "(out_b=51, inout_d=61, out_sum=32)")
index 4e81c1e..918dad4 100644 (file)
@@ -3,13 +3,10 @@
 import gc
 import unittest
 import sys
-import weakref
 
-from gi.repository import GObject, GLib, Regress
-from gi import _signalhelper as signalhelper
+from gi.repository import GObject
 import testhelper
 from compathelper import _long
-from helper import capture_glib_warnings, capture_gi_deprecation_warnings
 
 
 class C(GObject.GObject):
@@ -51,11 +48,11 @@ class TestChaining(unittest.TestCase):
 
         assert args[2:] == (1, 2, 3)
 
-    def test_chaining(self):
+    def testChaining(self):
         self.inst.emit("my_signal", 42)
         assert self.inst.arg == 42
 
-    def test_chaining2(self):
+    def testChaining2(self):
         inst2 = D()
         inst2.emit("my_signal", 44)
         assert inst2.arg == 44
@@ -65,32 +62,30 @@ class TestChaining(unittest.TestCase):
 
 
 class TestGSignalsError(unittest.TestCase):
-    def test_invalid_type(self, *args):
+    def testInvalidType(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gsignals__ = None
         self.assertRaises(TypeError, foo)
         gc.collect()
 
-    def test_invalid_name(self, *args):
+    def testInvalidName(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gsignals__ = {'not-exists': 'override'}
-
-        with capture_glib_warnings(allow_warnings=True):
-            self.assertRaises(TypeError, foo)
+        self.assertRaises(TypeError, foo)
         gc.collect()
 
 
 class TestGPropertyError(unittest.TestCase):
-    def test_invalid_type(self, *args):
+    def testInvalidType(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gproperties__ = None
         self.assertRaises(TypeError, foo)
         gc.collect()
 
-    def test_invalid_name(self, *args):
+    def testInvalidName(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gproperties__ = {None: None}
@@ -100,7 +95,7 @@ class TestGPropertyError(unittest.TestCase):
 
 
 class TestList(unittest.TestCase):
-    def test_list_names(self):
+    def testListObject(self):
         self.assertEqual(GObject.signal_list_names(C), ('my-signal',))
 
 
@@ -114,54 +109,38 @@ def my_accumulator(ihint, return_accu, handler_return, user_data):
 
 
 class Foo(GObject.GObject):
-    my_acc_signal = GObject.Signal(return_type=GObject.TYPE_INT,
-                                   flags=GObject.SignalFlags.RUN_LAST,
-                                   accumulator=my_accumulator,
-                                   accu_data="accum data")
-
-    my_other_acc_signal = GObject.Signal(return_type=GObject.TYPE_BOOLEAN,
-                                         flags=GObject.SignalFlags.RUN_LAST,
-                                         accumulator=GObject.signal_accumulator_true_handled)
-
-    my_acc_first_wins = GObject.Signal(return_type=GObject.TYPE_BOOLEAN,
-                                       flags=GObject.SignalFlags.RUN_LAST,
-                                       accumulator=GObject.signal_accumulator_first_wins)
+    __gsignals__ = {
+        'my-acc-signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_INT,
+                                   (), my_accumulator, "accum data"),
+        'my-other-acc-signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_BOOLEAN,
+                                (), GObject.signal_accumulator_true_handled)
+        }
 
 
 class TestAccumulator(unittest.TestCase):
 
-    def test_accumulator(self):
+    def testAccumulator(self):
         inst = Foo()
-        inst.my_acc_signal.connect(lambda obj: 1)
-        inst.my_acc_signal.connect(lambda obj: 2)
-        # the value returned in the following handler will not be
-        # considered, because at this point the accumulator already
-        # reached its limit.
-        inst.my_acc_signal.connect(lambda obj: 3)
-        retval = inst.my_acc_signal.emit()
+        inst.connect("my-acc-signal", lambda obj: 1)
+        inst.connect("my-acc-signal", lambda obj: 2)
+        ## the value returned in the following handler will not be
+        ## considered, because at this point the accumulator already
+        ## reached its limit.
+        inst.connect("my-acc-signal", lambda obj: 3)
+        retval = inst.emit("my-acc-signal")
         self.assertEqual(retval, 3)
 
-    def test_accumulator_true_handled(self):
+    def testAccumulatorTrueHandled(self):
         inst = Foo()
-        inst.my_other_acc_signal.connect(self._true_handler1)
-        inst.my_other_acc_signal.connect(self._true_handler2)
-        # the following handler will not be called because handler2
-        # returns True, so it should stop the emission.
-        inst.my_other_acc_signal.connect(self._true_handler3)
+        inst.connect("my-other-acc-signal", self._true_handler1)
+        inst.connect("my-other-acc-signal", self._true_handler2)
+        ## the following handler will not be called because handler2
+        ## returns True, so it should stop the emission.
+        inst.connect("my-other-acc-signal", self._true_handler3)
         self.__true_val = None
-        inst.my_other_acc_signal.emit()
+        inst.emit("my-other-acc-signal")
         self.assertEqual(self.__true_val, 2)
 
-    def test_accumulator_first_wins(self):
-        # First signal hit will always win
-        inst = Foo()
-        inst.my_acc_first_wins.connect(self._true_handler3)
-        inst.my_acc_first_wins.connect(self._true_handler1)
-        inst.my_acc_first_wins.connect(self._true_handler2)
-        self.__true_val = None
-        inst.my_acc_first_wins.emit()
-        self.assertEqual(self.__true_val, 3)
-
     def _true_handler1(self, obj):
         self.__true_val = 1
         return False
@@ -179,9 +158,6 @@ class E(GObject.GObject):
     __gsignals__ = {'signal': (GObject.SignalFlags.RUN_FIRST, None,
                                ())}
 
-    # Property used to test detailed signal
-    prop = GObject.Property(type=int, default=0)
-
     def __init__(self):
         GObject.GObject.__init__(self)
         self.status = 0
@@ -204,7 +180,7 @@ class F(GObject.GObject):
 
 
 class TestEmissionHook(unittest.TestCase):
-    def test_add(self):
+    def testAdd(self):
         self.hook = True
         e = E()
         e.connect('signal', self._callback)
@@ -212,7 +188,7 @@ class TestEmissionHook(unittest.TestCase):
         e.emit('signal')
         self.assertEqual(e.status, 3)
 
-    def test_remove(self):
+    def testRemove(self):
         self.hook = False
         e = E()
         e.connect('signal', self._callback)
@@ -232,7 +208,7 @@ class TestEmissionHook(unittest.TestCase):
             self.assertEqual(e.status, 1)
         e.status = 3
 
-    def test_callback_return_false(self):
+    def testCallbackReturnFalse(self):
         self.hook = False
         obj = F()
 
@@ -244,7 +220,7 @@ class TestEmissionHook(unittest.TestCase):
         obj.emit('signal')
         self.assertEqual(obj.status, 3)
 
-    def test_callback_return_true(self):
+    def testCallbackReturnTrue(self):
         self.hook = False
         obj = F()
 
@@ -257,7 +233,7 @@ class TestEmissionHook(unittest.TestCase):
         GObject.remove_emission_hook(obj, "signal", hook_id)
         self.assertEqual(obj.status, 4)
 
-    def test_callback_return_true_but_remove(self):
+    def testCallbackReturnTrueButRemove(self):
         self.hook = False
         obj = F()
 
@@ -271,155 +247,36 @@ class TestEmissionHook(unittest.TestCase):
         self.assertEqual(obj.status, 3)
 
 
-class TestMatching(unittest.TestCase):
-    class Object(GObject.Object):
-        status = 0
-        prop = GObject.Property(type=int, default=0)
-
-        @GObject.Signal()
-        def my_signal(self):
-            pass
-
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=692918
-    def test_signal_handler_block_matching(self):
-        def dummy(*args):
-            "Hack to work around: "
-
-        def foo(obj):
-            obj.status += 1
-
-        obj = self.Object()
-        handler_id = GObject.signal_connect_closure(obj, 'my-signal', foo, after=False)
-        handler_id
-
-        self.assertEqual(obj.status, 0)
-        obj.emit('my-signal')
-        self.assertEqual(obj.status, 1)
-
-        # Blocking by match criteria disables the foo callback
-        signal_id, detail = GObject.signal_parse_name('my-signal', obj, True)
-        count = GObject.signal_handlers_block_matched(obj,
-                                                      GObject.SignalMatchType.ID | GObject.SignalMatchType.CLOSURE,
-                                                      signal_id=signal_id, detail=detail,
-                                                      closure=foo, func=dummy, data=dummy)
-        self.assertEqual(count, 1)
-        obj.emit('my-signal')
-        self.assertEqual(obj.status, 1)
-
-        # Unblocking by the same match criteria allows callback to work again
-        count = GObject.signal_handlers_unblock_matched(obj,
-                                                        GObject.SignalMatchType.ID | GObject.SignalMatchType.CLOSURE,
-                                                        signal_id=signal_id, detail=detail,
-                                                        closure=foo, func=dummy, data=dummy)
-        self.assertEqual(count, 1)
-        obj.emit('my-signal')
-        self.assertEqual(obj.status, 2)
-
-        # Disconnecting by match criteria completely removes the handler
-        count = GObject.signal_handlers_disconnect_matched(obj,
-                                                           GObject.SignalMatchType.ID | GObject.SignalMatchType.CLOSURE,
-                                                           signal_id=signal_id, detail=detail,
-                                                           closure=foo, func=dummy, data=dummy)
-        self.assertEqual(count, 1)
-        obj.emit('my-signal')
-        self.assertEqual(obj.status, 2)
-
-    def test_signal_handler_find(self):
-        def foo(obj):
-            obj.status += 1
-
-        obj = self.Object()
-        handler_id = GObject.signal_connect_closure(obj, 'my-signal', foo, after=False)
-
-        signal_id, detail = GObject.signal_parse_name('my-signal', obj, True)
-        found_id = GObject.signal_handler_find(obj,
-                                               GObject.SignalMatchType.ID,
-                                               signal_id=signal_id, detail=detail,
-                                               closure=None, func=0, data=0)
-        self.assertEqual(handler_id, found_id)
-
-
 class TestClosures(unittest.TestCase):
     def setUp(self):
         self.count = 0
-        self.emission_stopped = False
-        self.emission_error = False
-        self.handler_pending = False
-
-    def _callback_handler_pending(self, e):
-        signal_id, detail = GObject.signal_parse_name('signal', e, True)
-        self.handler_pending = GObject.signal_has_handler_pending(e, signal_id, detail,
-                                                                  may_be_blocked=False)
 
     def _callback(self, e):
         self.count += 1
 
-    def _callback_stop_emission(self, obj, prop, stop_it):
-        if stop_it:
-            obj.stop_emission_by_name('notify::prop')
-            self.emission_stopped = True
-        else:
-            self.count += 1
-
-    def _callback_invalid_stop_emission_name(self, obj, prop):
-        with capture_glib_warnings(allow_warnings=True) as warn:
-            obj.stop_emission_by_name('notasignal::baddetail')
-            self.emission_error = True
-            self.assertTrue(warn)
-
-    def test_disconnect_by_func(self):
+    def testDisconnect(self):
         e = E()
         e.connect('signal', self._callback)
         e.disconnect_by_func(self._callback)
         e.emit('signal')
         self.assertEqual(self.count, 0)
 
-    def test_disconnect(self):
-        e = E()
-        handler_id = e.connect('signal', self._callback)
-        self.assertTrue(e.handler_is_connected(handler_id))
-        e.disconnect(handler_id)
-        e.emit('signal')
-        self.assertEqual(self.count, 0)
-        self.assertFalse(e.handler_is_connected(handler_id))
-
-    def test_stop_emission_by_name(self):
-        e = E()
-
-        # Sandwich a callback that stops emission in between a callback that increments
-        e.connect('notify::prop', self._callback_stop_emission, False)
-        e.connect('notify::prop', self._callback_stop_emission, True)
-        e.connect('notify::prop', self._callback_stop_emission, False)
-
-        e.set_property('prop', 1234)
-        self.assertEqual(e.get_property('prop'), 1234)
-        self.assertEqual(self.count, 1)
-        self.assertTrue(self.emission_stopped)
-
-    def test_stop_emission_by_name_error(self):
-        e = E()
-
-        e.connect('notify::prop', self._callback_invalid_stop_emission_name)
-        with capture_glib_warnings():
-            e.set_property('prop', 1234)
-        self.assertTrue(self.emission_error)
-
-    def test_handler_block(self):
+    def testHandlerBlock(self):
         e = E()
         e.connect('signal', self._callback)
         e.handler_block_by_func(self._callback)
         e.emit('signal')
         self.assertEqual(self.count, 0)
 
-    def test_handler_unblock(self):
+    def testHandlerUnBlock(self):
         e = E()
-        handler_id = e.connect('signal', self._callback)
-        e.handler_block(handler_id)
+        signal_id = e.connect('signal', self._callback)
+        e.handler_block(signal_id)
         e.handler_unblock_by_func(self._callback)
         e.emit('signal')
         self.assertEqual(self.count, 1)
 
-    def test_handler_block_method(self):
+    def testHandlerBlockMethod(self):
         # Filed as #375589
         class A:
             def __init__(self):
@@ -436,7 +293,7 @@ class TestClosures(unittest.TestCase):
         self.assertEqual(inst.a, 1)
         gc.collect()
 
-    def test_gstring(self):
+    def testGString(self):
         class C(GObject.GObject):
             __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_GSTRING,
                                           (GObject.TYPE_GSTRING,))}
@@ -453,40 +310,13 @@ class TestClosures(unittest.TestCase):
         data = c.emit("my_signal", "\01\00\02")
         self.assertEqual(data, "\02\00\01")
 
-    def test_handler_pending(self):
-        obj = F()
-        obj.connect('signal', self._callback_handler_pending)
-        obj.connect('signal', self._callback)
-
-        self.assertEqual(self.count, 0)
-        self.assertEqual(self.handler_pending, False)
-
-        obj.emit('signal')
-        self.assertEqual(self.count, 1)
-        self.assertEqual(self.handler_pending, True)
-
-    def test_signal_handlers_destroy(self):
-        obj = F()
-        obj.connect('signal', self._callback)
-        obj.connect('signal', self._callback)
-        obj.connect('signal', self._callback)
-
-        obj.emit('signal')
-        self.assertEqual(self.count, 3)
-
-        # count should remain at 3 after all handlers are destroyed
-        GObject.signal_handlers_destroy(obj)
-        obj.emit('signal')
-        self.assertEqual(self.count, 3)
-
 
 class SigPropClass(GObject.GObject):
     __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_FIRST, None,
                                   (GObject.TYPE_INT,))}
 
     __gproperties__ = {
-        'foo': (str, None, None, '',
-                GObject.ParamFlags.WRITABLE | GObject.ParamFlags.CONSTRUCT),
+        'foo': (str, None, None, '', GObject.PARAM_WRITABLE | GObject.PARAM_CONSTRUCT),
         }
 
     signal_emission_failed = False
@@ -506,152 +336,65 @@ class SigPropClass(GObject.GObject):
 
 
 class TestSigProp(unittest.TestCase):
-    def test_emit_in_property_setter(self):
+    def testEmitInPropertySetter(self):
         obj = SigPropClass()
         self.assertFalse(obj.signal_emission_failed)
 
+f = GObject.SignalFlags.RUN_FIRST
+l = GObject.SignalFlags.RUN_LAST
+float = GObject.TYPE_FLOAT
+double = GObject.TYPE_DOUBLE
+uint = GObject.TYPE_UINT
+ulong = GObject.TYPE_ULONG
+
 
 class CM(GObject.GObject):
     __gsignals__ = dict(
-        test1=(GObject.SignalFlags.RUN_FIRST, None, ()),
-        test2=(GObject.SignalFlags.RUN_LAST, None, (str,)),
-        test3=(GObject.SignalFlags.RUN_LAST, int, (GObject.TYPE_DOUBLE,)),
-        test4=(GObject.SignalFlags.RUN_FIRST, None,
-               (bool, _long, GObject.TYPE_FLOAT, GObject.TYPE_DOUBLE, int,
-                GObject.TYPE_UINT, GObject.TYPE_ULONG)),
-        test_float=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_FLOAT, (GObject.TYPE_FLOAT,)),
-        test_double=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_DOUBLE, (GObject.TYPE_DOUBLE,)),
-        test_int64=(GObject.SignalFlags.RUN_LAST, GObject.TYPE_INT64, (GObject.TYPE_INT64,)),
-        test_string=(GObject.SignalFlags.RUN_LAST, str, (str,)),
-        test_object=(GObject.SignalFlags.RUN_LAST, object, (object,)),
-        test_paramspec=(GObject.SignalFlags.RUN_LAST, GObject.ParamSpec, ()),
-        test_paramspec_in=(GObject.SignalFlags.RUN_LAST, GObject.ParamSpec, (GObject.ParamSpec, )),
-        test_gvalue=(GObject.SignalFlags.RUN_LAST, GObject.Value, (GObject.Value,)),
-        test_gvalue_ret=(GObject.SignalFlags.RUN_LAST, GObject.Value, (GObject.TYPE_GTYPE,)),
+        test1=(f, None, ()),
+        test2=(l, None, (str,)),
+        test3=(l, int, (double,)),
+        test4=(f, None, (bool, _long, float, double, int, uint, ulong)),
+        test_float=(l, float, (float,)),
+        test_double=(l, double, (double, )),
+        test_string=(l, str, (str, )),
+        test_object=(l, object, (object, )),
     )
 
-    testprop = GObject.Property(type=int)
-
 
 class _TestCMarshaller:
     def setUp(self):
         self.obj = CM()
         testhelper.connectcallbacks(self.obj)
 
-    def test_test1(self):
+    def testTest1(self):
         self.obj.emit("test1")
 
-    def test_test2(self):
+    def testTest2(self):
         self.obj.emit("test2", "string")
 
-    def test_test3(self):
+    def testTest3(self):
         rv = self.obj.emit("test3", 42.0)
         self.assertEqual(rv, 20)
 
-    def test_test4(self):
+    def testTest4(self):
         self.obj.emit("test4", True, _long(10), 3.14, 1.78, 20, _long(30), _long(31))
 
-    def test_float(self):
+    def testTestReturnFloat(self):
         rv = self.obj.emit("test-float", 1.234)
         self.assertTrue(rv >= 1.233999 and rv <= 1.2400001, rv)
 
-    def test_double(self):
+    def testTestReturnDouble(self):
         rv = self.obj.emit("test-double", 1.234)
         self.assertEqual(rv, 1.234)
 
-    def test_int64(self):
-        rv = self.obj.emit("test-int64", 102030405)
-        self.assertEqual(rv, 102030405)
-
-        rv = self.obj.emit("test-int64", GLib.MAXINT64)
-        self.assertEqual(rv, GLib.MAXINT64 - 1)
-
-        rv = self.obj.emit("test-int64", GLib.MININT64)
-        self.assertEqual(rv, GLib.MININT64)
-
-    def test_string(self):
+    def testTestReturnString(self):
         rv = self.obj.emit("test-string", "str")
         self.assertEqual(rv, "str")
 
-    def test_object(self):
+    def testTestReturnObject(self):
         rv = self.obj.emit("test-object", self)
         self.assertEqual(rv, self)
 
-    def test_paramspec(self):
-        rv = self.obj.emit("test-paramspec")
-        self.assertEqual(rv.name, "test-param")
-        self.assertEqual(rv.nick, "test")
-
-    @unittest.skipUnless(hasattr(GObject, 'param_spec_boolean'),
-                         'too old gobject-introspection')
-    def test_paramspec_in(self):
-        rv = GObject.param_spec_boolean('mybool', 'test-bool', 'do something',
-                                        True, GObject.ParamFlags.READABLE)
-
-        rv2 = self.obj.emit("test-paramspec-in", rv)
-        self.assertEqual(type(rv), type(rv2))
-        self.assertEqual(rv2.name, "mybool")
-        self.assertEqual(rv2.nick, "test-bool")
-
-    def test_C_paramspec(self):
-        self.notify_called = False
-
-        def cb_notify(obj, prop):
-            self.notify_called = True
-            self.assertEqual(obj, self.obj)
-            self.assertEqual(prop.name, "testprop")
-
-        self.obj.connect("notify", cb_notify)
-        self.obj.set_property("testprop", 42)
-        self.assertTrue(self.notify_called)
-
-    def test_gvalue(self):
-        # implicit int
-        rv = self.obj.emit("test-gvalue", 42)
-        self.assertEqual(rv, 42)
-
-        # explicit float
-        v = GObject.Value(GObject.TYPE_FLOAT, 1.234)
-        rv = self.obj.emit("test-gvalue", v)
-        self.assertAlmostEqual(rv, 1.234, places=4)
-
-        # implicit float
-        rv = self.obj.emit("test-gvalue", 1.234)
-        self.assertAlmostEqual(rv, 1.234, places=4)
-
-        # explicit int64
-        v = GObject.Value(GObject.TYPE_INT64, GLib.MAXINT64)
-        rv = self.obj.emit("test-gvalue", v)
-        self.assertEqual(rv, GLib.MAXINT64)
-
-        # explicit uint64
-        v = GObject.Value(GObject.TYPE_UINT64, GLib.MAXUINT64)
-        rv = self.obj.emit("test-gvalue", v)
-        self.assertEqual(rv, GLib.MAXUINT64)
-
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=705291
-    def test_gvalue_implicit_int64(self):
-        # implicit int64
-        rv = self.obj.emit("test-gvalue", GLib.MAXINT64)
-        self.assertEqual(rv, GLib.MAXINT64)
-
-        # implicit uint64
-        rv = self.obj.emit("test-gvalue", GLib.MAXUINT64)
-        self.assertEqual(rv, GLib.MAXUINT64)
-
-    def test_gvalue_ret(self):
-        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_INT),
-                         GLib.MAXINT)
-        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_UINT),
-                         GLib.MAXUINT)
-        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_INT64),
-                         GLib.MAXINT64)
-        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_UINT64),
-                         GLib.MAXUINT64)
-        self.assertEqual(self.obj.emit("test-gvalue-ret", GObject.TYPE_STRING),
-                         "hello")
-
-
 if 'generic-c-marshaller' in GObject.features:
     class TestCMarshaller(_TestCMarshaller, unittest.TestCase):
         pass
@@ -664,11 +407,11 @@ else:
 
 
 class TestPyGValue(unittest.TestCase):
-    def test_none_null_boxed_conversion(self):
+    def testNoneNULLBoxedConversion(self):
         class C(GObject.GObject):
             __gsignals__ = dict(my_boxed_signal=(
                 GObject.SignalFlags.RUN_LAST,
-                GObject.TYPE_STRV, ()))
+                GObject.type_from_name('GStrv'), ()))
 
         obj = C()
         obj.connect('my-boxed-signal', lambda obj: None)
@@ -676,795 +419,5 @@ class TestPyGValue(unittest.TestCase):
         obj.emit('my-boxed-signal')
         assert not sys.last_type
 
-
-class TestSignalDecorator(unittest.TestCase):
-    class Decorated(GObject.GObject):
-        value = 0
-
-        @GObject.Signal
-        def pushed(self):
-            """this will push"""
-            self.value += 1
-
-        @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
-        def pulled(self):
-            self.value -= 1
-
-        stomped = GObject.Signal('stomped', arg_types=(int,), doc='this will stomp')
-        unnamed = GObject.Signal()
-
-    class DecoratedOverride(GObject.GObject):
-        overridden_closure_called = False
-        notify_called = False
-        value = GObject.Property(type=int, default=0)
-
-        @GObject.SignalOverride
-        def notify(self, *args, **kargs):
-            self.overridden_closure_called = True
-
-        def on_notify(self, obj, prop):
-            self.notify_called = True
-
-    def setUp(self):
-        self.unnamedCalled = False
-
-    def onUnnamed(self, obj):
-        self.unnamedCalled = True
-
-    def test_get_signal_args(self):
-        self.assertEqual(self.Decorated.pushed.get_signal_args(),
-                         (GObject.SignalFlags.RUN_FIRST, None, tuple(), None, None))
-        self.assertEqual(self.Decorated.pulled.get_signal_args(),
-                         (GObject.SignalFlags.RUN_LAST, None, tuple(), None, None))
-        self.assertEqual(self.Decorated.stomped.get_signal_args(),
-                         (GObject.SignalFlags.RUN_FIRST, None, (int,), None, None))
-
-    def test_closures_called(self):
-        decorated = self.Decorated()
-        self.assertEqual(decorated.value, 0)
-        decorated.pushed.emit()
-        self.assertEqual(decorated.value, 1)
-        decorated.pulled.emit()
-        self.assertEqual(decorated.value, 0)
-
-    def test_signal_copy(self):
-        blah = self.Decorated.stomped.copy('blah')
-        self.assertEqual(str(blah), blah)
-        self.assertEqual(blah.func, self.Decorated.stomped.func)
-        self.assertEqual(blah.flags, self.Decorated.stomped.flags)
-        self.assertEqual(blah.return_type, self.Decorated.stomped.return_type)
-        self.assertEqual(blah.arg_types, self.Decorated.stomped.arg_types)
-        self.assertEqual(blah.__doc__, self.Decorated.stomped.__doc__)
-
-    def test_doc_string(self):
-        # Test the two techniques for setting doc strings on the signals
-        # class variables, through the "doc" keyword or as the getter doc string.
-        self.assertEqual(self.Decorated.stomped.__doc__, 'this will stomp')
-        self.assertEqual(self.Decorated.pushed.__doc__, 'this will push')
-
-    def test_unnamed_signal_gets_named(self):
-        self.assertEqual(str(self.Decorated.unnamed), 'unnamed')
-
-    def test_unnamed_signal_gets_called(self):
-        obj = self.Decorated()
-        obj.connect('unnamed', self.onUnnamed)
-        self.assertEqual(self.unnamedCalled, False)
-        obj.emit('unnamed')
-        self.assertEqual(self.unnamedCalled, True)
-
-    def test_overridden_signal(self):
-        # Test that the pushed signal is called in with super and the override
-        # which should both increment the "value" to 3
-        obj = self.DecoratedOverride()
-        obj.connect("notify", obj.on_notify)
-        self.assertEqual(obj.value, 0)
-        obj.value = 1
-        self.assertEqual(obj.value, 1)
-        self.assertTrue(obj.overridden_closure_called)
-        self.assertTrue(obj.notify_called)
-
-
-class TestSignalConnectors(unittest.TestCase):
-    class CustomButton(GObject.GObject):
-        on_notify_called = False
-        value = GObject.Property(type=int)
-
-        @GObject.Signal(arg_types=(int,))
-        def clicked(self, value):
-            self.value = value
-
-    def setUp(self):
-        self.obj = None
-        self.value = None
-
-    def on_clicked(self, obj, value):
-        self.obj = obj
-        self.value = value
-
-    def test_signal_notify(self):
-        def on_notify(obj, param):
-            obj.on_notify_called = True
-
-        obj = self.CustomButton()
-        obj.connect('notify', on_notify)
-        self.assertFalse(obj.on_notify_called)
-        obj.notify('value')
-        self.assertTrue(obj.on_notify_called)
-
-    def test_signal_emit(self):
-        # standard callback connection with different forms of emit.
-        obj = self.CustomButton()
-        obj.connect('clicked', self.on_clicked)
-
-        # vanilla
-        obj.emit('clicked', 1)
-        self.assertEqual(obj.value, 1)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 1)
-
-        # using class signal as param
-        self.obj = None
-        self.value = None
-        obj.emit(self.CustomButton.clicked, 1)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 1)
-
-        # using bound signal as param
-        self.obj = None
-        self.value = None
-        obj.emit(obj.clicked, 1)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 1)
-
-        # using bound signal with emit
-        self.obj = None
-        self.value = None
-        obj.clicked.emit(1)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 1)
-
-    def test_signal_class_connect(self):
-        obj = self.CustomButton()
-        obj.connect(self.CustomButton.clicked, self.on_clicked)
-        obj.emit('clicked', 2)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 2)
-
-    def test_signal_bound_connect(self):
-        obj = self.CustomButton()
-        obj.clicked.connect(self.on_clicked)
-        obj.emit('clicked', 3)
-        self.assertEqual(obj, self.obj)
-        self.assertEqual(self.value, 3)
-
-
-class _ConnectDataTestBase(object):
-    # Notes:
-    #  - self.Object is overridden in sub-classes.
-    #  - Numeric suffixes indicate the number of user data args passed in.
-    Object = None
-
-    def run_connect_test(self, emit_args, user_data, flags=0):
-        obj = self.Object()
-        callback_args = []
-
-        def callback(*args):
-            callback_args.append(args)
-            return 0
-
-        obj.connect_data('sig-with-int64-prop', callback, connect_flags=flags, *user_data)
-        obj.emit('sig-with-int64-prop', *emit_args)
-        self.assertEqual(len(callback_args), 1)
-        return callback_args[0]
-
-    def test_0(self):
-        obj, value = self.run_connect_test([GLib.MAXINT64], user_data=[])
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-
-    def test_1(self):
-        obj, value, data = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'])
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_after_0(self):
-        obj, value = self.run_connect_test([GLib.MAXINT64],
-                                           user_data=[],
-                                           flags=GObject.ConnectFlags.AFTER)
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-
-    def test_after_1(self):
-        obj, value, data = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'],
-                                                 flags=GObject.ConnectFlags.AFTER)
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_swaped_0(self):
-        # Swapped only works with a single user data argument.
-        with self.assertRaises(ValueError):
-            self.run_connect_test([GLib.MAXINT64],
-                                  user_data=[],
-                                  flags=GObject.ConnectFlags.SWAPPED)
-
-    def test_swaped_1(self):
-        # Notice obj and data are reversed in the return.
-        data, value, obj = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'],
-                                                 flags=GObject.ConnectFlags.SWAPPED)
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_swaped_2(self):
-        # Swapped only works with a single user data argument.
-        with self.assertRaises(ValueError):
-            self.run_connect_test([GLib.MAXINT64],
-                                  user_data=[1, 2],
-                                  flags=GObject.ConnectFlags.SWAPPED)
-
-    def test_after_and_swapped_0(self):
-        # Swapped only works with a single user data argument.
-        with self.assertRaises(ValueError):
-            self.run_connect_test([GLib.MAXINT64],
-                                  user_data=[],
-                                  flags=GObject.ConnectFlags.AFTER | GObject.ConnectFlags.SWAPPED)
-
-    def test_after_and_swapped_1(self):
-        # Notice obj and data are reversed in the return.
-        data, value, obj = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'],
-                                                 flags=GObject.ConnectFlags.AFTER | GObject.ConnectFlags.SWAPPED)
-        self.assertIsInstance(obj, self.Object)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_after_and_swapped_2(self):
-        # Swapped only works with a single user data argument.
-        with self.assertRaises(ValueError):
-            self.run_connect_test([GLib.MAXINT64],
-                                  user_data=[],
-                                  flags=GObject.ConnectFlags.AFTER | GObject.ConnectFlags.SWAPPED)
-
-
-class TestConnectDataNonIntrospected(unittest.TestCase, _ConnectDataTestBase):
-    # This tests connect_data with non-introspected signals
-    # (created in Python in this case).
-    class Object(GObject.Object):
-        test = GObject.Signal()
-        sig_with_int64_prop = GObject.Signal(return_type=GObject.TYPE_INT64,
-                                             arg_types=[GObject.TYPE_INT64],
-                                             flags=GObject.SignalFlags.RUN_LAST)
-
-
-class TestConnectDataIntrospected(unittest.TestCase, _ConnectDataTestBase):
-    # This tests connect_data with introspected signals brought in from Regress.
-    Object = Regress.TestObj
-
-
-class TestInstallSignals(unittest.TestCase):
-    # These tests only test how signalhelper.install_signals works
-    # with the __gsignals__ dict and therefore does not need to use
-    # GObject as a base class because that would automatically call
-    # install_signals within the meta-class.
-    class Base(object):
-        __gsignals__ = {'test': (0, None, tuple())}
-
-    class Sub1(Base):
-        pass
-
-    class Sub2(Base):
-        @GObject.Signal
-        def sub2test(self):
-            pass
-
-    def setUp(self):
-        self.assertEqual(len(self.Base.__gsignals__), 1)
-        signalhelper.install_signals(self.Base)
-        self.assertEqual(len(self.Base.__gsignals__), 1)
-
-    def test_subclass_gets_empty_gsignals_dict(self):
-        # Installing signals will add the __gsignals__ dict to a class
-        # if it doesn't already exists.
-        self.assertFalse('__gsignals__' in self.Sub1.__dict__)
-        signalhelper.install_signals(self.Sub1)
-        self.assertTrue('__gsignals__' in self.Sub1.__dict__)
-        # Sub1 should only contain an empty signals dict, this tests:
-        # https://bugzilla.gnome.org/show_bug.cgi?id=686496
-        self.assertEqual(self.Sub1.__dict__['__gsignals__'], {})
-
-    def test_subclass_with_decorator_gets_gsignals_dict(self):
-        self.assertFalse('__gsignals__' in self.Sub2.__dict__)
-        signalhelper.install_signals(self.Sub2)
-        self.assertTrue('__gsignals__' in self.Sub2.__dict__)
-        self.assertEqual(len(self.Base.__gsignals__), 1)
-        self.assertEqual(len(self.Sub2.__gsignals__), 1)
-        self.assertTrue('sub2test' in self.Sub2.__gsignals__)
-
-        # Make sure the vfunc was added
-        self.assertTrue(hasattr(self.Sub2, 'do_sub2test'))
-
-
-# For this test to work with both python2 and 3 we need to dynamically
-# exec the given code due to the new syntax causing an error in python 2.
-annotated_class_code = """
-class AnnotatedSignalClass(GObject.GObject):
-    @GObject.Signal
-    def sig1(self, a:int, b:float):
-        pass
-
-    @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST)
-    def sig2_with_return(self, a:int, b:float) -> str:
-        return "test"
-"""
-
-
-@unittest.skipUnless(sys.version_info >= (3, 0),
-                     'Argument annotations require Python 3')
-class TestPython3Signals(unittest.TestCase):
-    AnnotatedClass = None
-
-    def setUp(self):
-        exec(annotated_class_code, globals(), globals())
-        self.assertTrue('AnnotatedSignalClass' in globals())
-        self.AnnotatedClass = globals()['AnnotatedSignalClass']
-
-    def test_annotations(self):
-        self.assertEqual(signalhelper.get_signal_annotations(self.AnnotatedClass.sig1.func),
-                         (None, (int, float)))
-        self.assertEqual(signalhelper.get_signal_annotations(self.AnnotatedClass.sig2_with_return.func),
-                         (str, (int, float)))
-
-        self.assertEqual(self.AnnotatedClass.sig2_with_return.get_signal_args(),
-                         (GObject.SignalFlags.RUN_LAST, str, (int, float), None, None))
-        self.assertEqual(self.AnnotatedClass.sig2_with_return.arg_types,
-                         (int, float))
-        self.assertEqual(self.AnnotatedClass.sig2_with_return.return_type,
-                         str)
-
-    def test_emit_return(self):
-        obj = self.AnnotatedClass()
-        self.assertEqual(obj.sig2_with_return.emit(1, 2.0),
-                         'test')
-
-
-class TestSignalModuleLevelFunctions(unittest.TestCase):
-    def test_signal_list_ids_with_invalid_type(self):
-        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
-            GObject.signal_list_ids(GObject.TYPE_INVALID)
-
-    def test_signal_list_ids(self):
-        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
-            GObject.signal_list_ids(GObject.TYPE_INT)
-
-        ids = GObject.signal_list_ids(C)
-        self.assertEqual(len(ids), 1)
-        # Note canonicalized names
-        self.assertEqual(GObject.signal_name(ids[0]), 'my-signal')
-        # There is no signal 0 in gobject
-        self.assertEqual(GObject.signal_name(0), None)
-
-    def test_signal_lookup_with_invalid_type(self):
-        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
-            GObject.signal_lookup('NOT_A_SIGNAL_NAME', GObject.TYPE_INVALID)
-
-    def test_signal_lookup(self):
-        ids = GObject.signal_list_ids(C)
-        self.assertEqual(ids[0], GObject.signal_lookup('my_signal', C))
-        self.assertEqual(ids[0], GObject.signal_lookup('my-signal', C))
-
-        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
-            GObject.signal_lookup('NOT_A_SIGNAL_NAME', GObject.TYPE_INT)
-
-        # Invalid signal names return 0 instead of raising
-        self.assertEqual(GObject.signal_lookup('NOT_A_SIGNAL_NAME', C),
-                         0)
-
-    def test_signal_query(self):
-        my_signal_id, = GObject.signal_list_ids(C)
-
-        # Form is: (id, name, gtype, arg_count, return_type, (arg_type1, ...))
-        my_signal_expected_query_result = [my_signal_id, 'my-signal', C.__gtype__,
-                                           1, GObject.TYPE_NONE, (GObject.TYPE_INT,)]
-        # signal_query(name, type)
-        self.assertEqual(list(GObject.signal_query('my-signal', C)), my_signal_expected_query_result)
-        # signal_query(signal_id)
-        self.assertEqual(list(GObject.signal_query(my_signal_id)), my_signal_expected_query_result)
-        # invalid query returns None instead of raising
-        self.assertEqual(GObject.signal_query(0), None)
-        self.assertEqual(GObject.signal_query('NOT_A_SIGNAL', C),
-                         None)
-
-
-class TestIntrospectedSignals(unittest.TestCase):
-    def test_object_param_signal(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, obj_param):
-            self.assertEqual(obj_param.props.int, 3)
-            self.assertGreater(obj_param.__grefcount__, 1)
-            obj.called = True
-
-        obj.called = False
-        obj.connect('sig-with-obj', callback)
-        obj.emit_sig_with_obj()
-        self.assertTrue(obj.called)
-
-    def test_connect_after(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, obj_param):
-            obj.called = True
-
-        obj.called = False
-        obj.connect_after('sig-with-obj', callback)
-        obj.emit_sig_with_obj()
-        self.assertTrue(obj.called)
-
-    def test_int64_param_from_py(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, i):
-            obj.callback_i = i
-            return i
-
-        obj.callback_i = None
-        obj.connect('sig-with-int64-prop', callback)
-        rv = obj.emit('sig-with-int64-prop', GLib.MAXINT64)
-        self.assertEqual(rv, GLib.MAXINT64)
-        self.assertEqual(obj.callback_i, GLib.MAXINT64)
-
-    def test_uint64_param_from_py(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, i):
-            obj.callback_i = i
-            return i
-
-        obj.callback_i = None
-        obj.connect('sig-with-uint64-prop', callback)
-        rv = obj.emit('sig-with-uint64-prop', GLib.MAXUINT64)
-        self.assertEqual(rv, GLib.MAXUINT64)
-        self.assertEqual(obj.callback_i, GLib.MAXUINT64)
-
-    def test_int64_param_from_c(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, i):
-            obj.callback_i = i
-            return i
-
-        obj.callback_i = None
-
-        obj.connect('sig-with-int64-prop', callback)
-        obj.emit_sig_with_int64()
-        self.assertEqual(obj.callback_i, GLib.MAXINT64)
-
-    def test_uint64_param_from_c(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, i):
-            obj.callback_i = i
-            return i
-
-        obj.callback_i = None
-
-        obj.connect('sig-with-uint64-prop', callback)
-        obj.emit_sig_with_uint64()
-        self.assertEqual(obj.callback_i, GLib.MAXUINT64)
-
-    def test_intarray_ret(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, i):
-            obj.callback_i = i
-            return [i, i + 1]
-
-        obj.callback_i = None
-
-        try:
-            obj.connect('sig-with-intarray-ret', callback)
-        except TypeError as e:
-            # compat with g-i 1.34.x
-            if 'unknown signal' in str(e):
-                return
-            raise
-
-        rv = obj.emit('sig-with-intarray-ret', 42)
-        self.assertEqual(obj.callback_i, 42)
-        self.assertEqual(type(rv), GLib.Array)
-        self.assertEqual(rv.len, 2)
-
-    @unittest.skip('https://bugzilla.gnome.org/show_bug.cgi?id=669496')
-    def test_array_parm(self):
-        obj = Regress.TestObj()
-
-        def callback(obj, arr):
-            obj.callback_arr = arr
-
-        obj.connect('sig-with-array-prop', callback)
-        obj.callback_arr = None
-        self.assertEqual(obj.emit('sig-with-array-prop', [1, 2, GLib.MAXUINT]), None)
-        self.assertEqual(obj.callback_arr, [1, 2, GLib.MAXUINT])
-
-    def test_held_struct_ref(self):
-        held_structs = []
-
-        def callback(obj, struct):
-            # The struct held by Python will become a copy after this callback exits.
-            struct.some_int = 42
-            struct.some_int8 = 42
-            held_structs.append(struct)
-
-        struct = Regress.TestSimpleBoxedA()
-        obj = Regress.TestObj()
-
-        self.assertEqual(struct.some_int, 0)
-        self.assertEqual(struct.some_int8, 0)
-
-        obj.connect('test-with-static-scope-arg', callback)
-        obj.emit('test-with-static-scope-arg', struct)
-
-        # The held struct will be a copy of the modified struct.
-        self.assertEqual(len(held_structs), 1)
-        held_struct = held_structs[0]
-        self.assertEqual(held_struct.some_int, 42)
-        self.assertEqual(held_struct.some_int8, 42)
-
-        # Boxed equality checks pointers by default.
-        self.assertNotEqual(struct, held_struct)
-
-
-class _ConnectObjectTestBase(object):
-    # Notes:
-    #  - self.Object is overridden in sub-classes.
-    #  - Numeric suffixes indicate the number of user data args passed in.
-    Object = None
-    SwapObject = None
-
-    def run_connect_test(self, emit_args, user_data, flags=0):
-        obj = self.Object()
-        callback_args = []
-        swap_obj = self.SwapObject()
-
-        def callback(*args):
-            callback_args.append(args)
-            return 0
-
-        if flags & GObject.ConnectFlags.AFTER:
-            connect_func = obj.connect_object_after
-        else:
-            connect_func = obj.connect_object
-
-        with capture_gi_deprecation_warnings():
-            connect_func('sig-with-int64-prop', callback, swap_obj, *user_data)
-        obj.emit('sig-with-int64-prop', *emit_args)
-        self.assertEqual(len(callback_args), 1)
-        return callback_args[0]
-
-    def test_0(self):
-        obj, value = self.run_connect_test([GLib.MAXINT64], user_data=[])
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-
-    def test_1(self):
-        obj, value, data = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'])
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_2(self):
-        obj, value, data1, data2 = self.run_connect_test([GLib.MAXINT64],
-                                                         user_data=['mydata1', 'mydata2'])
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data1, 'mydata1')
-        self.assertEqual(data2, 'mydata2')
-
-    def test_after_0(self):
-        obj, value = self.run_connect_test([GLib.MAXINT64],
-                                           user_data=[],
-                                           flags=GObject.ConnectFlags.AFTER)
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-
-    def test_after_1(self):
-        obj, value, data = self.run_connect_test([GLib.MAXINT64],
-                                                 user_data=['mydata'],
-                                                 flags=GObject.ConnectFlags.AFTER)
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data, 'mydata')
-
-    def test_after_2(self):
-        obj, value, data1, data2 = self.run_connect_test([GLib.MAXINT64],
-                                                         user_data=['mydata1', 'mydata2'],
-                                                         flags=GObject.ConnectFlags.AFTER)
-        self.assertIsInstance(obj, self.SwapObject)
-        self.assertEqual(value, GLib.MAXINT64)
-        self.assertEqual(data1, 'mydata1')
-        self.assertEqual(data2, 'mydata2')
-
-
-class TestConnectGObjectNonIntrospected(unittest.TestCase, _ConnectObjectTestBase):
-    # This tests connect_object with non-introspected signals
-    # (created in Python in this case).
-    class Object(GObject.Object):
-        test = GObject.Signal()
-        sig_with_int64_prop = GObject.Signal(return_type=GObject.TYPE_INT64,
-                                             arg_types=[GObject.TYPE_INT64],
-                                             flags=GObject.SignalFlags.RUN_LAST)
-
-    # Object passed for swapping is GObject based.
-    class SwapObject(GObject.Object):
-        pass
-
-
-class TestConnectGObjectIntrospected(unittest.TestCase, _ConnectObjectTestBase):
-    # This tests connect_object with introspected signals brought in from Regress.
-    Object = Regress.TestObj
-
-    # Object passed for swapping is GObject based.
-    class SwapObject(GObject.Object):
-        pass
-
-
-class TestConnectPyObjectNonIntrospected(unittest.TestCase, _ConnectObjectTestBase):
-    # This tests connect_object with non-introspected signals
-    # (created in Python in this case).
-    class Object(GObject.Object):
-        test = GObject.Signal()
-        sig_with_int64_prop = GObject.Signal(return_type=GObject.TYPE_INT64,
-                                             arg_types=[GObject.TYPE_INT64],
-                                             flags=GObject.SignalFlags.RUN_LAST)
-
-    # Object passed for swapping is pure Python
-    SwapObject = object
-
-
-class TestConnectPyObjectIntrospected(unittest.TestCase, _ConnectObjectTestBase):
-    # This tests connect_object with introspected signals brought in from Regress.
-    Object = Regress.TestObj
-
-    # Object passed for swapping is pure Python
-    SwapObject = object
-
-
-class _RefCountTestBase(object):
-    # NOTE: ref counts are always one more than expected because the getrefcount()
-    # function adds a ref for the input argument.
-
-    # Sub-classes set this
-    Object = None
-
-    class PyData(object):
-        pass
-
-    def test_callback_ref_count_del(self):
-        def callback(obj, value):
-            return value // 2
-
-        callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
-
-        obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
-
-        del callback
-        self.assertEqual(sys.getrefcount(callback_ref()), 2)
-
-        res = obj.emit('sig-with-int64-prop', 42)
-        self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
-
-        del obj
-        self.assertIsNone(callback_ref())
-
-    def test_callback_ref_count_disconnect(self):
-        def callback(obj, value):
-            return value // 2
-
-        callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
-
-        obj = self.Object()
-        handler_id = obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
-
-        del callback
-        self.assertEqual(sys.getrefcount(callback_ref()), 2)
-
-        res = obj.emit('sig-with-int64-prop', 42)
-        self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
-
-        obj.disconnect(handler_id)
-        self.assertIsNone(callback_ref())
-
-    def test_callback_ref_count_disconnect_by_func(self):
-        def callback(obj, value):
-            return value // 2
-
-        callback_ref = weakref.ref(callback)
-        self.assertEqual(sys.getrefcount(callback), 2)
-
-        obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback)
-        self.assertEqual(sys.getrefcount(callback), 3)
-
-        del callback
-        self.assertEqual(sys.getrefcount(callback_ref()), 2)
-
-        res = obj.emit('sig-with-int64-prop', 42)
-        self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(callback_ref), 2)
-
-        obj.disconnect_by_func(callback_ref())
-        self.assertIsNone(callback_ref())
-
-    def test_user_data_ref_count(self):
-        def callback(obj, value, data):
-            return value // 2
-
-        data = self.PyData()
-        data_ref = weakref.ref(data)
-        self.assertEqual(sys.getrefcount(data), 2)
-
-        obj = self.Object()
-        obj.connect('sig-with-int64-prop', callback, data)
-        self.assertEqual(sys.getrefcount(data), 3)
-
-        del data
-        self.assertEqual(sys.getrefcount(data_ref()), 2)
-
-        res = obj.emit('sig-with-int64-prop', 42)
-        self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(data_ref()), 2)
-
-        del obj
-        self.assertIsNone(data_ref())
-
-    @unittest.expectedFailure  # https://bugzilla.gnome.org/show_bug.cgi?id=688064
-    def test_object_ref_count(self):
-        # connect_object() should only weakly reference the object passed in
-        # and auto-disconnect the signal when the object is destroyed.
-        def callback(data, value):
-            return value // 2
-
-        data = GObject.Object()
-        data_ref = weakref.ref(data)
-        self.assertEqual(sys.getrefcount(data), 2)
-
-        obj = self.Object()
-        handler_id = obj.connect_object('sig-with-int64-prop', callback, data)
-        self.assertEqual(sys.getrefcount(data), 2)
-
-        res = obj.emit('sig-with-int64-prop', 42)
-        self.assertEqual(res, 21)
-        self.assertEqual(sys.getrefcount(data), 2)
-
-        del data
-
-        self.assertIsNone(data_ref())
-        self.assertFalse(obj.handler_is_connected(handler_id))
-
-
-class TestRefCountsNonIntrospected(unittest.TestCase, _RefCountTestBase):
-    class Object(GObject.Object):
-        sig_with_int64_prop = GObject.Signal(return_type=GObject.TYPE_INT64,
-                                             arg_types=[GObject.TYPE_INT64],
-                                             flags=GObject.SignalFlags.RUN_LAST)
-
-
-class TestRefCountsIntrospected(unittest.TestCase, _RefCountTestBase):
-    Object = Regress.TestObj
-
-
 if __name__ == '__main__':
     unittest.main()
index 866826e..fe674cd 100644 (file)
@@ -1,14 +1,8 @@
 # -*- Mode: Python -*-
 
-import sys
-import gc
 import unittest
-import warnings
 
 from gi.repository import GLib
-from gi import PyGIDeprecationWarning
-
-from helper import capture_glib_warnings
 
 
 class Idle(GLib.Idle):
@@ -49,35 +43,25 @@ class TestSource(unittest.TestCase):
         timeout.set_callback(self.timeout_callback, loop)
         timeout.attach()
 
-    def test_sources(self):
+    def testSources(self):
         loop = GLib.MainLoop()
 
         self.setup_timeout(loop)
 
         idle = Idle(loop)
-        self.assertEqual(idle.get_context(), None)
         idle.attach()
-        self.assertEqual(idle.get_context(), GLib.main_context_default())
 
         self.pos = 0
 
         m = MySource()
-        self.assertEqual(m.get_context(), None)
         m.set_callback(self.my_callback, loop)
         m.attach()
-        self.assertEqual(m.get_context(), GLib.main_context_default())
 
         loop.run()
 
-        m.destroy()
-        idle.destroy()
-
-        self.assertGreater(self.pos, 0)
-        self.assertGreaterEqual(idle.count, 0)
-        self.assertTrue(m.is_destroyed())
-        self.assertTrue(idle.is_destroyed())
+        assert self.pos >= 0 and idle.count >= 0
 
-    def test_source_prepare(self):
+    def testSourcePrepare(self):
         # this test may not terminate if prepare() is wrapped incorrectly
         dispatched = [False]
         loop = GLib.MainLoop()
@@ -105,7 +89,7 @@ class TestSource(unittest.TestCase):
 
         assert dispatched[0]
 
-    def test_is_destroyed_simple(self):
+    def testIsDestroyedSimple(self):
         s = GLib.Source()
 
         self.assertFalse(s.is_destroyed())
@@ -119,7 +103,7 @@ class TestSource(unittest.TestCase):
         s.destroy()
         self.assertTrue(s.is_destroyed())
 
-    def test_is_destroyed_context(self):
+    def testIsDestroyedContext(self):
         def f():
             c = GLib.MainContext()
             s = GLib.Source()
@@ -127,305 +111,14 @@ class TestSource(unittest.TestCase):
             return s
 
         s = f()
-        gc.collect()
         self.assertTrue(s.is_destroyed())
 
-    def test_remove(self):
-        s = GLib.idle_add(dir)
-        self.assertEqual(GLib.source_remove(s), True)
-
-        # Removing sources not found cause critical
-        with capture_glib_warnings(allow_criticals=True):
-
-            # s is now removed, should fail now
-            self.assertEqual(GLib.source_remove(s), False)
-
-            # accepts large source IDs (they are unsigned)
-            self.assertEqual(GLib.source_remove(GLib.MAXINT32), False)
-            self.assertEqual(GLib.source_remove(GLib.MAXINT32 + 1), False)
-            self.assertEqual(GLib.source_remove(GLib.MAXUINT32), False)
 
-    def test_recurse_property(self):
-        s = GLib.Idle()
-        self.assertTrue(s.can_recurse in [False, True])
-        s.can_recurse = False
-        self.assertFalse(s.can_recurse)
-
-    def test_priority(self):
-        s = GLib.Idle()
-        self.assertEqual(s.priority, GLib.PRIORITY_DEFAULT_IDLE)
-        s.priority = GLib.PRIORITY_HIGH
-        self.assertEqual(s.priority, GLib.PRIORITY_HIGH)
-
-        s = GLib.Idle(GLib.PRIORITY_LOW)
-        self.assertEqual(s.priority, GLib.PRIORITY_LOW)
-
-        s = GLib.Timeout(1, GLib.PRIORITY_LOW)
-        self.assertEqual(s.priority, GLib.PRIORITY_LOW)
-
-        s = GLib.Source()
-        self.assertEqual(s.priority, GLib.PRIORITY_DEFAULT)
-
-    def test_get_current_time(self):
-        # Note, deprecated API
-        s = GLib.Idle()
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter('always')
-            time = s.get_current_time()
-            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
-
-        self.assertTrue(isinstance(time, float))
-        # plausibility check, and check magnitude of result
-        self.assertGreater(time, 1300000000.0)
-        self.assertLess(time, 2000000000.0)
-
-    def test_add_remove_poll(self):
-        # FIXME: very shallow test, only verifies the API signature
-        pollfd = GLib.PollFD(99, GLib.IOCondition.IN | GLib.IOCondition.HUP)
-        self.assertEqual(pollfd.fd, 99)
-        source = GLib.Source()
-        source.add_poll(pollfd)
-        source.remove_poll(pollfd)
-
-    def test_out_of_scope_before_dispatch(self):
-        # https://bugzilla.gnome.org/show_bug.cgi?id=504337
+class TestTimeout(unittest.TestCase):
+    def test504337(self):
         GLib.Timeout(20)
         GLib.Idle()
 
-    @unittest.skipIf(sys.platform == "darwin", "hangs")
-    def test_finalize(self):
-        self.dispatched = False
-        self.finalized = False
-
-        class S(GLib.Source):
-            def prepare(s):
-                return (True, 1)
-
-            def dispatch(s, callback, args):
-                self.dispatched = True
-                return False
-
-            def finalize(s):
-                self.finalized = True
-
-        source = S()
-        self.assertEqual(source.ref_count, 1)
-        source.attach()
-        self.assertEqual(source.ref_count, 2)
-        self.assertFalse(self.finalized)
-        self.assertFalse(source.is_destroyed())
-
-        while source.get_context().iteration(False):
-            pass
-
-        source.destroy()
-        self.assertEqual(source.ref_count, 1)
-        self.assertTrue(self.dispatched)
-        self.assertFalse(self.finalized)
-        self.assertTrue(source.is_destroyed())
-        del source
-        self.assertTrue(self.finalized)
-
-    @unittest.skip('https://bugzilla.gnome.org/show_bug.cgi?id=722387')
-    def test_python_unref_with_active_source(self):
-        # Tests a Python derived Source which is free'd in the context of
-        # Python, but remains active in the MainContext (via source.attach())
-        self.dispatched = False
-        self.finalized = False
-
-        class S(GLib.Source):
-            def prepare(s):
-                return (True, 1)
-
-            def check(s):
-                pass
-
-            def dispatch(s, callback, args):
-                self.dispatched = True
-                return False
-
-            def finalize(s):
-                self.finalized = True
-
-        source = S()
-        id = source.attach()
-        self.assertFalse(self.finalized)
-        self.assertFalse(source.is_destroyed())
-
-        # Delete the source from Python but should still remain
-        # active in the main context.
-        del source
-
-        context = GLib.MainContext.default()
-        while context.iteration(may_block=False):
-            pass
-
-        self.assertTrue(self.dispatched)
-        self.assertFalse(self.finalized)
-
-        source = context.find_source_by_id(id)
-        source.destroy()  # Remove from main context.
-        self.assertTrue(source.is_destroyed())
-
-        # Source should be finalized called after del
-        del source
-        self.assertTrue(self.finalized)
-
-    def test_extra_init_args(self):
-        class SourceWithInitArgs(GLib.Source):
-            def __init__(self, arg, kwarg=None):
-                super(SourceWithInitArgs, self).__init__()
-                self.arg = arg
-                self.kwarg = kwarg
-
-        source = SourceWithInitArgs(1, kwarg=2)
-        self.assertEqual(source.arg, 1)
-        self.assertEqual(source.kwarg, 2)
-
-
-@unittest.skipIf(sys.platform == "darwin", "hangs")
-class TestUserData(unittest.TestCase):
-    def test_idle_no_data(self):
-        ml = GLib.MainLoop()
-
-        def cb():
-            ml.quit()
-        id = GLib.idle_add(cb)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT_IDLE)
-        ml.run()
-
-    def test_timeout_no_data(self):
-        ml = GLib.MainLoop()
-
-        def cb():
-            ml.quit()
-        id = GLib.timeout_add(1, cb)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT)
-        ml.run()
-
-    def test_idle_data(self):
-        ml = GLib.MainLoop()
-
-        def cb(data):
-            data['called'] = True
-            ml.quit()
-        data = {}
-        id = GLib.idle_add(cb, data)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT_IDLE)
-        ml.run()
-        self.assertTrue(data['called'])
-
-    def test_idle_multidata(self):
-        ml = GLib.MainLoop()
-
-        def cb(data, data2):
-            data['called'] = True
-            data['data2'] = data2
-            ml.quit()
-        data = {}
-        id = GLib.idle_add(cb, data, 'hello')
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT_IDLE)
-        ml.run()
-        self.assertTrue(data['called'])
-        self.assertEqual(data['data2'], 'hello')
-
-    def test_timeout_data(self):
-        ml = GLib.MainLoop()
-
-        def cb(data):
-            data['called'] = True
-            ml.quit()
-        data = {}
-        id = GLib.timeout_add(1, cb, data)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT)
-        ml.run()
-        self.assertTrue(data['called'])
-
-    def test_timeout_multidata(self):
-        ml = GLib.MainLoop()
-
-        def cb(data, data2):
-            data['called'] = True
-            data['data2'] = data2
-            ml.quit()
-        data = {}
-        id = GLib.timeout_add(1, cb, data, 'hello')
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_DEFAULT)
-        ml.run()
-        self.assertTrue(data['called'])
-        self.assertEqual(data['data2'], 'hello')
-
-    def test_idle_no_data_priority(self):
-        ml = GLib.MainLoop()
-
-        def cb():
-            ml.quit()
-        id = GLib.idle_add(cb, priority=GLib.PRIORITY_HIGH)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-        ml.run()
-
-    def test_timeout_no_data_priority(self):
-        ml = GLib.MainLoop()
-
-        def cb():
-            ml.quit()
-        id = GLib.timeout_add(1, cb, priority=GLib.PRIORITY_HIGH)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-        ml.run()
-
-    def test_idle_data_priority(self):
-        ml = GLib.MainLoop()
-
-        def cb(data):
-            data['called'] = True
-            ml.quit()
-        data = {}
-        id = GLib.idle_add(cb, data, priority=GLib.PRIORITY_HIGH)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-        ml.run()
-        self.assertTrue(data['called'])
-
-    def test_timeout_data_priority(self):
-        ml = GLib.MainLoop()
-
-        def cb(data):
-            data['called'] = True
-            ml.quit()
-        data = {}
-        id = GLib.timeout_add(1, cb, data, priority=GLib.PRIORITY_HIGH)
-        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-        ml.run()
-        self.assertTrue(data['called'])
-
-    def cb_no_data(self):
-        self.loop.quit()
-
-    def test_idle_method_callback_no_data(self):
-        self.loop = GLib.MainLoop()
-        GLib.idle_add(self.cb_no_data)
-        self.loop.run()
-
-    def cb_with_data(self, data):
-        data['called'] = True
-        self.loop.quit()
-
-    def test_idle_method_callback_with_data(self):
-        self.loop = GLib.MainLoop()
-        data = {}
-        GLib.idle_add(self.cb_with_data, data)
-        self.loop.run()
-        self.assertTrue(data['called'])
-
 
 if __name__ == '__main__':
     unittest.main()
index deea58f..69f5f4c 100644 (file)
 # -*- Mode: Python -*-
 
 import sys
-import os
 import unittest
-import warnings
 
 from gi.repository import GLib
-from gi import PyGIDeprecationWarning
 
 
-@unittest.skipIf(os.name == "nt", "not on Windows")
 class TestProcess(unittest.TestCase):
 
-    def test_deprecated_child_watch_no_data(self):
-        cb = lambda pid, status: None
-        pid = object()
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter('always')
-            res = GLib._child_watch_add_get_args(pid, cb)
-            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
-
-        self.assertEqual(len(res), 4)
-        self.assertEqual(res[0], GLib.PRIORITY_DEFAULT)
-        self.assertEqual(res[1], pid)
-        self.assertTrue(callable(cb))
-        self.assertSequenceEqual(res[3], [])
-
-    def test_deprecated_child_watch_data_priority(self):
-        cb = lambda pid, status: None
-        pid = object()
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter('always')
-            res = GLib._child_watch_add_get_args(pid, cb, 12345, GLib.PRIORITY_HIGH)
-            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
-
-        self.assertEqual(len(res), 4)
-        self.assertEqual(res[0], GLib.PRIORITY_HIGH)
-        self.assertEqual(res[1], pid)
-        self.assertEqual(res[2], cb)
-        self.assertSequenceEqual(res[3], [12345])
-
-    def test_deprecated_child_watch_data_priority_kwargs(self):
-        cb = lambda pid, status: None
-        pid = object()
-        with warnings.catch_warnings(record=True) as w:
-            warnings.simplefilter('always')
-            res = GLib._child_watch_add_get_args(pid, cb, priority=GLib.PRIORITY_HIGH, data=12345)
-            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
-
-        self.assertEqual(len(res), 4)
-        self.assertEqual(res[0], GLib.PRIORITY_HIGH)
-        self.assertEqual(res[1], pid)
-        self.assertEqual(res[2], cb)
-        self.assertSequenceEqual(res[3], [12345])
-
-    @unittest.expectedFailure  # using keyword args is fully supported by PyGObject machinery
-    def test_child_watch_all_kwargs(self):
-        cb = lambda pid, status: None
-        pid = object()
-
-        res = GLib._child_watch_add_get_args(priority=GLib.PRIORITY_HIGH, pid=pid, function=cb, data=12345)
-        self.assertEqual(len(res), 4)
-        self.assertEqual(res[0], GLib.PRIORITY_HIGH)
-        self.assertEqual(res[1], pid)
-        self.assertEqual(res[2], cb)
-        self.assertSequenceEqual(res[3], [12345])
-
-    def test_child_watch_no_data(self):
-        def cb(pid, status):
-            self.status = status
-            self.loop.quit()
-
-        self.status = None
-        self.loop = GLib.MainLoop()
-        argv = [sys.executable, '-c', 'import sys']
-        pid, stdin, stdout, stderr = GLib.spawn_async(
-            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
-        pid.close()
-        id = GLib.child_watch_add(GLib.PRIORITY_HIGH, pid, cb)
-        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
-        self.loop.run()
-        self.assertEqual(self.status, 0)
-
-    def test_child_watch_with_data(self):
-        def cb(pid, status, data):
-            self.status = status
-            self.data = data
-            self.loop.quit()
+    def _child_watch_cb(self, pid, condition, data):
+        self.data = data
+        self.loop.quit()
 
+    def testChildWatch(self):
         self.data = None
-        self.status = None
         self.loop = GLib.MainLoop()
         argv = [sys.executable, '-c', 'import sys']
         pid, stdin, stdout, stderr = GLib.spawn_async(
-            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
-        self.assertEqual(stdin, None)
-        self.assertEqual(stdout, None)
-        self.assertEqual(stderr, None)
-        self.assertNotEqual(pid, 0)
+            argv, flags=GLib.SPAWN_DO_NOT_REAP_CHILD)
         pid.close()
-        id = GLib.child_watch_add(GLib.PRIORITY_HIGH, pid, cb, 12345)
-        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
-                         GLib.PRIORITY_HIGH)
+        GLib.child_watch_add(pid, self._child_watch_cb, 12345)
         self.loop.run()
         self.assertEqual(self.data, 12345)
-        self.assertEqual(self.status, 0)
-
-    def test_spawn_async_fds(self):
-        pid, stdin, stdout, stderr = GLib.spawn_async(
-            ['cat'], flags=GLib.SpawnFlags.SEARCH_PATH, standard_input=True,
-            standard_output=True, standard_error=True)
-        os.write(stdin, b'hello world!\n')
-        os.close(stdin)
-        out = os.read(stdout, 50)
-        os.close(stdout)
-        err = os.read(stderr, 50)
-        os.close(stderr)
-        pid.close()
-        self.assertEqual(out, b'hello world!\n')
-        self.assertEqual(err, b'')
-
-    def test_spawn_async_with_pipes(self):
-        res, pid, stdin, stdout, stderr = GLib.spawn_async_with_pipes(
-            working_directory=None,
-            argv=['cat'],
-            envp=None,
-            flags=GLib.SpawnFlags.SEARCH_PATH)
-
-        os.write(stdin, b'hello world!\n')
-        os.close(stdin)
-        out = os.read(stdout, 50)
-        os.close(stdout)
-        err = os.read(stderr, 50)
-        os.close(stderr)
-        GLib.spawn_close_pid(pid)
-        self.assertEqual(out, b'hello world!\n')
-        self.assertEqual(err, b'')
-
-    def test_spawn_async_envp(self):
-        pid, stdin, stdout, stderr = GLib.spawn_async(
-            ['sh', '-c', 'echo $TEST_VAR'], ['TEST_VAR=moo!'],
-            flags=GLib.SpawnFlags.SEARCH_PATH, standard_output=True)
-        self.assertEqual(stdin, None)
-        self.assertEqual(stderr, None)
-        out = os.read(stdout, 50)
-        os.close(stdout)
-        pid.close()
-        self.assertEqual(out, b'moo!\n')
-
-    def test_backwards_compat_flags(self):
-        with warnings.catch_warnings():
-            warnings.simplefilter('ignore', PyGIDeprecationWarning)
-
-            self.assertEqual(GLib.SpawnFlags.DO_NOT_REAP_CHILD,
-                             GLib.SPAWN_DO_NOT_REAP_CHILD)
index 3da3310..b707bc4 100644 (file)
@@ -9,25 +9,21 @@ from gi.repository import GLib
 class TestThread(unittest.TestCase):
     def setUp(self):
         self.main = GLib.MainLoop()
-        self.called = False
 
     def from_thread_cb(self, test, enum):
         assert test == self.obj
         assert int(enum) == 0
         assert type(enum) != int
-        self.called = True
-        GLib.idle_add(self.timeout_cb)
 
     def idle_cb(self):
         self.obj = testhelper.get_test_thread()
         self.obj.connect('from-thread', self.from_thread_cb)
         self.obj.emit('emit-signal')
 
-    def test_extension_module(self):
+    def testExtensionModule(self):
         GLib.idle_add(self.idle_cb)
-        GLib.timeout_add(2000, self.timeout_cb)
+        GLib.timeout_add(50, self.timeout_cb)
         self.main.run()
-        self.assertTrue(self.called)
 
     def timeout_cb(self):
         self.main.quit()
diff --git a/tests/test_typeclass.py b/tests/test_typeclass.py
deleted file mode 100644 (file)
index 3ece684..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# test_typeclass.py: Tests for GTypeClass related methods and marshalling.
-#
-# Copyright (C) 2014 Simon Feltman <sfeltman@gnome.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
-# USA
-
-import unittest
-
-from gi.repository import GObject
-from gi.repository import GIMarshallingTests
-
-
-class TestCoercion(unittest.TestCase):
-    def test_coerce_from_class(self):
-        prop = GObject.ObjectClass.find_property(GIMarshallingTests.PropertiesObject,
-                                                 'some-int')
-
-        self.assertIsInstance(prop, GObject.GParamSpec)
-        self.assertEqual(prop.name, 'some-int')
-        self.assertEqual(prop.value_type, GObject.TYPE_INT)
-        self.assertEqual(prop.owner_type,
-                         GIMarshallingTests.PropertiesObject.__gtype__)
-
-    def test_coerce_from_gtype(self):
-        gtype = GIMarshallingTests.PropertiesObject.__gtype__
-        prop = GObject.ObjectClass.find_property(gtype, 'some-int')
-
-        self.assertIsInstance(prop, GObject.GParamSpec)
-        self.assertEqual(prop.name, 'some-int')
-        self.assertEqual(prop.value_type, GObject.TYPE_INT)
-        self.assertEqual(prop.owner_type, gtype)
-
-    def test_coerce_from_instance(self):
-        obj = GIMarshallingTests.PropertiesObject()
-        prop = GObject.ObjectClass.find_property(obj, 'some-int')
-
-        self.assertIsInstance(prop, GObject.GParamSpec)
-        self.assertEqual(prop.name, 'some-int')
-        self.assertEqual(prop.value_type, GObject.TYPE_INT)
-        self.assertEqual(prop.owner_type, obj.__gtype__)
-
-    def test_marshalling_error(self):
-        with self.assertRaises(TypeError):
-            GObject.ObjectClass.find_property(object, 'some-int')
-
-        with self.assertRaises(TypeError):
-            GObject.ObjectClass.find_property(42, 'some-int')
-
-
-class TestTypeClassMethodsMovedToClass(unittest.TestCase):
-    def test_list_child_properties(self):
-        pspecs = GIMarshallingTests.PropertiesObject.list_properties()
-        pnames = [pspec.name for pspec in pspecs]
-        self.assertTrue('some-int' in pnames)
-        self.assertTrue('some-float' in pnames)
-        self.assertTrue('some-char' in pnames)
-
-    def test_find_child_property(self):
-        pspec = GIMarshallingTests.PropertiesObject.find_property('some-int')
-        self.assertEqual(pspec.name, 'some-int')
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/tests/test_uris.py b/tests/test_uris.py
new file mode 100644 (file)
index 0000000..095a9dd
--- /dev/null
@@ -0,0 +1,15 @@
+import unittest
+
+from gi.repository import GLib
+
+
+class TestUris(unittest.TestCase):
+    def testExtractUris(self):
+        uri_list_text = "# urn:isbn:0-201-08372-8\n" + \
+                        "http://www.huh.org/books/foo.html\n" + \
+                        "http://www.huh.org/books/foo.pdf\n" + \
+                        "ftp://ftp.foo.org/books/foo.txt\n"
+        uri_list = GLib.uri_list_extract_uris(uri_list_text)
+        assert uri_list[0] == "http://www.huh.org/books/foo.html"
+        assert uri_list[1] == "http://www.huh.org/books/foo.pdf"
+        assert uri_list[2] == "ftp://ftp.foo.org/books/foo.txt"
index 343b14f..592c503 100644 (file)
@@ -7,11 +7,14 @@
 
 #include <pyglib-python-compat.h>
 
+static PyTypeObject *_PyGObject_Type;
+#define PyGObject_Type (*_PyGObject_Type)
+
 static PyObject * _wrap_TestInterface__do_iface_method(PyObject *cls,
                                                       PyObject *args,
                                                       PyObject *kwargs);
 
-static GType
+GType
 test_type_get_type(void)
 {
     static GType gtype = 0;
@@ -147,12 +150,12 @@ _wrap_TestInterface__proxy_do_iface_method(TestInterface *self)
     PyObject *py_args;
     PyObject *py_method;
     
-    __py_state = PyGILState_Ensure();
+    __py_state = pyg_gil_state_ensure();
     py_self = pygobject_new((GObject *) self);
     if (!py_self) {
         if (PyErr_Occurred())
             PyErr_Print();
-        PyGILState_Release(__py_state);
+        pyg_gil_state_release(__py_state);
         return;
     }
     py_args = PyTuple_New(0);
@@ -162,7 +165,7 @@ _wrap_TestInterface__proxy_do_iface_method(TestInterface *self)
             PyErr_Print();
         Py_DECREF(py_args);
         Py_DECREF(py_self);
-        PyGILState_Release(__py_state);
+        pyg_gil_state_release(__py_state);
         return;
     }
     py_retval = PyObject_CallObject(py_method, py_args);
@@ -172,7 +175,7 @@ _wrap_TestInterface__proxy_do_iface_method(TestInterface *self)
         Py_DECREF(py_method);
         Py_DECREF(py_args);
         Py_DECREF(py_self);
-        PyGILState_Release(__py_state);
+        pyg_gil_state_release(__py_state);
         return;
     }
     if (py_retval != Py_None) {
@@ -183,7 +186,7 @@ _wrap_TestInterface__proxy_do_iface_method(TestInterface *self)
         Py_DECREF(py_method);
         Py_DECREF(py_args);
         Py_DECREF(py_self);
-        PyGILState_Release(__py_state);
+        pyg_gil_state_release(__py_state);
         return;
     }
     
@@ -191,7 +194,7 @@ _wrap_TestInterface__proxy_do_iface_method(TestInterface *self)
     Py_DECREF(py_method);
     Py_DECREF(py_args);
     Py_DECREF(py_self);
-    PyGILState_Release(__py_state);
+    pyg_gil_state_release(__py_state);
 }
 
 static void
@@ -319,16 +322,6 @@ test_double_callback (GObject *object, double d)
   return d;
 }
 
-static gint64
-test_int64_callback (GObject *object, gint64 i)
-{
-  g_return_val_if_fail (G_IS_OBJECT (object), -1);
-
-  if (i == G_MAXINT64)
-      return i-1;
-  return i;
-}
-
 static char *
 test_string_callback (GObject *object, char *s)
 {
@@ -346,69 +339,7 @@ test_object_callback (GObject *object, GObject *o)
   return o;
 }
 
-static GParamSpec *
-test_paramspec_callback (GObject *object)
-{
-  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
-
-  return g_param_spec_boolean ("test-param", "test", "test boolean", TRUE, G_PARAM_READABLE);
-}
-
-static GValue *
-test_gvalue_callback (GObject *object, const GValue *v)
-{
-  GValue *ret = g_malloc0 (sizeof (GValue));
-
-  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
-  g_return_val_if_fail (G_IS_VALUE (v), NULL);
-
-  g_value_init (ret, G_VALUE_TYPE (v));
-  g_value_copy (v, ret);
-  return ret;
-}
-
-static GValue *
-test_gvalue_ret_callback (GObject *object, GType type)
-{
-  GValue *ret = g_malloc0 (sizeof (GValue));
-
-  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
-
-  g_value_init (ret, type);
-
-  switch (type) {
-    case G_TYPE_INT:
-      g_value_set_int(ret, G_MAXINT);
-      break;
-    case G_TYPE_INT64:
-      g_value_set_int64(ret, G_MAXINT64);
-      break;
-    case G_TYPE_UINT:
-      g_value_set_uint(ret, G_MAXUINT);
-      break;
-    case G_TYPE_UINT64:
-      g_value_set_uint64(ret, G_MAXUINT64);
-      break;
-    case G_TYPE_STRING:
-      g_value_set_string(ret, "hello");
-      break;
-    default:
-      g_critical ("test_gvalue_ret_callback() does not support type %s", g_type_name (type));
-  }
-
-  return ret;
-}
-
-static GParamSpec *
-test_paramspec_in_callback (GObject *object, GParamSpec *p)
-{
-  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
-  g_return_val_if_fail (G_IS_PARAM_SPEC (p), NULL);
-
-  return p;
-}
-
-static void
+void
 connectcallbacks (GObject *object)
 {
 
@@ -443,10 +374,6 @@ connectcallbacks (GObject *object)
                     G_CALLBACK (test_double_callback), 
                     NULL);
   g_signal_connect (G_OBJECT (object),
-                    "test_int64",
-                    G_CALLBACK (test_int64_callback), 
-                    NULL);
-  g_signal_connect (G_OBJECT (object),
                     "test_string",
                     G_CALLBACK (test_string_callback), 
                     NULL);
@@ -454,22 +381,6 @@ connectcallbacks (GObject *object)
                     "test_object",
                     G_CALLBACK (test_object_callback), 
                     NULL);
-  g_signal_connect (G_OBJECT (object),
-                    "test_paramspec",
-                    G_CALLBACK (test_paramspec_callback), 
-                    NULL);
-  g_signal_connect (G_OBJECT (object),
-                    "test_gvalue",
-                    G_CALLBACK (test_gvalue_callback), 
-                    NULL);
-  g_signal_connect (G_OBJECT (object),
-                    "test_gvalue_ret",
-                    G_CALLBACK (test_gvalue_ret_callback), 
-                    NULL);
-  g_signal_connect (G_OBJECT (object),
-                    "test_paramspec_in",
-                    G_CALLBACK (test_paramspec_in_callback), 
-                    NULL);
 }
 
 static PyObject *
@@ -513,10 +424,7 @@ _wrap_test_value_array(PyObject *self, PyObject *args)
   if (!PyArg_ParseTuple(args, "O", &obj))
     return NULL;
 
-  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
   g_value_init(value, G_TYPE_VALUE_ARRAY);
-  G_GNUC_END_IGNORE_DEPRECATIONS
-
   if (pyg_value_from_pyobject(value, obj)) {
     PyErr_SetString(PyExc_TypeError, "Could not convert to GValueArray");
     return NULL;
@@ -543,6 +451,7 @@ _wrap_test_gerror_exception(PyObject *self, PyObject *args)
         return NULL;
     }      
 
+    Py_DECREF(py_method);
     Py_DECREF(py_args);
     Py_DECREF(py_ret);
 
@@ -612,17 +521,23 @@ static PyMethodDef testhelper_functions[] = {
 
 PYGLIB_MODULE_START(testhelper, "testhelper")
 {
-  PyObject *gobject_module;
   PyObject *m, *d;
-
-
-  if ((gobject_module = pygobject_init(-1, -1, -1)) == NULL)
-    return NULL;
-  Py_DECREF (gobject_module);
+  
+  g_thread_init(NULL);
+  pygobject_init(-1, -1, -1);
 
   d = PyModule_GetDict(module);
 
-  if ((m = PyImport_ImportModule("gi.repository.GObject")) == NULL) {
+  if ((m = PyImport_ImportModule("gi._gobject")) != NULL) {
+    PyObject *moddict = PyModule_GetDict(m);
+    
+    _PyGObject_Type = (PyTypeObject *)PyDict_GetItemString(moddict, "GObject");
+    if (_PyGObject_Type == NULL) {
+      PyErr_SetString(PyExc_ImportError,
+                     "cannot import name GObject from gobject");
+      return PYGLIB_MODULE_ERROR_RETURN;
+    }
+  } else {
     PyErr_SetString(PyExc_ImportError,
                    "could not import gobject");
     return PYGLIB_MODULE_ERROR_RETURN;
index c083f62..3da8ed5 100644 (file)
@@ -7,8 +7,7 @@ class PyGObject(GObject.GObject):
         'label': (GObject.TYPE_STRING,
                   'label property',
                   'the label of the object',
-                  'default',
-                  GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE),
+                  'default', GObject.PARAM_READWRITE),
         }
 
     def __init__(self):