r32403 - in /desktop/unstable/libgnome-keyring/debian: changelog control control.in gir1.2-gnomekeyring-1.0.install libgnome-keyring-dev.install libgnome-keyring0.symbols patches/00git_introspection.patch patches/series rules

mpitt at users.alioth.debian.org mpitt at users.alioth.debian.org
Wed Jan 18 09:42:38 UTC 2012


Author: mpitt
Date: Wed Jan 18 09:42:38 2012
New Revision: 32403

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=32403
Log:
* Add gobject-introspection support: (Closes: #632617, LP: #802173)
  - Add 00git_introspection.patch: Already accepted upstream, backported to
    3.2.2.
  - debian/control.in: Add gir1.2-gnomekeyring-1.0 binary package and GI
    build dependencies. Also add dh-autoreconf build dependency.
  - debian/rules: Use dh-autoreconf cdbs module.
  - Add debian/gir1.2-gnomekeyring-1.0.install: Install typelib.
  - debian/libgnome-keyring-dev.install: Install .gir.
  - debian/libgnome-keyring0.symbols: Add new symbols from
    00git_introspection.patch.

Added:
    desktop/unstable/libgnome-keyring/debian/gir1.2-gnomekeyring-1.0.install
    desktop/unstable/libgnome-keyring/debian/patches/00git_introspection.patch
Modified:
    desktop/unstable/libgnome-keyring/debian/changelog
    desktop/unstable/libgnome-keyring/debian/control
    desktop/unstable/libgnome-keyring/debian/control.in
    desktop/unstable/libgnome-keyring/debian/libgnome-keyring-dev.install
    desktop/unstable/libgnome-keyring/debian/libgnome-keyring0.symbols
    desktop/unstable/libgnome-keyring/debian/patches/series
    desktop/unstable/libgnome-keyring/debian/rules

Modified: desktop/unstable/libgnome-keyring/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/changelog?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/changelog [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/changelog [utf-8] Wed Jan 18 09:42:38 2012
@@ -1,3 +1,18 @@
+libgnome-keyring (3.2.2-2) UNRELEASED; urgency=low
+
+  * Add gobject-introspection support: (Closes: #632617, LP: #802173)
+    - Add 00git_introspection.patch: Already accepted upstream, backported to
+      3.2.2.
+    - debian/control.in: Add gir1.2-gnomekeyring-1.0 binary package and GI
+      build dependencies. Also add dh-autoreconf build dependency.
+    - debian/rules: Use dh-autoreconf cdbs module.
+    - Add debian/gir1.2-gnomekeyring-1.0.install: Install typelib.
+    - debian/libgnome-keyring-dev.install: Install .gir.
+    - debian/libgnome-keyring0.symbols: Add new symbols from
+      00git_introspection.patch.
+
+ -- Martin Pitt <mpitt at debian.org>  Wed, 18 Jan 2012 10:22:07 +0100
+
 libgnome-keyring (3.2.2-1) unstable; urgency=low
 
   [ Josselin Mouette ]

Modified: desktop/unstable/libgnome-keyring/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/control?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/control [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/control [utf-8] Wed Jan 18 09:42:38 2012
@@ -10,6 +10,7 @@
 Uploaders: Jordi Mallach <jordi at debian.org>, Michael Biebl <biebl at debian.org>, Sebastian Dröge <slomo at debian.org>
 Build-Depends: debhelper (>= 8.1.3~),
                cdbs (>= 0.4.93~),
+               dh-autoreconf,
                gnome-pkg-tools (>= 0.10),
                intltool (>= 0.35.0),
                libglib2.0-dev (>= 2.16.0),
@@ -17,6 +18,8 @@
                docbook-xml,
                libdbus-1-dev (>= 1.0),
                libgcrypt11-dev (>= 1.2.2),
+               gobject-introspection (>= 1.30),
+               libgirepository1.0-dev (>= 1.30),
                libglib2.0-doc,
                gnome-keyring
 Standards-Version: 3.9.2
@@ -29,6 +32,7 @@
 Architecture: any
 Depends: ${misc:Depends},
          libgnome-keyring0 (= ${binary:Version}),
+         gir1.2-gnomekeyring-1.0 (= ${binary:Version}),
          libglib2.0-dev (>= 2.16)
 Description: Development files for GNOME keyring service
  gnome-keyring is a daemon in the session, similar to ssh-agent,
@@ -101,3 +105,24 @@
  libraries.
  .
  Most people should not need this package.
+
+Package: gir1.2-gnomekeyring-1.0
+Section: introspection
+Architecture: any
+Depends: libgnome-keyring0 (= ${binary:Version}),
+         ${gir:Depends},
+         ${misc:Depends},
+         ${shlibs:Depends}
+Description: GNOME keyring services library - introspection data
+ gnome-keyring is a daemon in the session, similar to ssh-agent,
+ and other applications can use it to store passwords and other
+ sensitive information.
+ .
+ The program can manage several keyrings, each with its own master
+ password, and there is also a session keyring which is never stored to
+ disk, but forgotten when the session ends.
+ .
+ This package provides introspection data for libgnome-keyring. It can
+ be used by packages using the GIRepository format to generate dynamic
+ bindings.
+

Modified: desktop/unstable/libgnome-keyring/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/control.in?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/control.in [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/control.in [utf-8] Wed Jan 18 09:42:38 2012
@@ -5,6 +5,7 @@
 Uploaders: @GNOME_TEAM@
 Build-Depends: debhelper (>= 8.1.3~),
                cdbs (>= 0.4.93~),
+               dh-autoreconf,
                gnome-pkg-tools (>= 0.10),
                intltool (>= 0.35.0),
                libglib2.0-dev (>= 2.16.0),
@@ -12,6 +13,8 @@
                docbook-xml,
                libdbus-1-dev (>= 1.0),
                libgcrypt11-dev (>= 1.2.2),
+               gobject-introspection (>= 1.30),
+               libgirepository1.0-dev (>= 1.30),
                libglib2.0-doc,
                gnome-keyring
 Standards-Version: 3.9.2
@@ -24,6 +27,7 @@
 Architecture: any
 Depends: ${misc:Depends},
          libgnome-keyring0 (= ${binary:Version}),
+         gir1.2-gnomekeyring-1.0 (= ${binary:Version}),
          libglib2.0-dev (>= 2.16)
 Description: Development files for GNOME keyring service
  gnome-keyring is a daemon in the session, similar to ssh-agent,
@@ -96,3 +100,24 @@
  libraries.
  .
  Most people should not need this package.
+
+Package: gir1.2-gnomekeyring-1.0
+Section: introspection
+Architecture: any
+Depends: libgnome-keyring0 (= ${binary:Version}),
+         ${gir:Depends},
+         ${misc:Depends},
+         ${shlibs:Depends}
+Description: GNOME keyring services library - introspection data
+ gnome-keyring is a daemon in the session, similar to ssh-agent,
+ and other applications can use it to store passwords and other
+ sensitive information.
+ .
+ The program can manage several keyrings, each with its own master
+ password, and there is also a session keyring which is never stored to
+ disk, but forgotten when the session ends.
+ .
+ This package provides introspection data for libgnome-keyring. It can
+ be used by packages using the GIRepository format to generate dynamic
+ bindings.
+

Added: desktop/unstable/libgnome-keyring/debian/gir1.2-gnomekeyring-1.0.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/gir1.2-gnomekeyring-1.0.install?rev=32403&op=file
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/gir1.2-gnomekeyring-1.0.install (added)
+++ desktop/unstable/libgnome-keyring/debian/gir1.2-gnomekeyring-1.0.install [utf-8] Wed Jan 18 09:42:38 2012
@@ -1,0 +1,1 @@
+usr/lib/*/girepository-1.0/* usr/lib/girepository-1.0/

Modified: desktop/unstable/libgnome-keyring/debian/libgnome-keyring-dev.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/libgnome-keyring-dev.install?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/libgnome-keyring-dev.install [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/libgnome-keyring-dev.install [utf-8] Wed Jan 18 09:42:38 2012
@@ -3,3 +3,4 @@
 usr/lib/*/libgnome-keyring.so
 usr/lib/*/pkgconfig/gnome-keyring*.pc
 usr/share/gtk-doc/html/gnome-keyring*
+usr/share/gir*/

Modified: desktop/unstable/libgnome-keyring/debian/libgnome-keyring0.symbols
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/libgnome-keyring0.symbols?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/libgnome-keyring0.symbols [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/libgnome-keyring0.symbols [utf-8] Wed Jan 18 09:42:38 2012
@@ -3,16 +3,24 @@
  GNOME_KEYRING_NETWORK_PASSWORD at Base 2.22.2
  gnome_keyring_access_control_copy at Base 2.20.3
  gnome_keyring_access_control_free at Base 2.20.3
+ gnome_keyring_access_control_get_type at Base 3.2.2-2~
  gnome_keyring_access_control_new at Base 2.20.3
  gnome_keyring_acl_copy at Base 2.20.3
  gnome_keyring_acl_free at Base 2.20.3
  gnome_keyring_application_ref_copy at Base 2.20.3
  gnome_keyring_application_ref_free at Base 2.20.3
+ gnome_keyring_application_ref_get_type at Base 3.2.2-2~
  gnome_keyring_application_ref_new at Base 2.20.3
+ gnome_keyring_attribute_get_string at Base 3.2.2-2~
+ gnome_keyring_attribute_get_type at Base 3.2.2-2~
+ gnome_keyring_attribute_get_uint32 at Base 3.2.2-2~
  gnome_keyring_attribute_list_append_string at Base 2.20.3
  gnome_keyring_attribute_list_append_uint32 at Base 2.20.3
  gnome_keyring_attribute_list_copy at Base 2.20.3
  gnome_keyring_attribute_list_free at Base 2.20.3
+ gnome_keyring_attribute_list_get_type at Base 3.2.2-2~
+ gnome_keyring_attribute_list_new at Base 3.2.2-2~
+ gnome_keyring_attribute_list_to_glist at Base 3.2.2-2~
  gnome_keyring_cancel_request at Base 2.20.3
  gnome_keyring_change_password at Base 2.20.3
  gnome_keyring_change_password_sync at Base 2.20.3
@@ -32,7 +40,9 @@
  gnome_keyring_find_network_password_sync at Base 2.20.3
  gnome_keyring_find_password at Base 2.22.2
  gnome_keyring_find_password_sync at Base 2.22.2
+ gnome_keyring_found_copy at Base 3.2.2-2~
  gnome_keyring_found_free at Base 2.20.3
+ gnome_keyring_found_get_type at Base 3.2.2-2~
  gnome_keyring_found_list_free at Base 2.20.3
  gnome_keyring_free_password at Base 2.20.3
  gnome_keyring_get_default_keyring at Base 2.20.3
@@ -46,6 +56,7 @@
  gnome_keyring_info_get_lock_on_idle at Base 2.20.3
  gnome_keyring_info_get_lock_timeout at Base 2.20.3
  gnome_keyring_info_get_mtime at Base 2.20.3
+ gnome_keyring_info_get_type at Base 3.2.2-2~
  gnome_keyring_info_set_lock_on_idle at Base 2.20.3
  gnome_keyring_info_set_lock_timeout at Base 2.20.3
  gnome_keyring_is_available at Base 2.20.3
@@ -73,6 +84,7 @@
  gnome_keyring_item_info_free at Base 2.20.3
  gnome_keyring_item_info_get_ctime at Base 2.20.3
  gnome_keyring_item_info_get_display_name at Base 2.20.3
+ gnome_keyring_item_info_get_gtype at Base 3.2.2-2~
  gnome_keyring_item_info_get_mtime at Base 2.20.3
  gnome_keyring_item_info_get_secret at Base 2.20.3
  gnome_keyring_item_info_get_type at Base 2.20.3

Added: desktop/unstable/libgnome-keyring/debian/patches/00git_introspection.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/patches/00git_introspection.patch?rev=32403&op=file
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/patches/00git_introspection.patch (added)
+++ desktop/unstable/libgnome-keyring/debian/patches/00git_introspection.patch [utf-8] Wed Jan 18 09:42:38 2012
@@ -1,0 +1,2200 @@
+Description: Add gobject-introspection support
+Author: Martin Pitt <martin.pitt at ubuntu.com>
+Bug: https://bugzilla.gnome.org/show_bug.cgi?id=598414
+Bug-Debian: http://bugs.debian.org/632617
+Bug-Ubuntu: https://launchpad.net/bugs/802173
+
+Index: libgnome-keyring/Makefile.am
+===================================================================
+--- libgnome-keyring.orig/Makefile.am	2011-09-05 07:16:09.000000000 +0200
++++ libgnome-keyring/Makefile.am	2012-01-18 10:20:19.557789286 +0100
+@@ -11,10 +11,12 @@
+ 	intltool-merge.in \
+ 	intltool-update.in \
+ 	HACKING \
+-	COPYING.GPL
++	COPYING.GPL \
++	m4/introspection.m4
+ 
+ DISTCHECK_CONFIGURE_FLAGS = \
+ 	--enable-gtk-doc \
++	--enable-introspection \
+ 	--enable-tests=yes \
+ 	--enable-debug=yes
+ 
+Index: libgnome-keyring/configure.ac
+===================================================================
+--- libgnome-keyring.orig/configure.ac	2011-11-14 11:20:38.000000000 +0100
++++ libgnome-keyring/configure.ac	2012-01-18 10:20:19.561789285 +0100
+@@ -20,7 +20,7 @@
+ IT_PROG_INTLTOOL([0.35.0])
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ 
+-LIB_GNOME_KEYRING_LT_VERSION=1:1:1
++LIB_GNOME_KEYRING_LT_VERSION=2:0:2
+ AC_SUBST(LIB_GNOME_KEYRING_LT_VERSION)
+ 
+ version_bits=`echo $VERSION | tr '.' ' '`
+@@ -36,7 +36,7 @@
+ DISTCHECK_CONFIGURE_FLAGS="--enable-gtk-doc"
+ AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
+ 
+-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16.0)
++PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16.0 gobject-2.0)
+ AC_SUBST(GLIB_CFLAGS)
+ AC_SUBST(GLIB_LIBS)
+ 
+@@ -49,6 +49,9 @@
+ 
+ AM_GLIB_GNU_GETTEXT
+ 
++# Introspection
++GOBJECT_INTROSPECTION_CHECK([1.30.0])
++
+ # --------------------------------------------------------------------
+ # Check for various credentials.
+ #
+@@ -236,6 +239,7 @@
+ echo "CFLAGS: $CFLAGS"
+ echo
+ echo "OPTIONS:"
++echo "  Introspection:        $found_introspection"
+ echo "  Debug Build:          $debug_status"
+ echo "  Tests:                $tests_status"
+ echo
+Index: libgnome-keyring/docs/reference/gnome-keyring/gnome-keyring-docs.sgml
+===================================================================
+--- libgnome-keyring.orig/docs/reference/gnome-keyring/gnome-keyring-docs.sgml	2009-12-04 03:53:43.000000000 +0100
++++ libgnome-keyring/docs/reference/gnome-keyring/gnome-keyring-docs.sgml	2012-01-18 10:20:19.561789285 +0100
+@@ -23,4 +23,8 @@
+ 		<xi:include href="xml/gnome-keyring-daemon.xml"/>
+ 		<xi:include href="xml/gnome-keyring-generic-callbacks.xml"/>
+ 	</chapter>
++
++	<xi:include href="xml/annotation-glossary.xml">
++		<xi:fallback />
++	</xi:include>
+ </book>
+Index: libgnome-keyring/docs/reference/gnome-keyring/gnome-keyring-sections.txt
+===================================================================
+--- libgnome-keyring.orig/docs/reference/gnome-keyring/gnome-keyring-sections.txt	2011-11-14 11:23:22.000000000 +0100
++++ libgnome-keyring/docs/reference/gnome-keyring/gnome-keyring-sections.txt	2012-01-18 10:20:19.561789285 +0100
+@@ -40,6 +40,7 @@
+ gnome_keyring_list_item_ids
+ gnome_keyring_list_item_ids_sync
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-keyring-info</FILE>
+ GnomeKeyringInfo
+@@ -52,7 +53,11 @@
+ gnome_keyring_info_get_mtime
+ gnome_keyring_info_get_ctime
+ gnome_keyring_info_get_is_locked
++<SUBSECTION Standard>
++gnome_keyring_info_get_type
++GNOME_KEYRING_TYPE_INFO
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-items</FILE>
+ GnomeKeyringItemInfoFlags
+@@ -83,6 +88,7 @@
+ GNOME_KEYRING_ITEM_NO_TYPE
+ GNOME_KEYRING_ITEM_TYPE_MASK
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-item-info</FILE>
+ GnomeKeyringItemType
+@@ -98,17 +104,26 @@
+ gnome_keyring_item_info_set_display_name
+ gnome_keyring_item_info_get_mtime
+ gnome_keyring_item_info_get_ctime
++<SUBSECTION Standard>
++gnome_keyring_item_info_get_gtype
++GNOME_KEYRING_TYPE_ITEM_INFO
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-find</FILE>
+ GnomeKeyringFound
++gnome_keyring_found_copy
+ gnome_keyring_found_free
+ gnome_keyring_found_list_free
+ gnome_keyring_find_items
+ gnome_keyring_find_itemsv
+ gnome_keyring_find_items_sync
+ gnome_keyring_find_itemsv_sync
++<SUBSECTION Standard>
++gnome_keyring_found_get_type
++GNOME_KEYRING_TYPE_FOUND
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-attributes</FILE>
+ GnomeKeyringAttributeType
+@@ -120,7 +135,16 @@
+ gnome_keyring_attribute_list_append_uint32
+ gnome_keyring_attribute_list_free
+ gnome_keyring_attribute_list_copy
++gnome_keyring_attribute_get_string
++gnome_keyring_attribute_get_uint32
++<SUBSECTION Standard>
++gnome_keyring_attribute_get_type
++GNOME_KEYRING_TYPE_ATTRIBUTE
++gnome_keyring_attribute_list_get_type
++GNOME_KEYRING_TYPE_ATTRIBUTE_LIST
++gnome_keyring_attribute_list_to_glist
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-acl</FILE>
+ GnomeKeyringAccessControl
+@@ -141,7 +165,13 @@
+ gnome_keyring_item_ac_set_path_name
+ gnome_keyring_item_ac_get_access_type
+ gnome_keyring_item_ac_set_access_type
++<SUBSECTION Standard>
++gnome_keyring_access_control_get_type
++GNOME_KEYRING_TYPE_ACCESS_CONTROL
++gnome_keyring_application_ref_get_type
++GNOME_KEYRING_TYPE_APPLICATION_REF
+ </SECTION>
++
+ <SECTION>
+ <FILE>gnome-keyring-network</FILE>
+ GnomeKeyringNetworkPasswordData
+Index: libgnome-keyring/library/Makefile.am
+===================================================================
+--- libgnome-keyring.orig/library/Makefile.am	2011-09-05 07:16:09.000000000 +0200
++++ libgnome-keyring/library/Makefile.am	2012-01-18 10:20:19.561789285 +0100
+@@ -47,6 +47,34 @@
+ EXTRA_DIST = \
+ 	gnome-keyring-1-uninstalled.pc.in
+ 
++CLEANFILES=
++
++# build introspection typelib
++-include $(INTROSPECTION_MAKEFILE)
++INTROSPECTION_GIRS =
++INTROSPECTION_SCANNER_ARGS = --add-include-path=$(srcdir) --warn-all
++INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir)
++
++if HAVE_INTROSPECTION
++# the gkr-* files are not part of the public API
++introspection_sources = $(filter-out gkr-% %-private.h,$(libgnome_keyring_la_SOURCES))
++
++GnomeKeyring-1.0.gir: $(lib_LTLIBRARIES)
++GnomeKeyring_1_0_gir_INCLUDES = GObject-2.0
++GnomeKeyring_1_0_gir_CFLAGS = $(INCLUDES)
++GnomeKeyring_1_0_gir_LIBS = $(lib_LTLIBRARIES)
++GnomeKeyring_1_0_gir_FILES = $(introspection_sources)
++INTROSPECTION_GIRS += GnomeKeyring-1.0.gir
++
++girdir = $(datadir)/gir-1.0
++gir_DATA = $(INTROSPECTION_GIRS)
++
++typelibdir = $(libdir)/girepository-1.0
++typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
++
++CLEANFILES += $(gir_DATA) $(typelib_DATA)
++endif
++
+ if WITH_TESTS
+ TESTS_DIR = tests
+ else
+Index: libgnome-keyring/library/gnome-keyring-memory.c
+===================================================================
+--- libgnome-keyring.orig/library/gnome-keyring-memory.c	2009-12-04 03:53:43.000000000 +0100
++++ libgnome-keyring/library/gnome-keyring-memory.c	2012-01-18 10:20:19.561789285 +0100
+@@ -112,7 +112,7 @@
+  */
+ 
+ /**
+- * gnome_keyring_memory_alloc:
++ * gnome_keyring_memory_alloc: (skip)
+  * @sz: The new desired size of the memory block.
+  *
+  * Allocate a block of gnome-keyring non-pageable memory.
+@@ -120,8 +120,8 @@
+  * If non-pageable memory cannot be allocated then normal memory will be
+  * returned.
+  *
+- * Return value:  The new memory block which should be freed with
+- * gnome_keyring_memory_free()
++ * Return value: (transfer full): The new memory block which should be freed
++ * with gnome_keyring_memory_free()
+  **/
+ gpointer
+ gnome_keyring_memory_alloc (gulong sz)
+@@ -138,15 +138,15 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_try_alloc:
++ * gnome_keyring_memory_try_alloc: (skip)
+  * @sz: The new desired size of the memory block.
+  *
+  * Allocate a block of gnome-keyring non-pageable memory.
+  *
+- * If non-pageable memory cannot be allocated, then NULL is returned.
++ * If non-pageable memory cannot be allocated, then %NULL is returned.
+  *
+- * Return value: The new block, or NULL if memory cannot be allocated.
+- * The memory block should be freed with gnome_keyring_memory_free()
++ * Return value: (transfer full): The new block, or %NULL if memory cannot be
++ * allocated. The memory block should be freed with gnome_keyring_memory_free()
+  */
+ gpointer
+ gnome_keyring_memory_try_alloc (gulong sz)
+@@ -155,8 +155,9 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_realloc:
+- * @p: The pointer to reallocate or NULL to allocate a new block.
++ * gnome_keyring_memory_realloc: (skip)
++ * @p: (allow-none): The pointer to reallocate or %NULL to allocate a new
++ *     block.
+  * @sz: The new desired size of the memory block, or 0 to free the memory.
+  *
+  * Reallocate a block of gnome-keyring non-pageable memory.
+@@ -168,8 +169,8 @@
+  * If non-pageable memory cannot be allocated then normal memory will be
+  * returned.
+  *
+- * Return value: The new block, or NULL if the block was freed.
+- * The memory block should be freed with gnome_keyring_memory_free()
++ * Return value: (transfer full): The new block, or %NULL if the block was
++ * freed. The memory block should be freed with gnome_keyring_memory_free()
+  */
+ gpointer
+ gnome_keyring_memory_realloc (gpointer p, gulong sz)
+@@ -194,8 +195,8 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_try_realloc:
+- * @p: The pointer to reallocate or NULL to allocate a new block.
++ * gnome_keyring_memory_try_realloc: (skip)
++ * @p: (allow-none): The pointer to reallocate or %NULL to allocate a new block.
+  * @sz: The new desired size of the memory block.
+  *
+  * Reallocate a block of gnome-keyring non-pageable memory.
+@@ -204,11 +205,11 @@
+  * If called with a null pointer, then a new block of memory is allocated.
+  * If called with a zero size, then the block of memory is freed.
+  *
+- * If memory cannot be allocated, NULL is returned and the original block
++ * If memory cannot be allocated, %NULL is returned and the original block
+  * of memory remains intact.
+  *
+- * Return value: The new block, or NULL if memory cannot be allocated.
+- * The memory block should be freed with gnome_keyring_memory_free()
++ * Return value: (transfer full): The new block, or %NULL if memory cannot be
++ * allocated. The memory block should be freed with gnome_keyring_memory_free()
+  */
+ gpointer
+ gnome_keyring_memory_try_realloc (gpointer p, gulong sz)
+@@ -233,7 +234,7 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_free:
++ * gnome_keyring_memory_free: (skip)
+  * @p: The pointer to the beginning of the block of memory to free.
+  *
+  * Free a block of gnome-keyring non-pageable memory.
+@@ -250,7 +251,7 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_is_secure:
++ * gnome_keyring_memory_is_secure: (skip)
+  * @p: The pointer to check
+  *
+  * Check if a pointer is in non-pageable memory allocated by gnome-keyring.
+@@ -264,7 +265,7 @@
+ }
+ 
+ /**
+- * gnome_keyring_memory_strdup:
++ * gnome_keyring_memory_strdup: (skip)
+  * @str: The null terminated string to copy
+  *
+  * Copy a string into non-pageable memory. If the input string is %NULL, then
+Index: libgnome-keyring/library/gnome-keyring-utils.c
+===================================================================
+--- libgnome-keyring.orig/library/gnome-keyring-utils.c	2011-09-05 07:16:09.000000000 +0200
++++ libgnome-keyring/library/gnome-keyring-utils.c	2012-01-18 10:20:19.561789285 +0100
+@@ -139,7 +139,7 @@
+ 
+ /**
+  * gnome_keyring_string_list_free:
+- * @strings: A %GList of string pointers.
++ * @strings: (element-type utf8): A %GList of string pointers.
+  *
+  * Free a list of string pointers.
+  **/
+@@ -224,8 +224,38 @@
+ }
+ 
+ /**
++ * gnome_keyring_found_copy:
++ * @found: a #GnomeKeyringFound
++ *
++ * Copy a #GnomeKeyringFound item.
++ *
++ * Return value: (transfer full): The new #GnomeKeyringFound
++ */
++GnomeKeyringFound*
++gnome_keyring_found_copy (GnomeKeyringFound *found)
++{
++	GnomeKeyringFound *copy;
++
++	if (found == NULL)
++		return NULL;
++
++	copy = g_new (GnomeKeyringFound, 1);
++	copy->keyring = g_strdup (found->keyring);
++	copy->item_id = found->item_id;
++	copy->attributes = gnome_keyring_attribute_list_copy (found->attributes);
++	copy->secret = egg_secure_strdup (found->secret);
++
++	return copy;
++}
++
++G_DEFINE_BOXED_TYPE (GnomeKeyringFound,
++	gnome_keyring_found,
++	gnome_keyring_found_copy,
++	gnome_keyring_found_free);
++
++/**
+  * gnome_keyring_found_list_free:
+- * @found_list: a #GList of #GnomeKeyringFound
++ * @found_list: (element-type GnomeKeyringFound): a #GList of #GnomeKeyringFound
+  *
+  * Free the memory used by the #GnomeKeyringFound items in @found_list.
+  **/
+@@ -249,6 +279,96 @@
+  **/
+ 
+ /**
++ * gnome_keyring_attribute_get_string:
++ * @attribute: a #GnomeKeyringAttribute
++ *
++ * Return the string value. It is an error to call this method if
++ * @attribute.type is not #GNOME_KEYRING_ATTRIBUTE_TYPE_STRING. This method is
++ * mostly useful for language bindings which do not provide union access. In C
++ * you should just use attribute->value.string.
++ *
++ * Returns: (transfer none): The value.string pointer of @attribute. This is
++ * not a copy, do not free.
++ **/
++const gchar*
++gnome_keyring_attribute_get_string (GnomeKeyringAttribute *attribute)
++{
++	g_return_val_if_fail (attribute->type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING, NULL);
++	return attribute->value.string;
++}
++
++/**
++ * gnome_keyring_attribute_get_uint32:
++ * @attribute: a #GnomeKeyringAttribute
++ *
++ * Return the uint32 value. It is an error to call this method if
++ * @attribute.type is not #GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32. This method is
++ * mostly useful for language bindings which do not provide union access. In C
++ * you should just use attribute->value.integer.
++ *
++ * Returns: The value.integer of @attribute.
++ **/
++guint32
++gnome_keyring_attribute_get_uint32 (GnomeKeyringAttribute *attribute)
++{
++	g_return_val_if_fail (attribute->type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32, 0);
++	return attribute->value.integer;
++}
++
++/**
++ * gnome_keyring_attribute_free:
++ * @attribute: a #GnomeKeyringAttribute.
++ *
++ * Free the memory used by the #GnomeKeyringAttribute @attribute.
++ **/
++static void
++gnome_keyring_attribute_free (GnomeKeyringAttribute *attribute)
++{
++	if (attribute == NULL)
++		return;
++
++	g_free (attribute->name);
++	if (attribute->type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
++		g_free (attribute->value.string);
++	}
++	g_free (attribute);
++}
++
++/**
++ * gnome_keyring_attribute_copy:
++ * @attribute: a #GnomeKeyringAttribute to copy.
++ *
++ * Copy a #GnomeKeyringAttribute.
++ *
++ * Return value: (transfer full): The new #GnomeKeyringAttribute
++ **/
++static GnomeKeyringAttribute*
++gnome_keyring_attribute_copy (GnomeKeyringAttribute *attribute)
++{
++	GnomeKeyringAttribute *copy;
++
++	if (attribute == NULL)
++		return NULL;
++
++	copy = g_new (GnomeKeyringAttribute, 1);
++	copy->name = g_strdup (attribute->name);
++	copy->type = attribute->type;
++	if (attribute->type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
++		copy->value.string = g_strdup (attribute->value.string);
++	} else {
++		copy->value.integer = attribute->value.integer;
++	}
++
++	return copy;
++}
++
++G_DEFINE_BOXED_TYPE (GnomeKeyringAttribute,
++	gnome_keyring_attribute,
++	gnome_keyring_attribute_copy,
++	gnome_keyring_attribute_free);
++
++
++/**
+  * gnome_keyring_attribute_list_append_string:
+  * @attributes: A #GnomeKeyringAttributeList
+  * @name: The name of the new attribute
+@@ -296,6 +416,19 @@
+ }
+ 
+ /**
++ * gnome_keyring_attribute_list_new:
++ *
++ * Create a new #GnomeKeyringAttributeList.
++ *
++ * Return value: (transfer full): The new #GnomeKeyringAttributeList
++ **/
++GnomeKeyringAttributeList *
++gnome_keyring_attribute_list_new (void)
++{
++	return g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
++}
++
++/**
+  * gnome_keyring_attribute_list_free:
+  * @attributes: A #GnomeKeyringAttributeList
+  *
+@@ -329,7 +462,7 @@
+  *
+  * Copy a list of item attributes.
+  *
+- * Return value: The new #GnomeKeyringAttributeList
++ * Return value: (transfer full): The new #GnomeKeyringAttributeList
+  **/
+ GnomeKeyringAttributeList *
+ gnome_keyring_attribute_list_copy (GnomeKeyringAttributeList *attributes)
+@@ -357,6 +490,41 @@
+ }
+ 
+ /**
++ * gnome_keyring_attribute_list_to_glist:
++ * @attributes: A #GnomeKeyringAttributeList
++ *
++ * Create #GList of #GnomeKeyringAttribute pointers from @attributes. This is
++ * mostly useful in language bindings which cannot directly use a #GArray.
++ *
++ * Returns: (transfer full) (element-type GnomeKeyringAttribute): #GList
++ * of #GnomeKeyringAttribute.
++ *
++ * Since: 3.4
++ **/
++GList*
++gnome_keyring_attribute_list_to_glist (GnomeKeyringAttributeList *attributes)
++{
++	GList *list = NULL;
++	GnomeKeyringAttribute *attr;
++	guint i;
++
++	if (attributes == NULL)
++		return NULL;
++
++	for (i = 0; i < attributes->len; ++i) {
++		attr = &g_array_index (attributes, GnomeKeyringAttribute, i);
++		list = g_list_append (list, gnome_keyring_attribute_copy (attr));
++	}
++
++	return list;
++}
++
++G_DEFINE_BOXED_TYPE (GnomeKeyringAttributeList,
++	gnome_keyring_attribute_list,
++	gnome_keyring_attribute_list_copy,
++	gnome_keyring_attribute_list_free);
++
++/**
+  * SECTION:gnome-keyring-keyring-info
+  * @title: Keyring Info
+  * @short_description: Keyring Information
+@@ -410,6 +578,11 @@
+ 	return copy;
+ }
+ 
++G_DEFINE_BOXED_TYPE (GnomeKeyringInfo,
++	gnome_keyring_info,
++	gnome_keyring_info_copy,
++	gnome_keyring_info_free);
++
+ /**
+  * gnome_keyring_item_info_free:
+  * @item_info: The keyring item info pointer.
+@@ -473,6 +646,24 @@
+ 	return copy;
+ }
+ 
++/* gnome_keyring_item_info_get_type() is already part of the API, cannot use
++ * G_DEFINE_BOXED_TYPE here */
++GType
++gnome_keyring_item_info_get_gtype (void)
++{
++    static volatile gsize initialized = 0;
++    static GType type = 0;
++
++    if (g_once_init_enter (&initialized)) {
++	type = g_boxed_type_register_static ("GnomeKeyringItemInfo",
++	    (GBoxedCopyFunc) gnome_keyring_item_info_copy,
++	    (GBoxedFreeFunc) gnome_keyring_item_info_free);
++	g_once_init_leave (&initialized, 1);
++    }
++
++    return type;
++}
++
+ /**
+  * gnome_keyring_application_ref_new:
+  *
+@@ -529,6 +720,11 @@
+ 	return copy;
+ }
+ 
++G_DEFINE_BOXED_TYPE (GnomeKeyringApplicationRef,
++	gnome_keyring_application_ref,
++	gnome_keyring_application_ref_copy,
++	gnome_keyring_application_ref_free);
++
+ /**
+  * gnome_keyring_access_control_new:
+  * @application: A #GnomeKeyringApplicationRef pointer
+@@ -590,14 +786,21 @@
+ 	return ret;
+ }
+ 
++G_DEFINE_BOXED_TYPE (GnomeKeyringAccessControl,
++	gnome_keyring_access_control,
++	gnome_keyring_access_control_copy,
++	gnome_keyring_access_control_free);
++
+ /**
+  * gnome_keyring_acl_copy:
+- * @list: A list of #GnomeKeyringAccessControl pointers.
++ * @list: (element-type GnomeKeyringAccessControl): A list of
++ *        #GnomeKeyringAccessControl pointers.
+  *
+  * Copy an access control list.
+  *
+- * Return value: A new list of #GnomeKeyringAccessControl items. Use
+- * gnome_keyring_acl_free() to free the memory.
++ * Return value: (transfer full) (element-type GnomeKeyringAccessControl):
++ * A new list of #GnomeKeyringAccessControl items. Use gnome_keyring_acl_free()
++ * to free the memory.
+  **/
+ GList *
+ gnome_keyring_acl_copy (GList *list)
+@@ -614,7 +817,8 @@
+ 
+ /**
+  * gnome_keyring_acl_free:
+- * @acl: A list of #GnomeKeyringAccessControl pointers.
++ * @acl: (element-type GnomeKeyringAccessControl): A list of
++ *       #GnomeKeyringAccessControl pointers.
+  *
+  * Free an access control list.
+  **/
+Index: libgnome-keyring/library/gnome-keyring.c
+===================================================================
+--- libgnome-keyring.orig/library/gnome-keyring.c	2011-10-20 17:00:14.000000000 +0200
++++ libgnome-keyring/library/gnome-keyring.c	2012-01-18 10:20:19.565789285 +0100
+@@ -567,17 +567,19 @@
+ }
+ 
+ /**
+- * gnome_keyring_set_default_keyring:
++ * gnome_keyring_set_default_keyring: (skip)
+  * @keyring: The keyring to make default
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Change the default keyring.
+  *
+  * For a synchronous version of this function see gnome_keyring_set_default_keyring_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_set_default_keyring (const gchar                             *keyring,
+@@ -681,9 +683,10 @@
+ }
+ 
+ /**
+- * gnome_keyring_get_default_keyring:
++ * gnome_keyring_get_default_keyring: (skip)
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get the default keyring name, which will be passed to the @callback. If no
+@@ -692,7 +695,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_get_default_keyring_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_get_default_keyring (GnomeKeyringOperationGetStringCallback  callback,
+@@ -709,7 +713,7 @@
+ 
+ /**
+  * gnome_keyring_get_default_keyring_sync:
+- * @keyring: Location for the default keyring name to be returned.
++ * @keyring: (out): Location for the default keyring name to be returned.
+  *
+  * Get the default keyring name.
+  *
+@@ -802,9 +806,10 @@
+ }
+ 
+ /**
+- * gnome_keyring_list_keyring_names:
++ * gnome_keyring_list_keyring_names: (skip)
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get a list of keyring names.
+@@ -815,7 +820,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_list_keyring_names_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_list_keyring_names (GnomeKeyringOperationGetListCallback    callback,
+@@ -832,7 +838,7 @@
+ 
+ /**
+  * gnome_keyring_list_keyring_names_sync:
+- * @keyrings: Location for a %GList of keyring names to be returned.
++ * @keyrings: (out) (element-type utf8): Location for a %GList of keyring names to be returned.
+  *
+  * Get a list of keyring names.
+  *
+@@ -877,9 +883,10 @@
+ }
+ 
+ /**
+- * gnome_keyring_lock_all:
++ * gnome_keyring_lock_all: (skip)
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Lock all the keyrings, so that their contents may not be accessed without
+@@ -887,7 +894,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_lock_all_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_lock_all (GnomeKeyringOperationDoneCallback       callback,
+@@ -1076,11 +1084,13 @@
+ }
+ 
+ /**
+- * gnome_keyring_create:
++ * gnome_keyring_create: (skip)
+  * @keyring_name: The new keyring name. Must not be %NULL.
+- * @password: The password for the new keyring. If %NULL user will be prompted.
++ * @password: (allow-none): The password for the new keyring. If %NULL user
++ *            will be prompted.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Create a new keyring with the specified name. In most cases %NULL will be
+@@ -1089,7 +1099,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_create_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_create (const char                                  *keyring_name,
+@@ -1109,7 +1120,8 @@
+ /**
+  * gnome_keyring_create_sync:
+  * @keyring_name: The new keyring name. Must not be %NULL
+- * @password: The password for the new keyring. If %NULL user will be prompted.
++ * @password: (allow-none): The password for the new keyring. If %NULL user
++ *            will be prompted.
+  *
+  * Create a new keyring with the specified name. In most cases %NULL will be
+  * passed in as the @password, which will prompt the user to enter a password
+@@ -1287,11 +1299,14 @@
+ }
+ 
+ /**
+- * gnome_keyring_unlock:
+- * @keyring: The name of the keyring to unlock, or %NULL for the default keyring.
+- * @password: The password to unlock the keyring with, or %NULL to prompt the user.
++ * gnome_keyring_unlock: (skip)
++ * @keyring: (allow-none): The name of the keyring to unlock, or %NULL for the
++ *           default keyring.
++ * @password: (allow-none): The password to unlock the keyring with, or %NULL
++ *            to prompt the user.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Unlock a @keyring, so that its contents may be accessed. In most cases %NULL
+@@ -1303,7 +1318,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_unlock_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_unlock (const char                                  *keyring,
+@@ -1322,8 +1338,10 @@
+ 
+ /**
+  * gnome_keyring_unlock_sync:
+- * @keyring: The name of the keyring to unlock, or %NULL for the default keyring.
+- * @password: The password to unlock the keyring with, or %NULL to prompt the user.
++ * @keyring: (allow-none): The name of the keyring to unlock, or %NULL for the
++ *           default keyring.
++ * @password: (allow-none): The password to unlock the keyring with, or %NULL
++ *            to prompt the user.
+  *
+  * Unlock a @keyring, so that its contents may be accessed. In most cases %NULL
+  * will be passed in as the @password, which will prompt the user to enter the
+@@ -1358,10 +1376,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_lock:
+- * @keyring: The name of the keyring to lock, or %NULL for the default keyring.
++ * gnome_keyring_lock: (skip)
++ * @keyring: (allow-none): The name of the keyring to lock, or %NULL for the
++ *           default keyring.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Lock a @keyring, so that its contents may not be accessed without first
+@@ -1372,7 +1392,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_lock_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_lock (const char                                  *keyring,
+@@ -1390,7 +1411,8 @@
+ 
+ /**
+  * gnome_keyring_lock_sync:
+- * @keyring: The name of the keyring to lock, or %NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring to lock, or %NULL for the
++ *           default keyring.
+  *
+  * Lock a @keyring, so that its contents may not be accessed without first
+  * supplying a password.
+@@ -1437,10 +1459,11 @@
+ }
+ 
+ /**
+- * gnome_keyring_delete:
++ * gnome_keyring_delete: (skip)
+  * @keyring: The name of the keyring to delete. Cannot be %NULL.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Delete @keyring. Once a keyring is deleted there is no mechanism for
+@@ -1448,7 +1471,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_delete_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_delete (const char                                  *keyring,
+@@ -1618,12 +1642,15 @@
+ }
+ 
+ /**
+- * gnome_keyring_change_password:
++ * gnome_keyring_change_password: (skip)
+  * @keyring: The name of the keyring to change the password for. Cannot be %NULL.
+- * @original: The old keyring password, or %NULL to prompt the user for it.
+- * @password: The new keyring password, or %NULL to prompt the user for it.
++ * @original: (allow-none): The old keyring password, or %NULL to prompt the
++ *            user for it.
++ * @password: (allow-none): The new keyring password, or %NULL to prompt the
++ *            user for it.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Change the password for a @keyring. In most cases you would specify %NULL for
+@@ -1632,7 +1659,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_change_password_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_change_password (const char                                  *keyring,
+@@ -1654,8 +1682,10 @@
+ /**
+  * gnome_keyring_change_password_sync:
+  * @keyring: The name of the keyring to change the password for. Cannot be %NULL
+- * @original: The old keyring password, or %NULL to prompt the user for it.
+- * @password: The new keyring password, or %NULL to prompt the user for it.
++ * @original: (allow-none): The old keyring password, or %NULL to prompt the
++ *            user for it.
++ * @password: (allow-none): The new keyring password, or %NULL to prompt the
++ *            user for it.
+  *
+  * Change the password for @keyring. In most cases you would specify %NULL for
+  * both the @original and @password arguments and allow the user to type the
+@@ -1761,10 +1791,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_get_info:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
++ * gnome_keyring_get_info: (skip)
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get information about the @keyring. The resulting #GnomeKeyringInfo structure
+@@ -1772,7 +1804,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_get_info_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_get_info (const char                                  *keyring,
+@@ -1790,8 +1823,9 @@
+ 
+ /**
+  * gnome_keyring_get_info_sync:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
+- * @info: Location for the information about the keyring to be returned.
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
++ * @info: (out): Location for the information about the keyring to be returned.
+  *
+  * Get information about @keyring.
+  *
+@@ -1844,11 +1878,13 @@
+ }
+ 
+ /**
+- * gnome_keyring_set_info:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
++ * gnome_keyring_set_info: (skip)
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
+  * @info: A structure containing flags and info for the keyring.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Set flags and info for the @keyring. The only fields in @info that are used
+@@ -1856,7 +1892,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_set_info_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_set_info (const char                                  *keyring,
+@@ -1875,7 +1912,8 @@
+ 
+ /**
+  * gnome_keyring_set_info_sync:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
+  * @info: A structure containing flags and info for the keyring.
+  *
+  * Set flags and info for @keyring. The only fields in @info that are used
+@@ -1982,10 +2020,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_list_item_ids:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
++ * gnome_keyring_list_item_ids: (skip)
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get a list of all the ids for items in @keyring. These are passed in a %GList
+@@ -1998,7 +2038,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_list_item_ids_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_list_item_ids (const char                                  *keyring,
+@@ -2016,8 +2057,10 @@
+ 
+ /**
+  * gnome_keyring_list_item_ids_sync:
+- * @keyring: The name of the keyring, or %NULL for the default keyring.
+- * @ids: The location to store a %GList of item ids (ie: unsigned integers).
++ * @keyring: (allow-none): The name of the keyring, or %NULL for the default
++ *           keyring.
++ * @ids: (out) (element-type guint): The location to store a %GList of item ids
++ *       (ie: unsigned integers).
+  *
+  * Get a list of all the ids for items in @keyring.
+  *
+@@ -2429,11 +2472,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_find_items:
++ * gnome_keyring_find_items: (skip)
+  * @type: The type of items to find.
+  * @attributes: A list of attributes to search for. This cannot be an empty list.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Searches through all keyrings for items that match the @attributes. The matches
+@@ -2447,7 +2491,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_find_items_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_find_items  (GnomeKeyringItemType                  type,
+@@ -2497,12 +2542,13 @@
+ }
+ 
+ /**
+- * gnome_keyring_find_itemsv:
++ * gnome_keyring_find_itemsv: (skip)
+  * @type: The type of items to find.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+- * @...: Attribute name, followed by the attribute type, and string or 32-bit unsigned int value. Terminated with NULL.
++ * @...: Attribute name, followed by the attribute type, and string or 32-bit unsigned int value. Terminated with %NULL.
+  *
+  * Searches through all keyrings for items that match the specified attributes.
+  * The matches are for exact equality.
+@@ -2521,7 +2567,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_find_itemsv_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_find_itemsv (GnomeKeyringItemType                  type,
+@@ -2549,7 +2596,8 @@
+  * gnome_keyring_find_items_sync:
+  * @type: The type of items to find.
+  * @attributes: A list of attributes to search for. This cannot be an empty list.
+- * @found: The location to return a list of #GnomeKeyringFound pointers.
++ * @found: (out) (element-type GnomeKeyringFound): The location to return a
++ *         list of #GnomeKeyringFound pointers.
+  *
+  * Searches through all keyrings for items that match the @attributes and @type.
+  * The matches are for exact equality.
+@@ -2580,10 +2628,11 @@
+ }
+ 
+ /**
+- * gnome_keyring_find_itemsv_sync:
++ * gnome_keyring_find_itemsv_sync: (skip)
+  * @type: The type of items to find.
+- * @found: The location to return a list of #GnomeKeyringFound pointers.
+- * @...: Attribute name, followed by the attribute type, and string or 32-bit unsigned int value. Terminated with NULL.
++ * @found: (out) (element-type GnomeKeyringFound): The location to return a
++ *         list of #GnomeKeyringFound pointers.
++ * @...: Attribute name, followed by the attribute type, and string or 32-bit unsigned int value. Terminated with %NULL.
+  *
+  * Searches through all keyrings for items that match the @attributes and @type.
+  * The matches are for exact equality.
+@@ -2592,7 +2641,7 @@
+  * terminated string, followed by b) The attribute type, either
+  * %GNOME_KEYRING_ATTRIBUTE_TYPE_STRING or %GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
+  * and then the c) attribute value, either a character string, or 32-bit
+- * unsigned int. The list should be terminated with a NULL.
++ * unsigned int. The list should be terminated with a %NULL.
+  *
+  * A %GList of GnomeKeyringFound structures is returned in @found. The list may
+  * have zero items if nothing matched the criteria. The list should be freed
+@@ -2984,8 +3033,9 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_create:
+- * @keyring: The name of the keyring in which to create the item, or NULL for the default keyring.
++ * gnome_keyring_item_create: (skip)
++ * @keyring: (allow-none): The name of the keyring in which to create the item,
++ *           or %NULL for the default keyring.
+  * @type: The item type.
+  * @display_name: The name of the item. This will be displayed to the user where necessary.
+  * @attributes: A (possibly empty) list of attributes to store with the item.
+@@ -2993,7 +3043,8 @@
+  * @update_if_exists: If true, then another item matching the type, and attributes
+  *  will be updated instead of creating a new item.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Create a new item in a keyring.
+@@ -3013,7 +3064,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_item_create_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_create (const char                          *keyring,
+@@ -3037,14 +3089,15 @@
+ 
+ /**
+  * gnome_keyring_item_create_sync:
+- * @keyring: The name of the keyring in which to create the item, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which to create the item,
++ *           or %NULL for the default keyring.
+  * @type: The item type.
+  * @display_name: The name of the item. This will be displayed to the user where necessary.
+  * @attributes: A (possibly empty) list of attributes to store with the item.
+  * @secret: The password or secret of the item.
+  * @update_if_exists: If true, then another item matching the type, and attributes
+  *  will be updated instead of creating a new item.
+- * @item_id: return location for the id of the created/updated keyring item.
++ * @item_id: (out): return location for the id of the created/updated keyring item.
+  *
+  * Create a new item in a keyring.
+  *
+@@ -3101,11 +3154,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_delete:
+- * @keyring: The name of the keyring from which to delete the item, or NULL for the default keyring.
++ * gnome_keyring_item_delete: (skip)
++ * @keyring: (allow-none): The name of the keyring from which to delete the
++ *           item, or %NULL for the default keyring.
+  * @id: The id of the item
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Delete an item in a keyring.
+@@ -3115,7 +3169,8 @@
+  *
+  * For an asynchronous version of this function see gnome_keyring_delete().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_delete (const char                                 *keyring,
+@@ -3134,7 +3189,8 @@
+ 
+ /**
+  * gnome_keyring_item_delete_sync:
+- * @keyring: The name of the keyring from which to delete the item, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring from which to delete the
++ *           item, or %NULL for the default keyring.
+  * @id: The id of the item
+  *
+  * Delete an item in a keyring.
+@@ -3160,11 +3216,12 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_get_info:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_get_info: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get information about an item and its secret.
+@@ -3177,7 +3234,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_item_get_info_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_get_info (const char                                 *keyring,
+@@ -3194,9 +3252,10 @@
+ 
+ /**
+  * gnome_keyring_item_get_info_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+- * @info: The location to return a #GnomeKeyringItemInfo pointer.
++ * @info: (out): The location to return a #GnomeKeyringItemInfo pointer.
+  *
+  * Get information about an item and its secret.
+  *
+@@ -3398,12 +3457,14 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_get_info_full:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_get_info_full: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @flags: The parts of the item to retrieve.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get information about an item, optionally retrieving its secret.
+@@ -3413,12 +3474,13 @@
+  * the item with its secret.
+  *
+  * A #GnomeKeyringItemInfo pointer will be passed to the @callback. Certain fields
+- * of this structure may be NULL or zero if they were not specified in @flags. This
++ * of this structure may be %NULL or zero if they were not specified in @flags. This
+  * structure will be freed after @callback returns.
+  *
+  * For a synchronous version of this function see gnome_keyring_item_get_info_full_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_get_info_full (const char                                 *keyring,
+@@ -3438,10 +3500,11 @@
+ 
+ /**
+  * gnome_keyring_item_get_info_full_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @flags: The parts of the item to retrieve.
+- * @info: The location to return a #GnomeKeyringItemInfo pointer.
++ * @info: (out): The location to return a #GnomeKeyringItemInfo pointer.
+  *
+  * Get information about an item, optionally retrieving its secret.
+  *
+@@ -3450,7 +3513,7 @@
+  * the item with its secret.
+  *
+  * A #GnomeKeyringItemInfo structure will be returned in @info. Certain fields
+- * of this structure may be NULL or zero if they were not specified in @flags.
++ * of this structure may be %NULL or zero if they were not specified in @flags.
+  * This must be freed using gnome_keyring_item_info_free().
+  *
+  * For an asynchronous version of this function see gnome_keyring_item_get_info_full().
+@@ -3604,12 +3667,14 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_set_info:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_set_info: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @info: The item info to save into the item.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Set information on an item, like its display name, secret etc...
+@@ -3619,7 +3684,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_item_set_info_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_set_info (const char                                 *keyring,
+@@ -3639,7 +3705,8 @@
+ 
+ /**
+  * gnome_keyring_item_set_info_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @info: The item info to save into the item.
+  *
+@@ -3719,11 +3786,13 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_get_attributes:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_get_attributes: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Get all the attributes for an item.
+@@ -3733,7 +3802,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_item_get_attributes_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_get_attributes (const char                                 *keyring,
+@@ -3750,9 +3820,12 @@
+ 	return gkr_operation_pending_and_unref (op);
+ }
+ 
++/*FIXME: @attributes is (out), but GI scanner crashes on this */
++
+ /**
+  * gnome_keyring_item_get_attributes_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @attributes: The location to return a pointer to the attribute list.
+  *
+@@ -3825,12 +3898,14 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_set_attributes:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_set_attributes: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @attributes: The full list of attributes to set on the item.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+  * Set all the attributes for an item. This will replace any previous attributes
+@@ -3838,7 +3913,8 @@
+  *
+  * For a synchronous version of this function see gnome_keyring_item_set_attributes_sync().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_item_set_attributes (const char                                 *keyring,
+@@ -3858,7 +3934,8 @@
+ 
+ /**
+  * gnome_keyring_item_set_attributes_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @attributes: The full list of attributes to set on the item.
+  *
+@@ -3891,14 +3968,17 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_get_acl:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_get_acl: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  *
+  * Deprecated: Never returns any ACL values.
+  */
+@@ -3922,9 +4002,11 @@
+ 
+ /**
+  * gnome_keyring_item_get_acl_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+- * @acl: The location to return a pointer to the access control list.
++ * @acl: (out) (element-type GnomeKeyringAccessControl): The location to return
++ * a pointer to the access control list.
+  *
+  * Return value: Always %GNOME_KEYRING_RESULT_OK.
+  *
+@@ -3941,15 +4023,19 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_set_acl:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * gnome_keyring_item_set_acl: (skip)
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+- * @acl: The access control list to set on the item.
++ * @acl: (element-type GnomeKeyringAccessControl): The access control list to
++ *       set on the item.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  *
+  * Deprecated: This function no longer has any effect.
+  **/
+@@ -3972,9 +4058,11 @@
+ 
+ /**
+  * gnome_keyring_item_set_acl_sync:
+- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
++ * @keyring: (allow-none): The name of the keyring in which the item exists, or
++ *           %NULL for the default keyring.
+  * @id: The id of the item
+- * @acl: The access control list to set on the item.
++ * @acl: (element-type GnomeKeyringAccessControl): The access control list to
++ *       set on the item.
+  *
+  * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
+  * an error result otherwise.
+@@ -3990,17 +4078,19 @@
+ }
+ 
+ /**
+- * gnome_keyring_item_grant_access_rights:
+- * @keyring: The keyring name, or NULL for the default keyring.
++ * gnome_keyring_item_grant_access_rights: (skip)
++ * @keyring: (allow-none): The keyring name, or %NULL for the default keyring.
+  * @display_name: The display name for the application, as returned by g_get_application_name().
+  * @full_path: The full filepath to the application.
+  * @id: The id of the item to grant access to.
+  * @rights: The type of rights to grant.
+  * @callback: Callback which is called when the operation completes
+- * @data: Data to be passed to callback
++ * @data: (allow-none): Data to be passed to callback
+  * @destroy_data: Function to be called when data is no longer needed.
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
++ *
+  * Since: 2.20
+  *
+  * Deprecated: This function no longer has any effect.
+@@ -4026,7 +4116,7 @@
+ 
+ /**
+  * gnome_keyring_item_grant_access_rights_sync:
+- * @keyring: The keyring name, or NULL for the default keyring.
++ * @keyring: (allow-none): The keyring name, or %NULL for the default keyring.
+  * @display_name: The display name for the application, as returned by g_get_application_name().
+  * @full_path: The full filepath to the application.
+  * @id: The id of the item to grant access to.
+@@ -4065,7 +4155,7 @@
+ 
+ /**
+  * gnome_keyring_network_password_free:
+- * @data: A #GnomeKeyringNetworkPasswordData pointer.
++ * @data: (allow-none): A #GnomeKeyringNetworkPasswordData pointer.
+  *
+  * Free a network password data pointer. If %NULL is passed in,
+  * nothing happens.
+@@ -4090,7 +4180,8 @@
+ 
+ /**
+  * gnome_keyring_network_password_list_free:
+- * @list: A list of #GnomeKeyringNetworkPasswordData pointers.
++ * @list: (element-type GnomeKeyringNetworkPasswordData): A list of
++ *        #GnomeKeyringNetworkPasswordData pointers.
+  *
+  * Free a list of network password data.
+  **/
+@@ -4220,16 +4311,16 @@
+ }
+ 
+ /**
+- * gnome_keyring_find_network_password:
+- * @user: The user name or %NULL for any user.
+- * @domain: The domain name %NULL for any domain.
+- * @server: The server or %NULL for any server.
+- * @object: The remote object or %NULL for any object.
+- * @protocol: The network protorol or %NULL for any protocol.
+- * @authtype: The authentication type or %NULL for any type.
++ * gnome_keyring_find_network_password: (skip)
++ * @user: (allow-none): The user name or %NULL for any user.
++ * @domain: (allow-none): The domain name or %NULL for any domain.
++ * @server: (allow-none): The server or %NULL for any server.
++ * @object: (allow-none): The remote object or %NULL for any object.
++ * @protocol: (allow-none): The network protocol or %NULL for any protocol.
++ * @authtype: (allow-none): The authentication type or %NULL for any type.
+  * @port: The network port or zero for any port.
+  * @callback: Callback which is called when the operation completes
+- * @data: Data to be passed to callback
++ * @data: (allow-none): Data to be passed to callback
+  * @destroy_data: Function to be called when data is no longer needed.
+  *
+  * Find a previously stored network password. Searches all keyrings.
+@@ -4242,7 +4333,8 @@
+  *
+  * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_find_network_password      (const char                            *user,
+@@ -4267,14 +4359,15 @@
+ 
+ /**
+  * gnome_keyring_find_network_password_sync:
+- * @user: The user name or %NULL.
+- * @domain: The domain name %NULL.
+- * @server: The server or %NULL.
+- * @object: The remote object or %NULL.
+- * @protocol: The network protorol or %NULL.
+- * @authtype: The authentication type or %NULL.
++ * @user: (allow-none): The user name or %NULL.
++ * @domain: (allow-none): The domain name or %NULL.
++ * @server: (allow-none): The server or %NULL.
++ * @object: (allow-none): The remote object or %NULL.
++ * @protocol: (allow-none): The network protocol or %NULL.
++ * @authtype: (allow-none): The authentication type or %NULL.
+  * @port: The network port or zero.
+- * @results: A location to return a %GList of #GnomeKeyringNetworkPasswordData pointers.
++ * @results: (out) (element-type GnomeKeyringNetworkPasswordData): A location
++ *           to return a %GList of #GnomeKeyringNetworkPasswordData pointers.
+  *
+  * Find a previously stored network password. Searches all keyrings.
+  *
+@@ -4367,18 +4460,19 @@
+ }
+ 
+ /**
+- * gnome_keyring_set_network_password:
+- * @keyring: The keyring to store the password in, or %NULL for the default keyring.
+- * @user: The user name or %NULL.
+- * @domain: The domain name %NULL.
+- * @server: The server or %NULL.
+- * @object: The remote object or %NULL.
+- * @protocol: The network protorol or %NULL.
+- * @authtype: The authentication type or %NULL.
++ * gnome_keyring_set_network_password: (skip)
++ * @keyring: (allow-none): The keyring to store the password in, or %NULL for
++ *           the default keyring.
++ * @user: (allow-none): The user name or %NULL.
++ * @domain: (allow-none): The domain name or %NULL.
++ * @server: (allow-none): The server or %NULL.
++ * @object: (allow-none): The remote object or %NULL.
++ * @protocol: (allow-none): The network protocol or %NULL.
++ * @authtype: (allow-none): The authentication type or %NULL.
+  * @port: The network port or zero.
+  * @password: The password to store, must not be %NULL.
+  * @callback: Callback which is called when the operation completes
+- * @data: Data to be passed to callback
++ * @data: (allow-none): Data to be passed to callback
+  * @destroy_data: Function to be called when data is no longer needed.
+  *
+  * Store a network password.
+@@ -4391,7 +4485,8 @@
+  *
+  * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
+  **/
+ gpointer
+ gnome_keyring_set_network_password      (const char                            *keyring,
+@@ -4418,16 +4513,17 @@
+ 
+ /**
+  * gnome_keyring_set_network_password_sync:
+- * @keyring: The keyring to store the password in, or %NULL for the default keyring.
+- * @user: The user name or %NULL.
+- * @domain: The domain name %NULL.
+- * @server: The server or %NULL.
+- * @object: The remote object or %NULL.
+- * @protocol: The network protorol or %NULL.
+- * @authtype: The authentication type or %NULL.
++ * @keyring: (allow-none): The keyring to store the password in, or %NULL for
++ *           the default keyring.
++ * @user: (allow-none): The user name or %NULL.
++ * @domain: (allow-none): The domain name or %NULL.
++ * @server: (allow-none): The server or %NULL.
++ * @object: (allow-none): The remote object or %NULL.
++ * @protocol: (allow-none): The network protocol or %NULL.
++ * @authtype: (allow-none): The authentication type or %NULL.
+  * @port: The network port or zero.
+  * @password: The password to store, must not be %NULL.
+- * @item_id: A location to store the resulting item's id.
++ * @item_id: (out): A location to store the resulting item's id.
+  *
+  * Store a network password.
+  *
+@@ -4625,14 +4721,16 @@
+ }
+ 
+ /**
+- * gnome_keyring_store_password:
++ * gnome_keyring_store_password: (skip)
+  * @schema: The password schema.
+- * @keyring: The keyring to store the password in. Specify %NULL for the default keyring.
+- *           Use %GNOME_KEYRING_SESSION to store the password in memory only.
++ * @keyring: (allow-none): The keyring to store the password in. Specify %NULL
++ *           for the default keyring. Use %GNOME_KEYRING_SESSION to store the
++ *           password in memory only.
+  * @display_name: A human readable description of what the password is for.
+  * @password: The password to store.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+  *       terminated string, followed by b) attribute value, either a character string,
+@@ -4649,7 +4747,9 @@
+  *
+  * Another more complex way to create a keyring item is using gnome_keyring_item_create().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
++ *
+  * Since: 2.22
+  **/
+ gpointer
+@@ -4678,10 +4778,11 @@
+ }
+ 
+ /**
+- * gnome_keyring_store_password_sync:
++ * gnome_keyring_store_password_sync: (skip)
+  * @schema: The password schema.
+- * @keyring: The keyring to store the password in. Specify %NULL for the default keyring.
+- *           Use %GNOME_KEYRING_SESSION to store the password in memory only.
++ * @keyring: (allow-none): The keyring to store the password in. Specify %NULL
++ *           for the default keyring. Use %GNOME_KEYRING_SESSION to store the
++ *           password in memory only.
+  * @display_name: A human readable description of what the password is for.
+  * @password: The password to store.
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+@@ -4705,6 +4806,7 @@
+  *
+  * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
+  * an error result otherwise.
++ *
+  * Since: 2.22
+  **/
+ GnomeKeyringResult
+@@ -4934,10 +5036,11 @@
+ }
+ 
+ /**
+- * gnome_keyring_find_password:
++ * gnome_keyring_find_password: (skip)
+  * @schema: The password schema.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+  *       terminated string, followed by b) attribute value, either a character string,
+@@ -4955,7 +5058,9 @@
+  * Another more complex way to find items in the keyrings is using
+  * gnome_keyring_find_items().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
++ *
+  * Since: 2.22
+  **/
+ gpointer
+@@ -4990,10 +5095,10 @@
+  */
+ 
+ /**
+- * gnome_keyring_find_password_sync:
++ * gnome_keyring_find_password_sync: (skip)
+  * @schema: The password schema.
+- * @password: An address to store password that was found. The password must
+- *            be freed with gnome_keyring_free_password().
++ * @password: (out): An address to store password that was found. The password
++ *            must be freed with gnome_keyring_free_password().
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+  *       terminated string, followed by b) attribute value, either a character string,
+  *       or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
+@@ -5012,6 +5117,7 @@
+  *
+  * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
+  * an error result otherwise.
++ *
+  * Since: 2.22
+  **/
+ GnomeKeyringResult
+@@ -5075,10 +5181,11 @@
+ }
+ 
+ /**
+- * gnome_keyring_delete_password:
++ * gnome_keyring_delete_password: (skip)
+  * @schema: The password schema.
+  * @callback: A callback which will be called when the request completes or fails.
+- * @data: A pointer to arbitrary data that will be passed to the @callback.
++ * @data: (allow-none): A pointer to arbitrary data that will be passed to the
++ *        @callback.
+  * @destroy_data: A function to free @data when it's no longer needed.
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+  *       terminated string, followed by b) attribute value, either a character string,
+@@ -5093,7 +5200,9 @@
+  * Another more complex way to find items in the keyrings is using
+  * gnome_keyring_item_delete().
+  *
+- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
++ * Return value: (transfer none): The asynchronous request, which can be passed
++ * to gnome_keyring_cancel_request().
++ *
+  * Since: 2.22
+  **/
+ gpointer
+@@ -5117,7 +5226,7 @@
+ }
+ 
+ /**
+- * gnome_keyring_delete_password_sync:
++ * gnome_keyring_delete_password_sync: (skip)
+  * @schema: The password schema.
+  * @...: The variable argument list should contain pairs of a) The attribute name as a null
+  *       terminated string, followed by b) attribute value, either a character string,
+@@ -5137,6 +5246,7 @@
+  *
+  * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
+  * an error result otherwise.
++ *
+  * Since: 2.22
+  **/
+ GnomeKeyringResult
+Index: libgnome-keyring/library/gnome-keyring.h
+===================================================================
+--- libgnome-keyring.orig/library/gnome-keyring.h	2011-09-05 07:16:09.000000000 +0200
++++ libgnome-keyring/library/gnome-keyring.h	2012-01-18 10:20:19.565789285 +0100
+@@ -25,6 +25,7 @@
+ #define GNOME_KEYRING_H
+ 
+ #include <glib.h>
++#include <glib-object.h>
+ #include <time.h>
+ 
+ #include "gnome-keyring-result.h"
+@@ -111,24 +112,37 @@
+                                                              GnomeKeyringAttributeList *attributes,
+                                                              gpointer             data);
+ 
++GType                      gnome_keyring_attribute_get_type           (void) G_GNUC_CONST;
++const gchar*               gnome_keyring_attribute_get_string         (GnomeKeyringAttribute *attribute);
++guint32                    gnome_keyring_attribute_get_uint32         (GnomeKeyringAttribute *attribute);
++
++#define GNOME_KEYRING_TYPE_ATTRIBUTE (gnome_keyring_attribute_get_type ())
++
+ #define gnome_keyring_attribute_list_index(a, i) g_array_index ((a), GnomeKeyringAttribute, (i))
+-#define gnome_keyring_attribute_list_new() (g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute)))
+ void                       gnome_keyring_attribute_list_append_string (GnomeKeyringAttributeList *attributes,
+                                                                        const char                *name,
+                                                                        const char                *value);
+ void                       gnome_keyring_attribute_list_append_uint32 (GnomeKeyringAttributeList *attributes,
+                                                                        const char                *name,
+                                                                        guint32                    value);
++GnomeKeyringAttributeList *gnome_keyring_attribute_list_new           (void);
+ void                       gnome_keyring_attribute_list_free          (GnomeKeyringAttributeList *attributes);
+ GnomeKeyringAttributeList *gnome_keyring_attribute_list_copy          (GnomeKeyringAttributeList *attributes);
++GType                      gnome_keyring_attribute_list_get_type      (void) G_GNUC_CONST;
++GList                     *gnome_keyring_attribute_list_to_glist      (GnomeKeyringAttributeList *attributes);
+ 
++#define GNOME_KEYRING_TYPE_ATTRIBUTE_LIST (gnome_keyring_attribute_list_get_type ())
+ 
+ const gchar*               gnome_keyring_result_to_message            (GnomeKeyringResult res);
+ 
+ gboolean gnome_keyring_is_available (void);
+ 
+-void gnome_keyring_found_free (GnomeKeyringFound *found);
+-void gnome_keyring_found_list_free (GList *found_list);
++void gnome_keyring_found_free               (GnomeKeyringFound *found);
++void gnome_keyring_found_list_free          (GList *found_list);
++GnomeKeyringFound* gnome_keyring_found_copy (GnomeKeyringFound *found);
++GType gnome_keyring_found_get_type          (void) G_GNUC_CONST;
++
++#define GNOME_KEYRING_TYPE_FOUND (gnome_keyring_found_get_type ())
+ 
+ void gnome_keyring_cancel_request (gpointer request);
+ 
+@@ -207,6 +221,7 @@
+ 
+ void              gnome_keyring_info_free             (GnomeKeyringInfo *keyring_info);
+ GnomeKeyringInfo *gnome_keyring_info_copy             (GnomeKeyringInfo *keyring_info);
++GType             gnome_keyring_info_get_type         (void) G_GNUC_CONST;
+ void              gnome_keyring_info_set_lock_on_idle (GnomeKeyringInfo *keyring_info,
+                                                        gboolean          value);
+ gboolean          gnome_keyring_info_get_lock_on_idle (GnomeKeyringInfo *keyring_info);
+@@ -217,6 +232,8 @@
+ time_t            gnome_keyring_info_get_ctime        (GnomeKeyringInfo *keyring_info);
+ gboolean          gnome_keyring_info_get_is_locked    (GnomeKeyringInfo *keyring_info);
+ 
++#define GNOME_KEYRING_TYPE_INFO (gnome_keyring_info_get_type ())
++
+ gpointer gnome_keyring_find_items  (GnomeKeyringItemType                  type,
+                                     GnomeKeyringAttributeList            *attributes,
+                                     GnomeKeyringOperationGetListCallback  callback,
+@@ -306,6 +323,7 @@
+ void                  gnome_keyring_item_info_free             (GnomeKeyringItemInfo *item_info);
+ GnomeKeyringItemInfo *gnome_keyring_item_info_new              (void);
+ GnomeKeyringItemInfo *gnome_keyring_item_info_copy             (GnomeKeyringItemInfo *item_info);
++GType                 gnome_keyring_item_info_get_gtype        (void) G_GNUC_CONST;
+ GnomeKeyringItemType  gnome_keyring_item_info_get_type         (GnomeKeyringItemInfo *item_info);
+ void                  gnome_keyring_item_info_set_type         (GnomeKeyringItemInfo *item_info,
+                                                                 GnomeKeyringItemType  type);
+@@ -318,6 +336,8 @@
+ time_t                gnome_keyring_item_info_get_mtime        (GnomeKeyringItemInfo *item_info);
+ time_t                gnome_keyring_item_info_get_ctime        (GnomeKeyringItemInfo *item_info);
+ 
++#define GNOME_KEYRING_TYPE_ITEM_INFO (gnome_keyring_item_info_get_gtype ())
++
+ /* ------------------------------------------------------------------------------
+  * A Simpler API
+  */
+@@ -480,13 +500,18 @@
+ GnomeKeyringApplicationRef * gnome_keyring_application_ref_new          (void);
+ GnomeKeyringApplicationRef * gnome_keyring_application_ref_copy         (const GnomeKeyringApplicationRef *app);
+ void                         gnome_keyring_application_ref_free         (GnomeKeyringApplicationRef       *app);
++GType                        gnome_keyring_application_ref_get_type     (void) G_GNUC_CONST;
++
++#define GNOME_KEYRING_TYPE_APPLICATION_REF (gnome_keyring_application_ref_get_type ())
+ 
+ GnomeKeyringAccessControl *  gnome_keyring_access_control_new  (const GnomeKeyringApplicationRef *application,
+                                                                 GnomeKeyringAccessType            types_allowed);
+ GnomeKeyringAccessControl *  gnome_keyring_access_control_copy (GnomeKeyringAccessControl        *ac);
++GType                        gnome_keyring_access_control_get_type (void) G_GNUC_CONST;
++void                         gnome_keyring_access_control_free (GnomeKeyringAccessControl *ac);
+ 
++#define GNOME_KEYRING_TYPE_ACCESS_CONTROL (gnome_keyring_access_control_get_type ())
+ 
+-void    gnome_keyring_access_control_free (GnomeKeyringAccessControl *ac);
+ GList * gnome_keyring_acl_copy            (GList                     *list);
+ void    gnome_keyring_acl_free            (GList                     *acl);
+ 
+Index: libgnome-keyring/library/tests/Makefile.am
+===================================================================
+--- libgnome-keyring.orig/library/tests/Makefile.am	2011-10-20 17:00:14.000000000 +0200
++++ libgnome-keyring/library/tests/Makefile.am	2012-01-18 10:20:19.565789285 +0100
+@@ -22,6 +22,9 @@
+ 	frob-unlock-keyring \
+ 	frob-list-modified
+ 
++EXTRA_DIST = \
++	test-gi.py
++
+ test: $(TEST_PROGS)
+ 	gtester -k --verbose $(TEST_PROGS)
+ 
+Index: libgnome-keyring/library/tests/test-gi.py
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ libgnome-keyring/library/tests/test-gi.py	2012-01-18 10:20:19.565789285 +0100
+@@ -0,0 +1,155 @@
++#!/usr/bin/python3
++#
++# Test GnomeKeyring GI binding
++# Copyright (C) 2012 Martin Pitt <martin.pitt at ubuntu.com>
++#
++# The Gnome Keyring Library  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 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.
++
++import sys
++import os
++import unittest
++
++# use source tree typelib
++os.environ['GI_TYPELIB_PATH'] = 'library:' + os.environ.get('GI_TYPELIB_PATH', '')
++
++from gi.repository import GLib
++from gi.repository import GnomeKeyring
++
++# name of test keyring
++TEST_KEYRING = '__gnomekeyring_test'
++TEST_PWD = 'secret'
++
++class KeyringTest(unittest.TestCase):
++    def tearDown(self):
++        '''Ensure that we do no leave test keyring behind.'''
++
++        GnomeKeyring.delete_sync(TEST_KEYRING)
++
++    def test_info_default(self):
++        '''get_info_sync() for default keyring'''
++
++        # we cannot assume too much about the default keyring; it might be
++        # locked or not, and we should avoid poking in it too much
++        (result, info) = GnomeKeyring.get_info_sync(None)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++        self.assertTrue(info.get_is_locked() in (False, True))
++
++    def test_info_unknown(self):
++        '''get_info_sync() for unknown keyring'''
++
++        (result, info) = GnomeKeyring.get_info_sync(TEST_KEYRING + '_nonexisting')
++        self.assertEqual(result, GnomeKeyring.Result.NO_SUCH_KEYRING)
++
++    def test_create_lock(self):
++        '''create_sync() and locking/unlocking'''
++
++        # create
++        self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
++                GnomeKeyring.Result.OK)
++        (result, info) = GnomeKeyring.get_info_sync(TEST_KEYRING)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++        self.assertFalse(info.get_is_locked())
++
++        # try to create already existing ring
++        self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
++                GnomeKeyring.Result.KEYRING_ALREADY_EXISTS)
++
++        # lock
++        self.assertEqual(GnomeKeyring.lock_sync(TEST_KEYRING),
++                GnomeKeyring.Result.OK)
++        self.assertTrue(GnomeKeyring.get_info_sync(TEST_KEYRING)[1].get_is_locked())
++
++        # unlock with wrong password
++        self.assertEqual(GnomeKeyring.unlock_sync(TEST_KEYRING, 'h4ck'),
++                GnomeKeyring.Result.IO_ERROR)
++
++        # unlock with correct password
++        self.assertEqual(GnomeKeyring.unlock_sync(TEST_KEYRING, TEST_PWD),
++                GnomeKeyring.Result.OK)
++
++    def test_find_items(self):
++        '''find_items_sync()'''
++
++        search_attrs = GnomeKeyring.Attribute.list_new()
++
++        # no attributes, finds everything
++        (result, items) = GnomeKeyring.find_items_sync(
++                GnomeKeyring.ItemType.GENERIC_SECRET,
++                search_attrs)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++        print('(no attributes: %i matches) ' % len(items), end='', file=sys.stderr)
++        for item in items:
++            self.assertNotEqual(item.keyring, '')
++            for attr in GnomeKeyring.Attribute.list_to_glist(item.attributes):
++                self.assertTrue(attr.type in (GnomeKeyring.AttributeType.STRING,
++                            GnomeKeyring.AttributeType.UINT32))
++                self.assertEqual(type(attr.name), type(''))
++                self.assertGreater(len(attr.name), 0)
++
++                # check that we can get the value
++                if attr.type == GnomeKeyring.AttributeType.STRING:
++                    self.assertEqual(type(attr.get_string()), type(''))
++                else:
++                    self.assertTrue(isinstance(attr.get_uint32()), long)
++
++        # search for unknown attribute, should have no results
++        GnomeKeyring.Attribute.list_append_string(search_attrs, 'unknown!_attr', '')
++        (result, items) = GnomeKeyring.find_items_sync(
++                GnomeKeyring.ItemType.GENERIC_SECRET,
++                search_attrs)
++        self.assertEqual(result, GnomeKeyring.Result.NO_MATCH)
++        self.assertEqual(len(items), 0)
++
++    def test_item_create_info(self):
++        '''item_create_sync(),  item_get_info_sync(), list_item_ids_sync()'''
++
++        self.assertEqual(GnomeKeyring.create_sync(TEST_KEYRING, TEST_PWD),
++                GnomeKeyring.Result.OK)
++        self.assertEqual(GnomeKeyring.get_info_sync(TEST_KEYRING)[0], GnomeKeyring.Result.OK)
++
++        attrs = GnomeKeyring.Attribute.list_new()
++        GnomeKeyring.Attribute.list_append_string(attrs, 'context', 'testsuite')
++        GnomeKeyring.Attribute.list_append_uint32(attrs, 'answer', 42)
++
++        (result, id) = GnomeKeyring.item_create_sync(TEST_KEYRING,
++                GnomeKeyring.ItemType.GENERIC_SECRET, 'my_password', attrs,
++                'my_secret', False)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++
++        # now query for it
++        (result, info) = GnomeKeyring.item_get_info_sync(TEST_KEYRING, id)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++        self.assertEqual(info.get_display_name(), 'my_password')
++        self.assertEqual(info.get_secret(), 'my_secret')
++
++        # list_item_ids_sync()
++        (result, items) = GnomeKeyring.list_item_ids_sync(TEST_KEYRING)
++        self.assertEqual(result, GnomeKeyring.Result.OK)
++        self.assertEqual(items, [id])
++
++    def test_result_str(self):
++        '''result_to_message()'''
++
++        self.assertEqual(GnomeKeyring.result_to_message(GnomeKeyring.Result.OK),
++                '')
++        self.assertEqual(
++                type(GnomeKeyring.result_to_message(GnomeKeyring.Result.NO_SUCH_KEYRING)),
++                type(''))
++
++
++#
++# main
++#
++
++if not GnomeKeyring.is_available():
++    print('GNOME keyring not available', file=sys.stderr)
++    sys.exit(0)
++unittest.main()
+Index: libgnome-keyring/m4/introspection.m4
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ libgnome-keyring/m4/introspection.m4	2012-01-18 10:20:19.565789285 +0100
+@@ -0,0 +1,94 @@
++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
++    [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])
++])

Modified: desktop/unstable/libgnome-keyring/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/patches/series?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/patches/series [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/patches/series [utf-8] Wed Jan 18 09:42:38 2012
@@ -1,1 +1,2 @@
+00git_introspection.patch
 99_ltmain_as-needed.patch

Modified: desktop/unstable/libgnome-keyring/debian/rules
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnome-keyring/debian/rules?rev=32403&op=diff
==============================================================================
--- desktop/unstable/libgnome-keyring/debian/rules [utf-8] (original)
+++ desktop/unstable/libgnome-keyring/debian/rules [utf-8] Wed Jan 18 09:42:38 2012
@@ -1,6 +1,7 @@
 #!/usr/bin/make -f
 
 include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/autoreconf.mk
 include /usr/share/cdbs/1/class/gnome.mk
 include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk
 -include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk




More information about the pkg-gnome-commits mailing list